【发布时间】:2019-08-19 03:32:06
【问题描述】:
我正在为我的服务器使用 discord.py(重写分支)开发一个不和谐机器人,我需要邀请该机器人到多个服务器并同时使用它。
我的问题是:
我是否需要为每个服务器设置一个新线程,或者机器人是否将事件排队并一一处理?如果它确实将它们排队,我应该使用它还是使用单独的线程?
对不起,如果这是一个无聊的问题,但我对 discord.py 还很陌生,我还不太明白它是如何工作的。
感谢阅读
【问题讨论】:
我正在为我的服务器使用 discord.py(重写分支)开发一个不和谐机器人,我需要邀请该机器人到多个服务器并同时使用它。
我的问题是:
我是否需要为每个服务器设置一个新线程,或者机器人是否将事件排队并一一处理?如果它确实将它们排队,我应该使用它还是使用单独的线程?
对不起,如果这是一个无聊的问题,但我对 discord.py 还很陌生,我还不太明白它是如何工作的。
感谢阅读
【问题讨论】:
不,您只需要定义机器人将在发生某些事情时执行的回调(主要使用Client.event 和Bot.command)。用于侦听服务器上发生的事件的所有逻辑都已为您处理好。 See the examples directory in the discord.py project for some examples.
如果您的机器人被广泛使用(数百台服务器),您将不得不开始使用分片,这是一个在同一机器人的多个实例之间自动分割流量的过程。您可以查看 AutoShardedClient 的文档以了解其工作原理。
【讨论】:
多进程、线程或队列都可以用来解决这个问题,每个都有各自的优点和缺点。我个人会使用线程,因为需要在每个服务器上发生的事件大多是相互独立的。
【讨论】: