LINUX.ORG.RU

Приглашаю к участию в разработке IRC/XMPP бота на Bash

 , , ,


2

6

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, который всех радовал. Вот это оно самое.

★★★★★

Ответ на: комментарий от kirk_johnson

Мб поэтому их пакетный менеджер до сих пор не умеет нормальные зависимости?

И слава Патрику что не умеет! Зато устанавливаемый на сервак какой-нибудь nmap не вытягивает за собой Xorg, DE и кучу прочего говнища, которое какой-то идиот прописал в зависимости только потому, что у nmap'а оказались графические морды.

Не путай сценарии выполнения (сеть поднять, бекап сделать) и программы. Это разные вещи.

slackpkg или там какой-нибудь setup - это полноценные программы.

Stanson ★★★★★
()
Ответ на: комментарий от anonymous

Пишут, но это сильно дольше. Обычный trade-off время<->размер.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от Stanson

И слава Патрику что не умеет! Зато устанавливаемый на сервак какой-нибудь nmap не вытягивает за собой Xorg, DE и кучу прочего говнища, которое какой-то идиот прописал в зависимости только потому, что у nmap'а оказались графические морды.

Про Gentoo/Funtoo ты не слышал, да?

slackpkg или там какой-нибудь setup - это полноценные программы.

slackpkg - неполноценная программа

kirk_johnson ★☆
()
Ответ на: комментарий от lazyklimm

Для экономии времени есть куча библиотек. Но да, для монстров нужен уровень(вни) выше. Но бывает всё же время выполнения дороже времени разработки.

Так или иначе всё зависит от условий, но С универсален мать его за ногу. Лично мне он просто приятен, а это немаловажно, не решающий фактор конечно, но один из определяющих, когда что-то пишется для удовольствия и интереса, а не работы/бабла/убербезопасности/религии/моды.

P.S. Не программист ни разу, все мои суждения можешь рассматривать как пшик непрофессионала ::)

Dron ★★★★★
()
Ответ на: комментарий от Dron

Для экономии времени есть куча библиотек.

да дело не только в библиотеках, везде следить за байтиками в 2016 году как-то уже некомильфо.

С универсален мать его за ногу

Ну, универсальность его условна, какой процент веб-фронтендов (да даже бэкендов) написан на C?

когда что-то пишется для удовольствия и интереса

Мне интересно получать удовольствие другими методами. Но даже если я что-то кодю для себя, что бывает редко, я предпочитаю максимально высокоуровневые инструкции.

lazyklimm ★★★★★
()

нужно

например: взять Inform 7 и написать текстовую игру на естественном языке (тут не для программистов, думающих алгоритмами — а скорее для писателей, думающих сценами, персонажами, действиями, пьесками, правилами и движками правил, задающими поведение «акторов»)

а потом к этому прикрутить IRC/Jabber бота для управления через пайпы. для совместного прохождения игры. и в конфу джаббера такого бота вывалить.

кстати, есть ещё проект ii от suckless.org, в котором irc-клиент реализован через пайпы stdin, stdout — тоже хорошо скриптуется.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.