Как я программирую простого бота IRC в Python?

Я нуждаюсь в помощи, пишущий основного бота IRC, который просто соединяется с каналом.. может кто-либо для объяснения меня это? Мне удалось заставить это соединяться с сервером IRC, но я не могу присоединиться к каналу и войти в систему. Код, который я имею к настоящему времени:

import sockethost = 'irc.freenode.org'
port = 6667
join_sock = socket.socket()
join_sock.connect((host, port))
<code here> 

Любая справка значительно ценилась бы.

22
задан Jake 3 June 2010 в 17:39
поделиться

3 ответа

Вероятно, проще всего было бы взять за основу реализацию протокола IRC от twisted. Посмотрите на : http://github.com/brosner/bosnobot для вдохновения.

12
ответ дан 29 November 2019 в 03:28
поделиться

Чтобы подключиться к IRC-каналу, необходимо отправить определенные команды, специфичные для протокола IRC, на IRC-сервер, прежде чем вы сможете это сделать.

При подключении к серверу необходимо подождать, пока сервер отправит все данные (MOTD и whatnot), затем отправить команду PASS.

PASS <some_secret_password>

Далее следует команда NICK.

NICK <username>

Затем необходимо отправить команду USER.

USER <username> <hostname> <servername> :<realname>

Оба являются обязательными.

Тогда вы, скорее всего, увидите сообщение PING с сервера, вы должны отвечать серверу командой PONG каждый раз, когда сервер отправляет вам сообщение PING. Сервер также может запрашивать PONG между командами NICK и USER.

PING :12345678

Ответьте с тем же текстом после «PING» с помощью команды PONG:

PONG :12345678

То, что после PING, уникально для каждого сервера, поэтому убедитесь, что вы отвечаете значением, которое сервер отправил вам.

Теперь вы можете присоединиться к каналу с помощью команды JOIN:

JOIN <#channel>

Теперь вы можете отправлять сообщения каналам и пользователям с помощью команды PRIVMSG:

PRIVMSG <#channel>|<nick> :<message>

Выйдите из сети

QUIT :<optional_quit_msg>

Экспериментируйте с Telnet! Начните с

telnet irc.example.com 6667

Дополнительные команды и параметры см. в IRC RFC.

Надеюсь, это поможет!

49
ответ дан 29 November 2019 в 03:28
поделиться

Это откроет сокет, но вам также нужно сообщить IRCd, кто вы. Я делал нечто подобное в perl давным-давно, и нашел IRC RFCs очень полезными.

Основной RFC: http://irchelp.org/irchelp/rfc/rfc.html

Другие RFC: http://irchelp.org/irchelp/rfc/index.html

0
ответ дан 29 November 2019 в 03:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: