handlematrix: fix delete chat (#125)

This commit is contained in:
Conan
2025-10-28 02:34:24 +08:00
committed by GitHub
parent 14f40abeca
commit 3aa7bdfa91
2 changed files with 26 additions and 27 deletions
-27
View File
@@ -741,30 +741,3 @@ func (t *TelegramClient) senderForUserID(userID int64) bridgev2.EventSender {
Sender: ids.MakeUserID(userID),
}
}
func (t *TelegramClient) HandleMatrixDeleteChat(ctx context.Context, chat *bridgev2.MatrixDeleteChat) error {
peerType, id, err := ids.ParsePortalID(chat.Portal.ID)
if err != nil {
return err
}
switch peerType {
case ids.PeerTypeUser:
if chat.Content.DeleteForEveryone {
_, err := t.client.API().MessagesDeleteHistory(ctx, &tg.MessagesDeleteHistoryRequest{
Peer: &tg.InputPeerUser{UserID: id},
Revoke: true,
MaxID: 0,
})
if err != nil {
return err
}
}
_, err = t.client.API().MessagesDeleteChat(ctx, id)
if err != nil {
return err
}
default:
return fmt.Errorf("deleting chat not supported for peer type %s", peerType)
}
return nil
}
+26
View File
@@ -799,3 +799,29 @@ func (t *TelegramClient) HandleRoomTag(ctx context.Context, msg *bridgev2.Matrix
})
return err
}
func (t *TelegramClient) HandleMatrixDeleteChat(ctx context.Context, chat *bridgev2.MatrixDeleteChat) error {
peerType, id, err := ids.ParsePortalID(chat.Portal.ID)
if err != nil {
return err
}
if chat.Portal.RoomType == database.RoomTypeDM {
if chat.Content.DeleteForEveryone {
_, err := t.client.API().MessagesDeleteHistory(ctx, &tg.MessagesDeleteHistoryRequest{
Peer: &tg.InputPeerUser{UserID: id},
Revoke: true,
MaxID: 0,
})
if err != nil {
return err
}
}
_, err = t.client.API().MessagesDeleteChat(ctx, id)
if err != nil {
return err
}
} else {
return fmt.Errorf("deleting chat not supported for peer type %s", peerType)
}
return nil
}