Discord.py-使用命令更改前缀

时间:2019-06-27 18:39:57

标签: python python-3.x discord.py-rewrite

我想创建一个命令,管理员可以更改命令的前缀(例如:代替使用“。”,他们可以将其更改为“-”,并且只有“-”才能起作用)能够设置权限以使仅管理员能够使用命令

我已经通过文档和互联网进行了环顾,但没有发现任何东西,而且我对如何执行此操作一无所知

1 个答案:

答案 0 :(得分:2)

对于command_prefix,您应该使用discord.Bot参数,该参数接受字符串(表示一个机器人宽度前缀)或可调用的(表示返回的函数基于条件的前缀)。

您的情况取决于调用message。因此,您可以允许公会定义自己的前缀。我将以dict作为简单示例:

...

custom_prefixes = {}
#You'd need to have some sort of persistance here,
#possibly using the json module to save and load
#or a database
default_prefixes = ['.']

async def determine_prefix(bot, message):
    guild = message.guild
    #Only allow custom prefixs in guild
    if guild:
        return custom_prefixes.get(guild.id, default_prefixes)
    else:
        return default_prefixes

bot = commands.Bot(command_prefix = determine_prefix, ...)
bot.run()

@commands.command()
@commands.guild_only()
async def setprefix(self, ctx, *, prefixes=""):
    #You'd obviously need to do some error checking here
    #All I'm doing here is if prefixes is not passed then
    #set it to default 
    custom_prefixes[ctx.guild.id] = prefixes.split() or default_prefixes
    await ctx.send("Prefixes set!")

有关此用法的一个很好的例子,请参考Rapptz (discord.py的创建者)自己的RoboDanny机器人,他将其公开以教育为目的的回购为例。具体来说,请参见prefix_callable函数,它是我的determine_prefix示例的更强大的版本。