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

如何将Discord机器人的!say命令设置为仅所有者可用?

让!say命令仅限机器人所有者使用的解决方案

没问题!要让你的!say命令只有你(机器人所有者)能调用,有两种简单的实现方式,根据你的需求选择即可:

方法一:用内置装饰器快速搞定

discord.py提供了专门的@commands.is_owner()装饰器,能自动验证调用命令的用户是否是机器人的注册所有者,这是最省心的方式。

修改后的代码如下:

from discord.ext import commands

@bot.command(pass_context=True)
@commands.is_owner()  # 就是这一行!加上就生效
async def say(ctx, *args):
    mesg = ' '.join(args)
    await bot.delete_message(ctx.message)
    await bot.say(mesg)

如果非所有者尝试用这个命令,机器人会自动返回权限不足的提示,不用你额外写判断逻辑。

方法二:手动指定允许的用户ID

如果你想给多个用户授权(比如你的管理员伙伴),可以手动检查调用者的ID是否在你的白名单里:

# 把这里换成你的用户ID,多个的话用逗号分隔,比如{123456, 987654}
ALLOWED_USER_IDS = {1234567890}

@bot.command(pass_context=True)
async def say(ctx, *args):
    # 先检查用户ID是否在允许列表里
    if ctx.message.author.id not in ALLOWED_USER_IDS:
        await bot.say("抱歉,你没有权限使用这个命令!")
        return
    # 原来的命令逻辑
    mesg = ' '.join(args)
    await bot.delete_message(ctx.message)
    await bot.say(mesg)

这种方式灵活性更高,你可以随时添加或移除允许的用户ID。

小提醒:如果你的discord.py版本比较旧(比如v0.16.x及更早),@commands.is_owner()可能需要配合await bot.is_owner(ctx.message.author)来做判断,或者直接用手动检查的方式更稳妥。

内容的提问来源于stack exchange,提问作者user9840885

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:04:50