如何用Discord.py编写查询机器人服务器权限的命令?
用Discord.py实现「-getperms」权限查询命令
以下是实现该命令的完整代码及关键逻辑说明:
代码实现
import discord from discord.ext import commands # 配置机器人意图,必须开启消息内容意图才能读取命令 intents = discord.Intents.default() intents.message_content = True # 初始化机器人,命令前缀为「-」 bot = commands.Bot(command_prefix="-", intents=intents) @bot.command(name="getperms") async def get_permissions(ctx): # 获取机器人在当前服务器的成员对象 bot_member = ctx.guild.me # 定义需要检查的权限项(可按需增减) target_permissions = [ ("Manage Roles", bot_member.guild_permissions.manage_roles), ("Manage Messages", bot_member.guild_permissions.manage_messages), ("Manage Server", bot_member.guild_permissions.manage_guild), ("Kick Members", bot_member.guild_permissions.kick_members), ("Ban Members", bot_member.guild_permissions.ban_members), ("Send Messages", bot_member.guild_permissions.send_messages), ("Embed Links", bot_member.guild_permissions.embed_links) ] # 拼接权限状态消息 result_msg = "📋 当前服务器机器人权限状态:\n" for perm_name, has_perm in target_permissions: status = "✅" if has_perm else "❌" result_msg += f"{status} {perm_name}\n" await ctx.send(result_msg) # 替换为你的机器人Token并运行 bot.run("YOUR_BOT_TOKEN_HERE")
关键说明
ctx.guild.me:获取机器人在当前服务器的成员实例,通过guild_permissions属性可访问所有服务器级权限。guild_permissions的属性均为布尔值,比如manage_roles对应「管理角色」权限,完整权限列表可参考Discord.py的Permissions类定义。- 必须在Discord开发者门户的机器人设置中开启消息内容意图(Message Content Intent),否则机器人无法接收命令消息。
- 你可以自由修改
target_permissions列表,添加或移除需要展示的权限项。
内容的提问来源于stack exchange,提问作者PIB Deadshot
相关产品推荐
相关产品推荐

