mirror of
https://github.com/tiennm99/goclaw.git
synced 2026-10-20 00:15:16 +00:00
fix(telegram): handle group-to-supergroup migration seamlessly
When a Telegram group upgrades to a supergroup, the chat ID changes and all existing references become stale. This caused send failures (400), orphaned sessions, and required manual re-pairing. Add dual-path migration handling: - Proactive: intercept inbound MigrateToChatID before isServiceMessage - Reactive: detect 400 + MigrateToChatID on send, migrate DB, retry DB migration updates in a single transaction (scoped by tenant + channel): - paired_devices: sender_id, chat_id - sessions: session_key, user_id - channel_contacts: sender_id - channel_pending_messages: history_key Also invalidates in-memory caches (approvedGroups, pairingReplySent, groupHistory) and handles media sends via migration retry in Send().
This commit is contained in:
1 parent
1dd5635f2b
commit
473679d28d
7 files changed
+203
-1
No files matched your search
@@ -139,6 +139,9 @@ func (m *mockPairingStore) IsPaired(_ context.Context, senderID, channel string)
|
||||
}
|
||||
func (m *mockPairingStore) ListPending(context.Context) []store.PairingRequestData { return nil }
|
||||
func (m *mockPairingStore) ListPaired(context.Context) []store.PairedDeviceData { return nil }
|
||||
func (m *mockPairingStore) MigrateGroupChatID(context.Context, string, string, string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func TestResolveAuth_GatewayToken(t *testing.T) {
|
||||
setupTestCache(t, nil)
|
||||
|
||||
Reference in new issue
Block a user