Fix existing comments, add some new
This commit is contained in:
@@ -14,7 +14,8 @@
|
||||
- по совпадению с регулярными выражениями в nick-е или jid-е злодея
|
||||
- по регулярным выражениям характерных фраз.
|
||||
- Правила можно настроить как глобально, для всех комнат, где присутствует бот, так и для каждой комнаты отдельно.
|
||||
- При изменении списка правил бота не надо перезапускать, достаточно отдать ему команду rehash либо в приват, либо прям в чатике.
|
||||
- При изменении списка правил бота не надо перезапускать, достаточно отдать ему команду rehash либо в приват, либо
|
||||
прям в чатике.
|
||||
* Есть настройка заходить в разные комнаты под разными никами
|
||||
|
||||
## Что он не может?
|
||||
|
||||
@@ -10,6 +10,7 @@ import (
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
// cmd парсит команды из чятика.
|
||||
func cmd(v xmpp.Chat) error {
|
||||
var err error
|
||||
|
||||
|
||||
2
lib.go
2
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 {
|
||||
|
||||
18
main.go
18
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)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user