JIrcBot/README.md

204 lines
7.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# JIrcBot
__powered by [PircBotX](https://github.com/pircbotx/pircbotx)__
Из реализованных функций:
1. Пинг
2. Приветствие входящих пользователей
3. Калькулятор с возможностью вычислять выражения с переменными
4. Проверка регулярных выражений
5. Выдача советов от сервиса [fucking-great-advice](http://fucking-great-advice.ru/api/random)
6. Автопостинг названия URL при его появлении в чате
7. Викторины - предоставлены сервисом [baza-otvetov.ru](https://baza-otvetov.ru)
8. Выдача случайной цитаты из сервиса [Bash.Org / Bash.im](bash.im/random)
9. Авторелогин после кика. Бывают ситуации, когда другой бот автоматически кикает моего бота (в канале #lor на freenode, например).
10. Система отложенных сообщений. Можно написать `?tell <username|me> your phrase here`, и бот доставит это сообщение указанному пользователю, когда он напишет в чат
11. Грамматический контроль и коррекция
12. ~~Поиск Google~~
13. Поиск DuckDuckGo
14. Интерактивная справка
_____
### 2019-03-15
* Реализована интерактивная справка - команда `?h` или `?help`
### 2019-09-10
* Поиск Google - заменен на поиск DuckDuckGo
### 2018-04-11
* Добавлена статистика по сообщениям
### 2018-03-29
* Добавлена возможность администрирования бота из чата канала
* Добавлена возможность забыть все отложенные сообщения для пользователя
* Добавлена возможность прочитать разом все отложенные сообщения для пользователя - отправляются в приват
### 2018-03-29
* Добавлена возможность администрирования бота через приватные сообщения к нему
### 2018-03-28
* Портирован на SpringBoot 2 (__NB!__ _перед запуском бота версии 2.0.0 необходимо запустить скрипт в базе: /srv/main/resources/sql/update_to_2.0.0.sql_)
### 2018-03-27
* Добавлена возможность коннекта бота к нескольким серверам
### 2018-02-06
* Добавлен поиск Google
### 2018-02-05
* Добавлен модуль грамматического контроля и коррекция
### 2018-02-01
* К боту подключена БД (сейчас PostgreSQL).
* Реализованы индивидуальные настройки возможностей бота для каждого канала - хранится в БД
* Реализована система отложенных сообщений
_____
## Установка и запуск
### Требования для работы:
1. JDK версии 1.8
2. Maven
3. PostgreSQL версии 9.4-9.6 (на других не проверялся) - настройки подключения находятся в файле `\src\main\resources\application.yml`
По-умолчанию PostgreSQL расположен на localhost, должен быть создан пользователь `jircbot` с паролем `jircbotpass`, и он должен быть владельцем базы `jircbot`.
### Установка
#### Клонируем репозиторий
```bash
> git clone https://github.com/bvn13/JIrcBot.git
Cloning into 'JIrcBot'...
remote: Counting objects: 615, done.
remote: Compressing objects: 100% (199/199), done.
Receiving objects: 83% (511/615), 76.01 KiB | 65.00), pack-reused 167Receiving objects: 82% (505/615), 76.01 KiB | 65.00 KiB/s
Receiving objects: 100% (615/615), 111.97 KiB | 72.00 KiB/s, done.
Resolving deltas: 100% (253/253), done.
```
#### Собираем проект
```bash
> cd JIrcBot
> mvn clean package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building jircbot 1.1.2
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ jircbot ---
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ jircbot ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ jircbot ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 41 source files to C:\dev\test\JIrcBot\target\classes
[WARNING] /C:/dev/test/JIrcBot/src/main/java/ru/bvn13/jircbot/config/JircBotConfiguration.java: C:\dev\test\JIrcBot\src\main\java\ru\bvn13\jircbot\config\JircBotConfiguration.java uses unchecked or unsafe operations.
[WARNING] /C:/dev/test/JIrcBot/src/main/java/ru/bvn13/jircbot/config/JircBotConfiguration.java: Recompile with -Xlint:unchecked for details.
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ jircbot ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\dev\test\JIrcBot\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ jircbot ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ jircbot ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ jircbot ---
[INFO] Building jar: C:\dev\test\JIrcBot\target\jircbot-1.1.2.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:1.5.6.RELEASE:repackage (default) @ jircbot ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 17.916 s
[INFO] Finished at: 2018-02-08T10:35:43+03:00
[INFO] Final Memory: 33M/287M
[INFO] ------------------------------------------------------------------------
```
#### Настройка
В файле config.json в корне проекта хранятся настройки. Укажите сервер, имя бота и каналы, на которые он должен заходить.
```json
{
"version" : "1.0",
"connections" : [
{
"enabled" : true,
"server" : "irc.freenode.net",
"port" : 6667,
"channelsNames" : ["#voidforum", "#lor"],
"botName" : "jircbot"
},
{
"enabled" : true,
"server" : "irc.mozilla.org",
"port" : 6667,
"channelsNames" : ["#voidforum", "#lor"],
"botName" : "jircbot"
}
]
}
```
#### Запуск
Для Linux можно использовать модуль SystemD, который лежит в корне проекта. Конфигурационный файл должен лежать рядом с файлом .jar
```
[Unit]
Description=JIrcBot
After=network.target
[Service]
User=bvn13
WorkingDirectory=/srv/jircbot
ExecStart=/usr/bin/java -jar /srv/jircbot/jircbot-1.1.2.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
```
В противном случае можно использовать запуск из командной строки.
```bash
> java -jar target/jircbot-1.1.2.jar
```