IRC 経由で twitch.tv のチャットを監視するボットをプログラミングしています。成功した接続とログインは、Telnet で次のように表示されます。
Microsoft Telnet> o irc.twitch.tv 6667
PASS <password>
NICK <username>
:tmi.twitch.tv 001 <user> :Welcome, GLHF!
:tmi.twitch.tv 002 <user> :Your host is tmi.twitch.tv
:tmi.twitch.tv 003 <user> :This server is rather new
:tmi.twitch.tv 004 <user> :-
:tmi.twitch.tv 375 <user> :-
:tmi.twitch.tv 372 <user> :You are in a maze of twisty passages, all alike.
:tmi.twitch.tv 376 <user> :>
サーバーに正常に接続するが、メッセージの一部しか受信しない簡単なテスト スクリプトを作成しました。
# irctest.py
import socket
HOST='irc.twitch.tv'
PORT=6667
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.sendall(b"PASS oauth:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\n")
s.sendall(b"NICK user\r\n")
data = s.recv(2048)
s.close()
print(repr(data.decode()))
で出力された文字列data.decode()
は、成功した接続応答の最初の行のみです。
':tmi.twitch.tv 001 <user> :Welcome, GLHF!\r\n'
これは、接続が意図したとおりに機能することを意味します。ちょっと試してみましたs.recv(2048)
が、これは無期限にハングしs.settimeout(None)
ます。バッファサイズも増やしてみましたが、効果がないようです。何が起こっているか知っている人はいますか?
Twitch には、IRC 接続に関するヘルプ ドキュメントがここにあります。