diff --git a/pkg/whatsmeow/service/whatsmeow.go b/pkg/whatsmeow/service/whatsmeow.go index 366f0edb..d016db65 100644 --- a/pkg/whatsmeow/service/whatsmeow.go +++ b/pkg/whatsmeow/service/whatsmeow.go @@ -1817,12 +1817,15 @@ func (mycli *MyClient) myEventHandler(rawEvt interface{}) { doWebhook = true postMap["event"] = "Archive" - dataMap := postMap["data"].(map[string]interface{}) - dataMap["JID"] = evt.JID - dataMap["Timestamp"] = evt.Timestamp - dataMap["Action"] = evt.Action - dataMap["FromFullSync"] = evt.FromFullSync - postMap["data"] = dataMap + // postMap has no "data" key at this point, so asserting it as a map + // panics the whole process whenever a chat is (un)archived on the phone. + // Build the payload map directly instead. + postMap["data"] = map[string]interface{}{ + "JID": evt.JID, + "Timestamp": evt.Timestamp, + "Action": evt.Action, + "FromFullSync": evt.FromFullSync, + } mycli.loggerWrapper.GetLogger(mycli.userID).LogInfo("[%s] Chat archived", mycli.userID) case *events.HistorySync: