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

如何设置Discord机器人命令仅允许指定服务器ID调用

如何限制Discord机器人命令仅指定服务器可用?

当然可以!要让你的shittymeme命令只对特定服务器开放,只需要在命令逻辑里加个简单的服务器ID校验就行,我给你调整好代码:

首先,先定义允许使用该命令的服务器ID列表(服务器ID可以在Discord设置开启开发者模式后,右键服务器复制获取):

# 替换成你要授权的服务器ID,旧版discord.py中ID可以是字符串,新版建议用整数
ALLOWED_SERVERS = [123456789012345678, 987654321098765432]

然后修改你的命令逻辑,在执行核心功能前先做服务器校验:

@bot.command(pass_context=True)
async def shittymeme(ctx):
    # 检查当前服务器是否在授权列表内
    if ctx.guild.id not in ALLOWED_SERVERS:
        # 可选:给未授权服务器的用户发提示,不想提示就直接return
        await bot.say("抱歉,这个命令只能在指定服务器使用哦!")
        return
    
    # 保留原来的命令逻辑
    api = 'https://api.imgflip.com/get_memes'
    response = requests.get(api)
    url = random.choice(response.json()['data']['memes'])['url']
    await bot.say(
        embed=discord.Embed(color=0x0072ff, title="Here you go").set_image(url=url)
    )

小提示:

  • 如果你的discord.py是v1.0及以上版本,pass_context=True已经被弃用,不用再写这个参数,同时bot.say()要换成ctx.send(),但看你的代码应该是旧版本,保持原有写法就没问题。
  • 服务器ID一定要复制准确,不然会导致目标服务器也无法使用命令。
  • 要是不想给未授权用户反馈,直接删掉提示语句,只保留return即可,机器人会直接忽略该请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:00:21