Je suis en train d'obtenir une commande de rôle d'un utilisateur à exécuter:Obtenez un rôle avec discord.py
async def clear (ctx, n):
if "Mod" in [y.name.lower() for y in ctx.message.author.roles]:
//delete messages
else:
client.send_message(ctx.message.channel, "You are not allowed to use this command!")
Lorsqu'un utilisateur utilise !clear
, il peut effacer les messages, mais aussi obtenir l'erreur d'autorisation .
code:
@bot.command(pass_context=True)
async def clear(ctx, n):
if "mod" in [y.name.lower() for y in ctx.message.author.roles]:
n = int(n)
tn = n + 1
async for x in bot.logs_from(ctx.message.channel, limit=tn):
await bot.delete_messages(x)
await bot.send_message(ctx.message.channel, "Deleted" + str(n) + "messages")
elif not "mod" in [y.name.lower() for y in ctx.message.author.roles]:
await bot.send_message(ctx.message.channel, "You need the **Mod** role to use this command!")
Lorsqu'un utilisateur utilise !clear
, il peut effacer les messages, mais aussi obtenir l'erreur d'autorisation.
SOLUTION:
@bot.command(pass_context=True)
async def clear(ctx, n):
if "mod" in [y.name.lower() for y in ctx.message.author.roles]:
n = int(n)
msg = []
tn = n + 1
async for x in bot.logs_from(ctx.message.channel, limit=tn):
msg.append(x)
await bot.delete_messages(x)
await bot.send_message(ctx.message.channel, "Deleted" + str(n) + "messages")
elif not "mod" in [y.name.lower() for y in ctx.message.author.roles]:
await bot.send_message(ctx.message.channel, "You need the **Mod** role to use this command!")
Comment "Mod" avec une majuscule peut-il correspondre à 'name.lower()'? Je serais surpris si les messages de suppression * jamais * couru vraiment ... – squaswin
il arrive la même chose avec "mod" @squaswin – Francesco
Pouvez-vous s'il vous plaît modifier votre poste toute la fonction, cette question est un produit de code autre que ce vous avez envoyé. Si un utilisateur normal obtient le message d'erreur * et * peut supprimer les messages, cela signifie que l'appel à supprimer n'est pas réellement à l'intérieur que si le bloc ... – squaswin