Je veux faire une commande où un administrateur peut changer le préfixe des commandes (par exemple: au lieu d'utiliser "." "Ils peuvent le changer à" - "et seulement" - "fonctionnera si elles le font) les autorisations pour ne faire que des admins pouvant utiliser la commande
J'ai regardé autour de moi, à travers les docs et les interwebs, mais je n'ai rien trouvé et je n'ai eu aucune idée sur la façon de faire ça
Vous devriez utiliser le command_prefix
argument pour discord.Bot
Ceci accepte soit une chaîne (signification d'un préfixe large de bot) ou d'un fichier appelable fonction qui renvoie un préfixe basé sur une condition) .
Votre état repose sur l'invoquant message
. Par conséquent, vous pouvez permettre aux guildes de définir leurs propres préfixes. Je vais utiliser un dict comme exemple simple:
...
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!")
Pour un excellent exemple d'utilisation, reportez-vous à - RAPPTZ (le créateur de Discord.py) 's propre - robodanny Bot, il a fait un repo public à des fins éducatives comme exemple. En spécifique, voir prefix_callable
fonction, c'est une version plus robuste de mon determine_prefix
Exemple.