我如何限制机器人在某些频道中使用 discord.py 进行响应?

How can I restrict a bot to responding in certain channels with discord.py?

我正在制作一个使用 cogs 并有几个不同命令的机器人。我希望这个机器人只在我使用它的服务器的两个机器人命令通道之一中回复。我已经看到我可以使用 ctx.channel.id = 无论 Id 是什么,但我希望机器人根本无法在频道中响应,包括 .help 命令。我见过有人用 on_message 这样做,但我不确定我会如何用 cogs 做到这一点。任何帮助将非常感激。我的预期结果基本上是让机器人仅在两个通道(我指定的两个机器人通道)中响应任何命令,包括 .help 命令。谢谢!

最简单的方法实际上不是通过代码,而是通过服务器权限。在您的服务器上,您应该找到一个与您的机器人同名的角色,您可以为单独的频道更改其权限(包括 send messages)。

正如@Lu M 所说,最简单的方法是禁用您的机器人的权限。但是如果你想在你的代码中这样做,你可以使用 if 语句来检查频道 ID 是什么。

if ctx.channel.id == <channel_id_here>:
   return 
   # if this if statement returns True, this will stop the command from doing 
   further actions.

else:
   # do stuff here