Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 处理IRC聊天机器人应用程序的全局禁止_Javascript_Node.js_Bots_Irc - Fatal编程技术网

Javascript 处理IRC聊天机器人应用程序的全局禁止

Javascript 处理IRC聊天机器人应用程序的全局禁止,javascript,node.js,bots,irc,Javascript,Node.js,Bots,Irc,我有一个IRC聊天机器人,我使用Node.js+JavaScript为TwitchTV上的广播公司开发。我在家里的电脑上运行了这个程序,我知道如果某个IP地址发送了太多的消息,或者被洪水淹没,IRC将在全球范围内禁止它 我想向其他广播公司开放聊天机器人,但我担心如果不同的机器人(我设置了聊天机器人,以便广播公司可以为他们的机器人创建一个新帐户,以便名称适合他们的频道)从单个全球IP发送消息,我会被全球禁止 我可以使用哪些技术,每个广播公司都可以从机器人上获取信息,而不必获得全球禁令 下面是一个机

我有一个IRC聊天机器人,我使用Node.js+JavaScript为TwitchTV上的广播公司开发。我在家里的电脑上运行了这个程序,我知道如果某个IP地址发送了太多的消息,或者被洪水淹没,IRC将在全球范围内禁止它

我想向其他广播公司开放聊天机器人,但我担心如果不同的机器人(我设置了聊天机器人,以便广播公司可以为他们的机器人创建一个新帐户,以便名称适合他们的频道)从单个全球IP发送消息,我会被全球禁止

我可以使用哪些技术,每个广播公司都可以从机器人上获取信息,而不必获得全球禁令

下面是一个机器人的示例,它可以同时在多个通道中发送消息,并且不会被禁止:

我问过创作者是否可以给我一些建议,但他们几乎拒绝了。

你应该知道一些限制,你可以/不应该超过:
  • 克隆每个IP/子网
    大多数网络限制来自单个IP的并发连接数量(有时,尤其是IPv6甚至整个子网)。对于每个网络,此限制都是不同的,并且在超出此限制时如何处理。一些网络创建了一个g-line(全球网络禁止您的IP),其他网络只是删除任何新的连接

  • 每个连接的通道限制
    有一个限制,在多少频道,你可以在同一时间。此限制是每个连接的限制,因此添加其他连接将增加您需要克隆的最大通道数

  • 每个连接的速率限制 每个连接只允许在给定时间向服务器发送一定数量的数据。这可能很简单,从每秒5个命令到复杂,不同的命令会给阈值增加不同的量


那么你如何才能绕过这个限制呢?
  • 克隆
    最好的办法是得到一个例外,一个信任。如何获得一个或是否能够获得一个取决于网络(策略)

  • 频道限制
    网络中的某些服务器可能允许更多的通道进入。某些网络允许某些用户获得更高的限制。再次询问您的IROP或使用克隆

  • 利率限制
    询问您的IROP或使用克隆。实施队列以避免因
    过多洪水而断开连接

总结如下: 每个通道不应使用单个连接。虽然这使您可以为每个频道选择不同的名称,但在大多数网络上,这被视为浪费资源。
最好使用中性名称,并将其用于多个频道。一旦达到频道上限,请使用克隆

为避免因
洪水泛滥而被踢倒
实施排队以阻止排队(费率限制在您这边)

切勿将超过允许数量的并发连接连接到网络。
这包括“重影”,即最近断开但仍“在服务器上”的连接。 (为了防止g线在重新连接前将限值除以2或等待3分钟(或更长时间)

编辑 环顾twitch之后,twitch似乎没有使用IRC网络,而是使用了多个IRC服务器。这使它变得更简单、更复杂:

  • 如果可能,您应该查找适当的DNS名称并使用现有连接(具有相同的ip)
  • 使用单个用户名