との役割を取得します私は、コマンドを実行するユーザの役割を取得しようとしている:通常のユーザーが!clear
を使用する場合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!")
、彼はメッセージをクリアするだけでなく、アクセス権のエラーを取得することができます。
コード:通常のユーザーが!clear
を使用する場合
@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!")
、彼はメッセージをクリアするだけでなく、アクセス権のエラーを取得することができます。
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!")
大文字の「Mod」は、どのように 'name.lower()'とも一致しますか?もしも削除メッセージ*これまでに実行したことが驚いているかもしれません... – squaswin
"mod"と同じことが起こります@ suquaswin – Francesco
あなたの投稿を編集してください。この問題は、あなたが送信されてきました。普通のユーザーがエラーメッセージ*を受け取って、メッセージを削除できるのであれば、そのブロック内の削除の呼び出しは実際にブロック内にあることを意味します... – squaswin