From ea6e5629289c0a55966d2bd0121d3e92bb11c2d8 Mon Sep 17 00:00:00 2001 From: eleksir Date: Fri, 24 Nov 2023 01:12:51 +0300 Subject: [PATCH] Fix existing comments, add some new --- README.md | 3 ++- commands.go | 1 + lib.go | 2 ++ main.go | 18 +++++++++++++----- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index a49937a..8dbc01b 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,8 @@ - по совпадению с регулярными выражениями в nick-е или jid-е злодея - по регулярным выражениям характерных фраз. - Правила можно настроить как глобально, для всех комнат, где присутствует бот, так и для каждой комнаты отдельно. - - При изменении списка правил бота не надо перезапускать, достаточно отдать ему команду rehash либо в приват, либо прям в чатике. + - При изменении списка правил бота не надо перезапускать, достаточно отдать ему команду rehash либо в приват, либо + прям в чатике. * Есть настройка заходить в разные комнаты под разными никами ## Что он не может? diff --git a/commands.go b/commands.go index 1d5bc87..87cd92c 100644 --- a/commands.go +++ b/commands.go @@ -10,6 +10,7 @@ import ( log "github.com/sirupsen/logrus" ) +// cmd парсит команды из чятика. func cmd(v xmpp.Chat) error { var err error diff --git a/lib.go b/lib.go index e99d69b..e435ad8 100644 --- a/lib.go +++ b/lib.go @@ -696,6 +696,8 @@ func getRealJIDfromNick(fullNick string) string { return "" } +// getBotNickFromRoomConfig достаёт из настроек комнаты короткий ник бота, либо берёт значение из конфига, если ник в +// настройках комнаты не задан. Короткий ник не содержит название комнаты. func getBotNickFromRoomConfig(room string) string { for _, roomStruct := range config.Jabber.Channels { if roomStruct.Name == room { diff --git a/main.go b/main.go index 34e646e..ce9c186 100644 --- a/main.go +++ b/main.go @@ -15,6 +15,7 @@ import ( "gopkg.in/tomb.v1" ) +// init начальная подготовка: чтение и валидация конфига, инициализация логгера. func init() { log.SetFormatter(&log.TextFormatter{ //nolint:exhaustruct DisableQuote: true, @@ -49,6 +50,7 @@ func init() { } } +// main - фактичеки начало и соновное тело программы. func main() { // Откроем лог и скормим его логгеру if config.Log != "" { @@ -127,6 +129,7 @@ func main() { } } +// Основной цикл программы func myLoop() { for { select { @@ -152,15 +155,17 @@ func myLoop() { // Установим коннект establishConnection() - serverPingTimestampRx = time.Now().Unix() // Считаем, что если коннект запустился, то первый пинг успешен + serverPingTimestampRx = time.Now().Unix() // Считаем, что если коннект запустился, то первый пинг успешен. - // Тыкаем сервер палочкой, проверяем, что коннект жив и переустанавливаем его, если он не жив + // Тыкаем сервер палочкой, проверяем, что коннект жив и вываливаемся из mainLoop, если он не жив. go probeServerLiveness() - // Тыкаем muc-и палочкой, проверяем, что они живы и пере-заходим в них, если пинги пропали + // Тыкаем muc-и палочкой, проверяем, что они живы и вываливаемся из mainLoop, если пинги пропали. + // Если пинги до комнаты пропали, то это фактически значит, что либо сервер потерял связь с MUC-компонентом, + // либо у нас какой-то wire error. go probeMUCLiveness() - // Гребём сообщения... + // Гребём ивенты... for { // Стриггерилось завершение работы приложения, или соединение не установлено (порвалось, например) // грести не надо @@ -169,9 +174,12 @@ func myLoop() { } if !isConnected { + // Tight loop - это наверно не очень хорошо, думаю, ничего страшного не будет, если мы поспим 100мс. + time.Sleep(100 * time.Millisecond) continue } + // Вынимаем ивент из "провода" chat, err := talk.Recv() if err != nil { @@ -194,7 +202,7 @@ func myLoop() { // Не сетевая проблема default: // Это уже что-то странное. - // Вероятно, ошибка парсинга xml. Собственно, баг сервера, тут мы ничего поделать не можем + // Вероятно, ошибка парсинга xml. Собственно, баг сервера, тут мы ничего поделать не можем. err = fmt.Errorf("error during parsing received message, err=%w", err) }