https://github.com/spfng/IMVoglea
Выложил свои первые наработки, если у вас есть просто идеи — делитесь.
Скрипты irc_shell/gw_irc.sh
и jabber_shell/gw_jabber.sh
осуществляют подключение к IRC и Jabber соответсвенно и стабильно держат подключение, переподключаются если его сбросить.
Для обработки сырого трафика выполняются irc_shell/raw_irc.sh
и jabber_shell/raw_jabber.sh
.
В директории scripts/
выполняются скрипты, например scripts/help.sh
. Скрипты вызываются из raw-скриптов и получают команды, например, когда пришло сообщение, вызывается функция on_message
, ей передаются параметры — кто написал, где написал и что написал. $sender, $target, $string.
В скрипте делаем какие-то действия, и для обратного ответа используем команду say. Команда say для каждого протокола IRC и Jabber своя. Она формирует сырое сообщение для отправки на сервер.
Таким образом, когда мы пишем боту !help, не важно где, в IRC или Jabber, для скрипта это действие выглядит одинаково, поэтому он одинаково её обрабатывает и отвечает.
Вот такая модульная структура, обеспечивающая конечным скриптам прозрачную совместимость с любыми чат-протоколами.
Товарищи, которые тусуются в #lor @ Freenode, наверняка знают и помнят бота Voglea, который всех радовал. Вот это оно самое.