From 74b2dff9f55a7377d72338f02b628703d3532690 Mon Sep 17 00:00:00 2001 From: Bohdan Horbeshko Date: Tue, 22 Jul 2025 14:54:14 -0400 Subject: [PATCH] Properly yield a 403 error when banned from a supergroup --- xmpp/handlers.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/xmpp/handlers.go b/xmpp/handlers.go index 647f0b1..9e00976 100644 --- a/xmpp/handlers.go +++ b/xmpp/handlers.go @@ -601,8 +601,9 @@ func handleMUCPresence(s xmpp.Sender, p stanza.Presence, mucExt stanza.MucPresen } status := session.GetMyStatusInChat(chatId) - // TODO: seems to be impossible for basic groups, check back when supergroups are supported - if status == telegram.ChatMemberStatusBanned { + log.Debugf("status in group %v: %v", chatId, status) + switch status { + case telegram.ChatMemberStatusBanned, telegram.ChatMemberStatusIllegal: presenceReplySetError(reply, 403) return } @@ -2093,6 +2094,9 @@ func presenceReplySetError(reply *stanza.Presence, code int) { case 400: reply.Error.Type = stanza.ErrorTypeModify reply.Error.Reason = "jid-malformed" + case 403: + reply.Error.Type = stanza.ErrorTypeAuth + reply.Error.Reason = "forbidden" case 404: reply.Error.Type = stanza.ErrorTypeCancel reply.Error.Reason = "item-not-found"