Вы забыли пробелы при отправке.Должно быть так:
import socket
import urllib2
import httplib
import mechanize
channel = '#testbot'
botnick = 'tastybot'
botuser = 'tastybot'
network = 'irc.freenode.net'
port = 6667
irc = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
irc.connect ( ( network, port ) )
print irc.recv ( 4096 )
irc.send ( 'NICK ' + botnick + '\r\n' )
irc.send ( 'USER ' + botuser + ' 0 * :Python IRC\r\n' ) # Read RFC next time, please
irc.send ( 'JOIN ' + channel + '\r\n' )
irc.send ( 'PRIVMSG ' + channel + ' :What\'s up?\r\n' )
running = True
[various functions]
while running:
[rest of code]
Если учетная запись использует пароль, просто отправьте PASS password
в качестве ПЕРВОГО сообщения - перед отправкой имени пользователя и псевдонима - сразу после установления соединения.
Также в IRC (какопределяется RFC) максимальное сообщение len составляет 512 байт.
Кстати, вам действительно следует прекратить чтение кадра, когда последние 2 символа в полученных строках равны \r\n
.Пример в моем боте (hy-powered):
(defn read [self]
(setv b 512)
(setv on True)
(setv c "")
(while (and on (!= b 0))
(setv x (self.sock.recv 1))
(+= c (x.decode "UTF-8"))
(-= b 1)
(if (= "\r\n" (cut c -2))
(do
(if (= "" (cut c -2))
(continue))
(setv on False)
(setv c (cut c 0 -2)))))
c)