chat.onMessageDeleted(handler). This is a lifecycle event
and does not route through normal message handlers.
Unlike every other handler this receives an event rather than
(thread, message). A delete has no message: platforms usually report only
the id of what was removed, and previousMessage is best-effort. Handing
over a Thread built from nothing would imply context that is not there.
Call chat.thread(event.threadId) when you need one, for example to post a
notice in the conversation the message was removed from.