【问题标题】:Simultaneously running separate programs using the same token使用相同的令牌同时运行不同的程序
【发布时间】:2021-12-16 03:29:50
【问题描述】:

我使用 JDA (Java-Discord-API) 编写了一个 Discord 机器人,该机器人已添加到我的一台服务器中。

我知道机器人正在使用 OAuth 来确保命令的来源(在这种情况下,我的 Java 代码具有正确的登录令牌)是经过授权的。

但我仍然可以运行第二个程序,它使用与第一个相同的 OAuth 令牌。

所以我的问题是:是否可以在多台不同的机器上运行多个单独的程序,使用不同的代码,使用相同的令牌来操作一个机器人?

例如,有多个程序,每个程序都编写了不同的机器人命令,当在命令前面使用某个命令前缀时,这将导致正确的程序做出反应 – $test : 程序 1 反应,#test :程序 2 反应,.test :程序 3 反应,依此类推。

【问题讨论】:

    标签: discord discord-jda


    【解决方案1】:

    你绝对可以做到这一点。 Discord 不介意您使用相同的令牌在不同的机器上运行多个实例。所有事件都将通过 websocket 协议(适当地)转发给您的所有机器人。

    使用此方法可以使用不同的前缀对您的机器人进行分区。但我不推荐它,因为您所有的机器人脚本都必须承担运行机器人的资源成本。您将花费数倍的 RAM 和 CPU 资源,而不是运行单个机器人并在内部处理不同的前缀。

    但是,当您的机器人增长到数十万台服务器时,这是推荐的方法。通过称为“分片”的过程,您可以将不同服务器中的机器人拆分为“分片”(通常每个分片 1-2k)并在不同机器上运行不同的分片以减轻对特定主机服务器的影响。

    请注意,Discord API 将您限制为每 24 小时最多 1000 次令牌登录。

    【讨论】:

    • 感谢您的信息!我如何才能真正使用不同的令牌而不必使用多个实例?我的机器人在 5-10 台服务器上运行,并且很可能会保持在该级别。所以分片不会是那个机器人的事情。
    • 您好,事实并非如此。除非进行大量修补,否则机器人脚本的每个实例都仅限于一个令牌。您需要为每个机器人令牌运行多个实例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多