nufnuf a055688af5 Merge https://notabug.org/nufnuf/ircabot2 | 1 rok pred | |
---|---|---|
screenshots | 1 rok pred | |
src | 1 rok pred | |
systemd | 1 rok pred | |
.gitignore | 1 rok pred | |
README.md | 1 rok pred | |
ircabot.pro | 1 rok pred | |
readme.en.md | 1 rok pred |
ИркаБот - это непрожорливый логгер для IRC-чата: записывает историю, бережно сортируя сообщения по дате. Поддерживает функцию быстрого поиска слова или фразы, выводит статистику по каждой найденной дате. При поисковом запросе с датой отдает весь лог в ЛС запросившему пользователю.
Бот уважает права участников и дает возможность скрыть сообщения через специальную пометку. Точка в начале сообщения скрывает основной текст, но никнейм попадает в лог. Если в начале сообщения две точки, оно полностью игнорируется ботом и не появляется в логе.
Запросы принимаются только через общий чат, чтобы все могли видеть кто и что ищет. Обращения пользователей и свои ответы бот не записывает, чтобы не захламлять историю.
Бот принимает путь до конфигурационного файла через передаваемый параметр: ircabot /path/to/config.json
.
{
"socket":
{
"address": "127.0.0.1", <-- адрес сервера
"port": "6667", <-- порт сервера
"channel": "#ircabot", <-- канал для подключения
"nickname": "ircabot", <-- никнейм бота
"password": "" <-- пароль от никнейма (для NickServ). Может быть пустым.
},
"handler":
{
"help": "'search' and 'test'.", <-- ответ бота по умолчанию
"minlen": "4", <-- минимальная длина поискового запроса
"logpath": "/var/www/irc-log", <-- директория хранения логов (должна существовать)
"admin": "acetone", <-- никнейм админа для сообщения об ошибках в ЛС
"success": "success :)", <-- сообщение об успехе
"error": "error :(", <-- сообщение об ошибке
"trylater": "try later.", <-- сигнал о загруженности, "попробуйте позже"
"find": "search", <-- команда поиска, для русскоговорящих можеть быть "поиск"
"notfound": "not found.", <-- сообщение о том, что поиск не дал результата
"findzero": "blahblah", <-- инструкция по поиску при вызове команды без параметров
"links": "http://si.te/log/" <-- сообщение, выводимое после выдачи лога (веб-ссылка на лог)
},
"custom":
{
"test": "it's work!"
}
}
Не копируйте конфиг отсюда, так как комментарии ломают файл. Практические примеры находятся в корне репозитория.
На месте "test": "it's work!"
может быть неограниченное количество триггеров в формате ключ-значение. При получении сообщения, например: ircabot, test
, бот ответит: username, it's work!
. Подобная функция может использоваться для размещения объявлений, кошелька для доната и прочее, например, "donate": "btc: xxxxxxxxxxxxxxxxxxxxxxx"
. Чтобы пользователи могли узнать о возможных функциях вызова, целесообразно упомянуть каждую в графе help
.
Бот поддерживает изменение конфигурационного файла без перезапуска. Для применения изменений необходимо, чтобы пользователь, чей никнейм вписан в поле admin
, написал в чате ircabot, reload
(указывается актуальный никнейм бота).
Будьте внимательны: запятая в конце строки ключ-значение отсутствует только тогда, когда строка является последней. Если вы добавите некоторую кастомную строку, необходимо добавить запятую к предпоследней строке, а у последней строки запятой быть не должно.
Важное замечание: все современные серверы IRC имеют защиту от флуда (ну, наверное). Для корректной работы бота необходимо добавить его в "белый список" сервера. При выдаче истории в ЛС бот может отдавать много сообщений, и, если будет стандартное ограничение - одно сообщение в секунду, - процесс неприятно затянется, а в худшем случае - бот будет кикнут с сервера.
Протестировать бота можно в ILITA IRC, канал #acetonevideo.