2017-10-06 7 views
0

との役割を取得します私は、コマンドを実行するユーザの役割を取得しようとしている:通常のユーザーが!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!") 
+0

大文字の「Mod」は、どのように 'name.lower()'とも一致しますか?もしも削除メッセージ*これまでに実行したことが驚いているかもしれません... – squaswin

+0

"mod"と同じことが起こります@ suquaswin – Francesco

+0

あなたの投稿を編集してください。この問題は、あなたが送信されてきました。普通のユーザーがエラーメッセージ*を受け取って、メッセージを削除できるのであれば、そのブロック内の削除の呼び出しは実際にブロック内にあることを意味します... – squaswin

答えて

0

Modの役割を持つユーザーは、少なくとも@everyoneの役割を持っています。したがって、elseelif not "Mod" in [y.name.lower() for y in ctx.message.author.roles]:に変更する必要があります。

+0

これはelse文の単なる論理的な原因です... "mod"がそれらの名前ではなく、ifブロックがまったく動いていてはいけません。 – squaswin

+0

「mod」ロールでパーミッションエラーが発生する – Francesco

関連する問題