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

★★★★★

Херасе какая тяжелая наркомания. Но круто. Буду посмотреть.

anonymous
()

Не майся дурью, лучше контрибуть в открытые проекты. Работы навалом.

Deleted
()

Предлагаю вдоль.

Deleted
()

У кого-то слишком много свободного времени. ;) Спуфи, не майся дурью. Твою бы энергию, да в мирных целях!

beastie ★★★★★
()

ИМХО, bash здесь не самый лучший выбор...

P. S. Но догадываюсь, что переделывать просто лень...

Kroz ★★★★★
()

Красиво.

Но хочу вас огорчить, вот это утверждение ложно:

Public Domain

https://github.com/spfng/IMVoglea/blob/master/LICENSE (полное содержимое)

Авторское право назойливей, чем вы предполагаете.

Добавьте (по хорошему, в каждый файл) полноценные уведомления об авторских правах или об отказе от авторских прав (второе возможно не во всех странах). Если нужна наикратчайшая разрешительная формула, можно взять GNU All-Permissive License:

# Copyright © <годы-создания> <ваше-имя-и-фамилия>
# 
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved.  This file is offered as-is,
# without any warranty.
Zmicier ★★★★★
()

отличный выбор инструментов, главное - релевантный!

anonymous
()

На свифте нужно, а не на этом говне.

Deleted
()
 put "NICKSERV IDENTIFY $(< ~/freenode_passwd)"
 sleep 1
 put "JOIN #lor"
 sleep 1
 put "JOIN #s2ch"

ну это-то можно было не хардкодить

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

хотя там все сыровато

openssl у меня в debian без "-CApath /etc/ssl/certs/" не захотел работать.

потом скрипт запустился, вывалил

irc_shell/raw_irc.sh: line 48: on_mode: команда не найдена

и дальше

irc_shell/raw_irc.sh: line 48: raw: команда не найдена
irc_shell/raw_irc.sh: line 48: raw: команда не найдена

в этом месте уже стало лень разбираться

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

на самом деле тут всё в порядке. просто нехватает одной проверки.

в IRC _каждое_ событие передаётся на скрипт. а в скриптах нету обработчика on_mode, raw, а есть только on_message. но не перечислиять же в каждом скрипте каждый эвент IRC? вот поэтому надо будет просто добавить проверку, после загрузки скрипта, что вызванный эвент существует.

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

кроме контроллеров С в 2016 году нужен как минимум для ядра линукса, кодеков, высокопроизводительных графических и криптографических библиотек, системных утилит и т.д.

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

на самом деле тут всё в порядке

так он же в канал ничего не пишет. на !help вываливает ошибку и все. или так и задумано?

anonymous
()

Был у нас бот на баше. Как только появилась нужда в команде, которая работает десятки секунд, пришлось переписывать. В итоге он на go.

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

для ядра линукса

его на 80% пишут корпорации, да и вообще, порог вхождения очень высокий

кодеков, высокопроизводительных графических и криптографических библиотек, системных утилит и т.д.

ну т.е. считанные проценты. Не, ну т.е. кто-то должен этим заниматься, но имхо это должны быть исключительно любители вручную тасовать байтики. Предлагать учить C человеку, которому это нафиг не сдалось - имхо зря.

lazyklimm ★★★★★
()

Сочувствую...

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

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

deep-purple ★★★★★
()

годно и полезно для всякого эмбеддед.

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

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

его на 80% пишут корпорации

а в корпорациях этим кто занимается, рептилоиды?

порог вхождения очень высокий

ну для кого как

но имхо это должны быть исключительно любители вручную тасовать байтики

а чем Спуфинг на такого не похож?

Harald ★★★★★
()

это ты с этим ботом собираешься новый год встречать?

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

на тот момент было ненужно, хотя jimtcl влезал и ещё немного оставалось

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

Пока ты на нём не пишешь что-то standalone. Сразу вовсю вылезает несовместимость версий и местами недостаток батареек

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

Пока ты на нём не пишешь что-то standalone. Сразу вовсю вылезает несовместимость версий и местами недостаток батареек.

Я писал. Работало.

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

И я писал, и у меня работало, но количество ручного напилинга в сравнении с тем же питоном было больше.

Dark_SavanT ★★★★★
()

IRC, XMPP, bash, 2015

найдите лишний член ряда

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

Тот же lua куда более выразителен и быстрее bash.

Какой-нибудь shell по-любому должен быть в любом девайсе с линуксом. Bash отлично подойдёт в качестве этого какого-нибудь шелла. Да и запинать обсуждаемое чтобы работало на каком-нибудь busybox'овом ash тоже можно. А вот lua совсем не обязан быть в любом девайсе с линуксом. И, кстати, знать его и любить совершенно не обязательно чтобы полноценно пользоваться линуксом, в отличии от шелла.

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

Какой-нибудь shell по-любому должен быть в любом девайсе с линуксом. Bash отлично подойдёт в качестве этого какого-нибудь шелла. Да и запинать обсуждаемое чтобы работало на каком-нибудь busybox'овом ash тоже можно. А вот lua совсем не обязан быть в любом девайсе с линуксом. И, кстати, знать его и любить совершенно не обязательно чтобы полноценно пользоваться линуксом, в отличии от шелла.

Возможно примерно такой же логикой руководствовались авторы dracut. Что получилось мы видим.

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

Возможно примерно такой же логикой руководствовались авторы dracut. Что получилось мы видим.

Я вот не вижу, например. Зато вижу что например в слаке почти все слакотулзы написаны на шелле и работают прекрасно десятилетиями. Наверно дело всё-же не в шелле, а в чём-то другом, да?

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

Я вот не вижу, например. Зато вижу что например в слаке почти все слакотулзы написаны на шелле

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

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