Solved 【求助】消息发送失败时,从代码上如何得知?
-
例如:
fun handle(e: GroupMessageEvent) { e.group.sendMessage(groupMsg) }
但是
sendMessage
的定义是这样public interface Group { /** * 向这个对象发送消息. * * @throws EventCancelledException 当发送消息事件被取消时抛出 * @throws BotIsBeingMutedException 发送群消息时若 [Bot] 被禁言抛出 * @throws MessageTooLargeException 当消息过长时抛出 * @throws IllegalArgumentException 当消息内容为空时抛出 * * @return 消息回执. 可进行撤回 ([MessageReceipt.recall]) */ public override suspend fun sendMessage(message: Message): MessageReceipt<Group> }
在被风控、或者协议被改了等原因导致发送失败的时候,并不会抛出异常。在这种情况下,我应该如何得知发送失败了?(例如我希望打印一个错误日志)
-
-
可以参考MrXiaoM的mirai-console-dev-qrlogin插件
判断消息发送失败的代码在这里src/main/kotlin/QRLogin.kt#L63
-
@Cdm2883 在 【求助】消息发送失败时,从代码上如何得知? 中说:
可以参考MrXiaoM的mirai-console-dev-qrlogin插件
判断消息发送失败的代码在这里src/main/kotlin/QRLogin.kt#L63
照这样的话,直接拿
sendMessage
函数返回的MessageReceipt
可以不?例如:suspend fun handle(e: GroupMessageEvent) { val receipt: MessageReceipt<Group> = e.group.sendMessage(groupMsg) val ids = receipt.source.ids if (ids.isEmpty() || ids.any { it < 0 }) { logger.warning("群消息发送失败,你的账号可能已被风控") } }
-