如何实现基于角色权限的Discord机器人Hello命令?
如何编写仅允许Admin/Moderator角色使用的Discord机器人Hello命令?
你给出的代码已经完美实现了这个需求!我来帮你拆解下关键逻辑,让你更清楚它的工作方式:
核心就是@commands.has_any_role("Admin", "Moderator")这个装饰器——它会自动校验调用命令的用户是否拥有指定的两个角色之一,只有符合条件的用户才能触发hello命令,不符合的话机器人会直接拒绝执行。
完整可运行代码如下:
from discord.ext import commands bot = commands.Bot('?') @bot.command(pass_context=True) @commands.has_any_role("Admin", "Moderator") async def hello(ctx): await bot.say("Hello {}".format(ctx.message.author.mention))
顺便提几个实用细节:
- 要确保角色名称和你服务器里的完全一致,包括大小写、空格,不然权限校验会失败
- 如果你的Discord.py版本是v1.0及以上,
pass_context=True可以省略,因为新版本默认会自动传递上下文对象 - 如果你之后需要基于具体权限(比如管理服务器权限)来限制命令,可以改用
@commands.has_permissions(administrator=True)这类装饰器,但用角色的方式完全适配你当前的需求
内容的提问来源于stack exchange,提问作者Demotry
相关产品推荐
相关产品推荐

