如何设置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
相关产品推荐
相关产品推荐

