如何在discord.py 2.0中让命令仅在特定服务器运行
解决discord.py 2.0中命令仅在特定服务器运行的问题
要让你的UPDlogs命令仅在指定服务器生效,核心是用对装饰器——你之前尝试的@app_commands.guild()是错误写法,正确的是复数形式**@app_commands.guilds()**,传入目标服务器的ID(整数类型)即可。
修改后的完整代码
# 替换成你要限定的服务器ID,比如123456789012345678 TARGET_GUILD_ID = 123456789012345678 @app_commands.command(description='Shows the update log') @app_commands.guilds(TARGET_GUILD_ID) # 添加这行装饰器 async def UPDlogs(self, interaction: Interaction) -> None: embed = discord.Embed(color=0xFFFFFF) embed.set_author(name='~~~ Bot update log') embed.add_field( name='v.1.6.1 update', value=f"1. bla bla bla\n" "2. some update logs\n" "3. how to solve this?\n", inline=False, ) view = ui.View() view.add_item(ui.Button(label='Discord', emoji="💻", url="https://discord.com", row=0)) await interaction.response.send_message(embed=embed, view=view, ephemeral=True)
补充说明
- 若要让命令在多个服务器生效,可传入多个ID:
@app_commands.guilds(ID1, ID2, ID3) - 服务器ID需开启Discord开发者模式后,右键服务器图标选择「复制ID」获取
- 如果命令属于Cog类,确保装饰器放在
@app_commands.command()之后,且Cog已正确加载到机器人实例中
内容的提问来源于stack exchange,提问作者fanta09tv
相关产品推荐
相关产品推荐

