Fix existing comments, add some new

This commit is contained in:
eleksir
2023-11-24 01:12:51 +03:00
parent 420ed7d932
commit ea6e562928
4 changed files with 18 additions and 6 deletions

View File

@@ -14,7 +14,8 @@
- по совпадению с регулярными выражениями в nick-е или jid-е злодея - по совпадению с регулярными выражениями в nick-е или jid-е злодея
- по регулярным выражениям характерных фраз. - по регулярным выражениям характерных фраз.
- Правила можно настроить как глобально, для всех комнат, где присутствует бот, так и для каждой комнаты отдельно. - Правила можно настроить как глобально, для всех комнат, где присутствует бот, так и для каждой комнаты отдельно.
- При изменении списка правил бота не надо перезапускать, достаточно отдать ему команду rehash либо в приват, либо прям в чатике. - При изменении списка правил бота не надо перезапускать, достаточно отдать ему команду rehash либо в приват, либо
прям в чатике.
* Есть настройка заходить в разные комнаты под разными никами * Есть настройка заходить в разные комнаты под разными никами
## Что он не может? ## Что он не может?

View File

@@ -10,6 +10,7 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
) )
// cmd парсит команды из чятика.
func cmd(v xmpp.Chat) error { func cmd(v xmpp.Chat) error {
var err error var err error

2
lib.go
View File

@@ -696,6 +696,8 @@ func getRealJIDfromNick(fullNick string) string {
return "" return ""
} }
// getBotNickFromRoomConfig достаёт из настроек комнаты короткий ник бота, либо берёт значение из конфига, если ник в
// настройках комнаты не задан. Короткий ник не содержит название комнаты.
func getBotNickFromRoomConfig(room string) string { func getBotNickFromRoomConfig(room string) string {
for _, roomStruct := range config.Jabber.Channels { for _, roomStruct := range config.Jabber.Channels {
if roomStruct.Name == room { if roomStruct.Name == room {

18
main.go
View File

@@ -15,6 +15,7 @@ import (
"gopkg.in/tomb.v1" "gopkg.in/tomb.v1"
) )
// init начальная подготовка: чтение и валидация конфига, инициализация логгера.
func init() { func init() {
log.SetFormatter(&log.TextFormatter{ //nolint:exhaustruct log.SetFormatter(&log.TextFormatter{ //nolint:exhaustruct
DisableQuote: true, DisableQuote: true,
@@ -49,6 +50,7 @@ func init() {
} }
} }
// main - фактичеки начало и соновное тело программы.
func main() { func main() {
// Откроем лог и скормим его логгеру // Откроем лог и скормим его логгеру
if config.Log != "" { if config.Log != "" {
@@ -127,6 +129,7 @@ func main() {
} }
} }
// Основной цикл программы
func myLoop() { func myLoop() {
for { for {
select { select {
@@ -152,15 +155,17 @@ func myLoop() {
// Установим коннект // Установим коннект
establishConnection() establishConnection()
serverPingTimestampRx = time.Now().Unix() // Считаем, что если коннект запустился, то первый пинг успешен serverPingTimestampRx = time.Now().Unix() // Считаем, что если коннект запустился, то первый пинг успешен.
// Тыкаем сервер палочкой, проверяем, что коннект жив и переустанавливаем его, если он не жив // Тыкаем сервер палочкой, проверяем, что коннект жив и вываливаемся из mainLoop, если он не жив.
go probeServerLiveness() go probeServerLiveness()
// Тыкаем muc-и палочкой, проверяем, что они живы и пере-заходим в них, если пинги пропали // Тыкаем muc-и палочкой, проверяем, что они живы и вываливаемся из mainLoop, если пинги пропали.
// Если пинги до комнаты пропали, то это фактически значит, что либо сервер потерял связь с MUC-компонентом,
// либо у нас какой-то wire error.
go probeMUCLiveness() go probeMUCLiveness()
// Гребём сообщения... // Гребём ивенты...
for { for {
// Стриггерилось завершение работы приложения, или соединение не установлено (порвалось, например) // Стриггерилось завершение работы приложения, или соединение не установлено (порвалось, например)
// грести не надо // грести не надо
@@ -169,9 +174,12 @@ func myLoop() {
} }
if !isConnected { if !isConnected {
// Tight loop - это наверно не очень хорошо, думаю, ничего страшного не будет, если мы поспим 100мс.
time.Sleep(100 * time.Millisecond)
continue continue
} }
// Вынимаем ивент из "провода"
chat, err := talk.Recv() chat, err := talk.Recv()
if err != nil { if err != nil {
@@ -194,7 +202,7 @@ func myLoop() {
// Не сетевая проблема // Не сетевая проблема
default: default:
// Это уже что-то странное. // Это уже что-то странное.
// Вероятно, ошибка парсинга xml. Собственно, баг сервера, тут мы ничего поделать не можем // Вероятно, ошибка парсинга xml. Собственно, баг сервера, тут мы ничего поделать не можем.
err = fmt.Errorf("error during parsing received message, err=%w", err) err = fmt.Errorf("error during parsing received message, err=%w", err)
} }