3
import time
import win32api, win32con
import socket #imports module allowing connection to IRC
import threading #imports module allowing timing functions

#sets variables for connection to twitch chat
bot_owner = 'TheMagicalCake'
nick = 'MagicalCakeBot'
channel = '#TheMagicalCake'
server = 'magicalcakebot.jtvirc.com'
password = '~redacted~'

irc = socket.socket()
irc.connect((server, 6667)) #connects to the server

#sends variables for connection to twitch chat
irc.send('PASS ' + password + '\r\n')
irc.send('USER ' + nick + ' 0 * :' + bot_owner + '\r\n')
irc.send('NICK ' + nick + '\r\n')
irc.send('JOIN ' + channel + '\r\n') 

我正在尝试为抽搐聊天制作一个机器人,但是当我运行此代码时,我收到错误消息,我正在使用适用于他们但不适用于我的其他人的代码

Traceback (most recent call last):
  File "C:/Users/Owner/Desktop/TheMagicalCake", line 47, in <module>
    irc.connect((server, 6667)) #connects to the server
  File "C:\Python27\lib\socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
gaierror: [Errno 11004] getaddrinfo failed
4

1 回答 1

4

getaddrinfo failed通常意味着您尝试连接的主机名无法解析为 IP 地址。在这种情况下,它可能意味着它不存在。

为什么?

当您传递socket.connect()主机名而不是 IP 地址时,它首先需要找到所述主机名的 IP 地址。它使用 来执行此操作socket.getaddrinfo(),它向 DNS 服务器询问有关主机名的信息。事实证明,没有 DNS 服务器具有此信息,因此调用getaddrinfo失败,因此出现错误消息。

如何连接到 Twitch 的 IRC

自从您的指南制作以来,连接到 Twitch 的 IRC 的过程似乎发生了一些变化。这是我设法做到的。

  • 从TwitchApps获取 OAuth 令牌
  • 使用您的 twitch 用户名连接到irc.twitch.tv端口 6667。作为密码,使用oauth:您刚刚获得的 oauth 令牌。
  • 加入您正在流式传输的频道。
于 2014-02-18T07:04:59.973 回答