# IRCaBot ИркаБот - это непрожорливый логгер для IRC-чата: записывает историю, бережно сортируя сообщения по дате. Поддерживает функцию быстрого поиска слова или фразы, выводит статистику по каждой найденной дате. При поисковом запросе с датой отдает весь лог в ЛС запросившему пользователю. Бот уважает права участников и дает возможность скрыть сообщения через специальную пометку. Точка в начале сообщения скрывает основной текст, но никнейм попадает в лог. Если в начале сообщения две точки, оно полностью игнорируется ботом и не появляется в логе. Запросы принимаются только через общий чат, чтобы все могли видеть кто и что ищет. Обращения пользователей и свои ответы бот не записывает, чтобы не захламлять историю. ## Конфигурация Бот принимает путь до конфигурационного файла через передаваемый параметр: `ircabot /path/to/config.json`. ```json { "socket": { "address": "127.0.0.1", <-- адрес сервера "port": "6667", <-- порт сервера "channel": "#ircabot", <-- канал для подключения "nickname": "ircabot", <-- никнейм бота "password": "" <-- пароль от никнейма (для NickServ). Может быть пустым. }, "handler": { "help": "'search' and 'test'.", <-- ответ бота по умолчанию "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/", <-- сообщение, выводимое после выдачи лога (веб-ссылка на лог) "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](https://notabug.org/acetone/video/wiki/contacts#irc).