Properly detect ban event source (wether we are in src room or not)

This commit is contained in:
eleksir
2023-11-24 01:14:38 +03:00
parent ea6e562928
commit 9a9516e80d

View File

@@ -386,10 +386,14 @@ func parseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo
case v.To == talk.JID() && v.ID == "ban1": case v.To == talk.JID() && v.ID == "ban1":
mucNickMatch := false mucNickMatch := false
// Если ник, которому предназначается сообщение, совпадает с ником, из конфига бота (глобального или для
// комнаты), то считаем, что мы есть в этой комнате. Потому что в противном случае в roomsConnected не
// будет искомой комнаты и мы не сможем составить ник бота, чтобы сравнить его с тем, кому адресовано
// уведомление.
for _, room := range roomsConnected { for _, room := range roomsConnected {
mucNick := fmt.Sprintf("%s/%s", room, getBotNickFromRoomConfig(room)) mucNick := fmt.Sprintf("%s/%s", room, getBotNickFromRoomConfig(room))
if v.From == mucNick { if v.To == mucNick {
mucNickMatch = true mucNickMatch = true
break break
@@ -403,6 +407,7 @@ func parseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo
if err := xml.Unmarshal(v.Query, &iqStruct); err == nil { if err := xml.Unmarshal(v.Query, &iqStruct); err == nil {
if iqStruct.Xmlns == "http://jabber.org/protocol/muc#admin" && iqStruct.Text == "" { if iqStruct.Xmlns == "http://jabber.org/protocol/muc#admin" && iqStruct.Text == "" {
if mucNickMatch { if mucNickMatch {
// Поскольку никакой логики у нас на этот счёт не предусмотрено, то просто пропускаем ответ // Поскольку никакой логики у нас на этот счёт не предусмотрено, то просто пропускаем ответ
log.Infof("Got ban successful from %s to %s", v.From, v.To) log.Infof("Got ban successful from %s to %s", v.From, v.To)