1

次のコードを使用して、Python で単純な irc ボットをホストしたいと考えています。

#!/usr/bin/python

import sys
import os
import socket

HOST = 'irc.gamesurge.net'
PORT = 6667
NICK = 'test_bot'
IDENT = 'testbot'
REALNAME = 'TestBot'
OWNER = 'Test'
CHANNELINIT = '#test_channel'

readbuffer = ''

sock = socket.socket()
sock.connect((HOST, PORT))
sock.send('NICK %sn' % NICK)
sock.send('USER %s %s bla :%sn' % (IDENT, HOST, REALNAME))


while True:
    line = sock.recv(500)
    if line:
        print line
        if line.find('GameSurge') != -1:
            print "joining..."
            print"current line: "+line
            sock.send('JOIN %sn' % CHANNELINIT)

ただし、どのgamesurgeサーバーに接続することを選択しても、常に次のエラーが表示されます。

ERROR :Closing Link: by NuclearFallout.WA.US.GameSurge.net (Registration Timeout)

サーバーが返すものは次のとおりです。

NOTICE AUTH :*** Looking up your hostname
NOTICE AUTH :*** Checking Ident
NOTICE AUTH :*** Found your hostname

NOTICE AUTH :*** No ident response

ERROR :Closing Link:  by NuclearFallout.WA.US.GameSurge.net (Registration Timeout)

これを解決する方法を知っている人はいますか?ありがとう。

4

1 に答える 1

2
sock.send('NICK %sn' % NICK)

\その前にa がありませnん - コマンドの最後は . ではなく改行nです。残りの行についても同じです。

sock.send('NICK %s\n' % NICK)
sock.send('USER %s %s bla :%s\n' % (IDENT, HOST, REALNAME))

等々。とはいえ、なぜ車輪を再発明するのでしょうか? 多くの IRC ボット フレームワーク/モジュールが利用可能であり、プロセスから当て推量を取り除き、ボットの実際の機能の作成に集中できるようにします。

于 2013-11-05T03:14:47.710 に答える