Discord bot check if user is admin

帅比萌擦擦* 提交于 2019-12-01 12:11:08

Change

@client.command(name="whoami",description="who are you?")
async def whoami():

to

@client.command(pass_context=True)
async def whoami(ctx):

Then you can use ctx to get all kinds of stuff like the user that wrote it, the message contents and so on

To see if a User is an administrator do
if ctx.message.author.server_permissions.administrator: which should return True if the user is an an Administator

Your code should look like this:

import discord
import asyncio
from discord.ext.commands import Bot

client = Bot(description="My Cool Bot", command_prefix="!", pm_help = False, )
@client.event
async def on_ready():
  print("Bot is ready!")
  return await client.change_presence(game=discord.Game(name='My bot'))

@client.command(pass_context = True)
async def whoami(ctx):
    if ctx.message.author.server_permissions.administrator:
        msg = "You're an admin {0.author.mention}".format(ctx.message)  
        await client.send_message(ctx.message.channel, msg)
    else:
        msg = "You're an average joe {0.author.mention}".format(ctx.message)  
        await client.send_message(ctx.message.channel, msg)
client.run('Your_Bot_Token')

You can use the has_permissions check to see if a user has the administrator privilege.

We can then handle the error that failing that check will throw in order to send a failure message.

from discord.ext.commands import Bot, has_permissions, CheckFailure

client = Bot()

@client.command(pass_context=True)
@has_permissions(administrator=True)
async def whoami(ctx):
    msg = "You're an admin {}".format(ctx.message.author.mention)  
    await client.send_message(ctx.message.channel, msg)

@whoami.error
async def whoami_error(error, ctx):
    if isinstance(error, CheckFailure):
        msg = "You're an average joe {}".format(ctx.message.author.mention)  
        await client.send_message(ctx.message.channel, msg)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!