You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:45:46