Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 3, 2008 15:54:50

Sous l'ombre
От:
Зарегистрирован: 2008-11-03
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

irc bot

Здравствуйте, пытаюсь написать что-то вроде 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 побольше? не нашел нормальной информации.



Отредактировано (Ноя. 3, 2008 15:56:21)

Офлайн

#2 Ноя. 3, 2008 16:24:53

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

irc bot

Хм, не вижу выхода из цикла “while 1:”, он бесконечен:) sock.makefile - зачем вам объект типа файл? мне кажется он совсем ни к чему… Алгоритм приёма данных нужно немного усложнить (добавить select для проверки наличия данных и аккумулировать куски данных в буфер), или пользоваться готовыми средствами из того же twisted-а…



Офлайн

#3 Ноя. 3, 2008 19:50:24

Sous l'ombre
От:
Зарегистрирован: 2008-11-03
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

irc bot

Проблему решил с помощью slav0nic`а.За что ему спасибо.
Функцию лог надо было вставить просто в конец.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version