Go to file
const an teen 7a83a95a2f +B flag... 2021-06-07 18:40:15 +03:00
tests JSON config added 2021-05-21 09:53:15 +03:00
.gitignore Initial commit 2021-05-09 16:12:13 +00:00
LICENSE Initial commit 2021-05-09 16:12:13 +00:00
README.md readme updated 2021-05-27 14:51:32 +03:00
config_en.json configs json 2021-05-27 14:15:30 +03:00
config_ru.json configs json 2021-05-27 14:15:30 +03:00
ircabot.pro typo in project name 2021-05-27 14:20:53 +03:00
main.cpp Баг с точкой 2021-05-28 21:35:42 +03:00
tcpsyncclient.cpp +B flag... 2021-06-07 18:40:15 +03:00
tcpsyncclient.h to release :) 2021-05-27 12:27:48 +03:00

README.md

IRCaBot

ИркаБот - это непрожорливый логгер для 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'.",  <-- ответ бота по умолчанию

        "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.