From 9a9516e80dc94a5e9bdc185d53b79713020b0f67 Mon Sep 17 00:00:00 2001 From: eleksir Date: Fri, 24 Nov 2023 01:14:38 +0300 Subject: [PATCH] Properly detect ban event source (wether we are in src room or not) --- event_parser.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/event_parser.go b/event_parser.go index a2d5222..9982502 100644 --- a/event_parser.go +++ b/event_parser.go @@ -386,10 +386,14 @@ func parseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo case v.To == talk.JID() && v.ID == "ban1": mucNickMatch := false + // Если ник, которому предназначается сообщение, совпадает с ником, из конфига бота (глобального или для + // комнаты), то считаем, что мы есть в этой комнате. Потому что в противном случае в roomsConnected не + // будет искомой комнаты и мы не сможем составить ник бота, чтобы сравнить его с тем, кому адресовано + // уведомление. for _, room := range roomsConnected { mucNick := fmt.Sprintf("%s/%s", room, getBotNickFromRoomConfig(room)) - if v.From == mucNick { + if v.To == mucNick { mucNickMatch = true break @@ -403,6 +407,7 @@ func parseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo if err := xml.Unmarshal(v.Query, &iqStruct); err == nil { if iqStruct.Xmlns == "http://jabber.org/protocol/muc#admin" && iqStruct.Text == "" { + if mucNickMatch { // Поскольку никакой логики у нас на этот счёт не предусмотрено, то просто пропускаем ответ log.Infof("Got ban successful from %s to %s", v.From, v.To)