Найти - Пользователи
Полная версия: irc bot
Начало » Network » irc bot
1
Sous l'ombre
Здравствуйте, пытаюсь написать что-то вроде IRC бота но никак не могу понять как реализовать респонс.Ответ от сервера мне нужен для того чтобы узнать как протекает подключение(удачно или нет,есть конечно try,except но хочется видеть что там творится)
*****************************************************************************************
#!/usr/bin/python
# -*- coding: utf-8 -*-
import socket

CRLF = ‘\r\n’
readbuffer = ‘'

class bot:
def __init__(self, host, port = 6667):
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
self.sock.connect((host, port))
except:
self.sock.close()
print “Connection error, please try again”

self.file = self.sock.makefile(’rb')

def putcmd(self, cmd):
return self.sock.sendall(“%s%s” % (cmd, CRLF))

def login(self, nickname):
return self.putcmd(“NICK %s” % nickname)

def users(self, username, hostname=“tolmoon”, servername=“tolsun”, realname=“Vova putin”):
return self.putcmd(“USER %s %s %s :%s” % (username, hostname, servername, realname))

def cjoin(self, cname):
return self.putcmd(“JOIN #%s” % cname)

def log(self):
while 1:
readbuffer=self.sock.recv(1024)
temp=readbuffer.split(“\n”)
for line in temp:
if line == “***”:
print line


ircbot = bot('irc.freenode.net')
ircbot.log()
ircbot.login('irbbot1')
ircbot.users('ircbot')
ircbot.cjoin('ubuntu')
*******************************************************************************************************************
То что я пытался сделать вы видите в функции log,правда если я ее включаю то у меня не конектится на канал и нету никакого лога.
Делал без парсинга.Т.е вывод всего ответа у меня питон тупо повисал >_< . Так же пытался сделать через sock.makefile но я так и не понял как он работает,когда писал pop3 модуль ответ отлично приходил,а тут никак.Где можно почитать об socket.makefile побольше? не нашел нормальной информации.
poltergeist
Хм, не вижу выхода из цикла “while 1:”, он бесконечен:) sock.makefile - зачем вам объект типа файл? мне кажется он совсем ни к чему… Алгоритм приёма данных нужно немного усложнить (добавить select для проверки наличия данных и аккумулировать куски данных в буфер), или пользоваться готовыми средствами из того же twisted-а…
Sous l'ombre
Проблему решил с помощью slav0nic`а.За что ему спасибо.
Функцию лог надо было вставить просто в конец.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB