我使用 JDA (Java-Discord-API) 编写了一个 Discord 机器人,并将其添加到我的一台服务器中。
我知道机器人正在使用 OAuth 来确保命令的来源(在本例中是带有正确登录 token 的 Java 代码)获得授权。
但我仍然可以运行第二个程序,它与第一个程序同时使用相同的 OAuth token 。
所以我的问题是:是否可以在多台不同的机器上使用不同的代码运行多个单独的程序,使用相同的 token 来操作一个机器人?
例如,有多个程序,每个程序都编程有不同的机器人命令,当在命令前面使用特定命令前缀时,这将导致正确的程序使用react - $test
:程序 1 react ,#test
:程序 2 react ,.test
:程序 3 react ,依此类推。
最佳答案
你绝对可以做到这一点。 Discord 不介意您使用相同的 token 在不同的计算机上运行多个实例。所有事件都将通过 websocket 协议(protocol)转发到您的所有机器人(视情况而定)。
可以使用此方法使用不同的前缀对机器人进行分区。但我不推荐它,因为所有机器人脚本都必须承担运行机器人的资源成本。您将花费数倍的 RAM 和 CPU 资源,而不是运行单个机器人并在内部处理不同的前缀。
但是,当您的机器人增长到数十万台服务器时,这是推荐的方法。通过称为“分片”的过程,您可以将不同服务器中的机器人分成“分片”(通常每个分片 1-2k),并在不同的计算机上运行不同的分片,以减轻对一台特定主机服务器的影响。
请注意,Discord API 限制每 24 小时最多 1000 次 token 登录。
关于discord - 使用相同的 token 同时运行单独的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69796271/