请问MessageReceipt如何判断是否可撤回(超时/已撤回/权限不足)
-
如题,使用场景是程序需要oauth授权链接,想当认证成功后及时撤回防止多次认证,现在是使用了map存储返回的消息,另开一个线程当得到授权后撤回消息并从map中删除messagereceipt,不过因为有一些小伙伴拿到了授权链接但是不去认证或者超出了可撤回时间,导致messagereceipt无法删除发生内存泄漏,请问有什么办法解决
另外有没有办法可以拿到MessageReceipt的特征值(尽可能使基本类型,类似于消息id这种)可以通过bot获取可撤回的消息,尽量减少重复代码(
偷懒 -
MessageReceipt.source
-
@cssxsh 这个似乎没有验证是否可以撤回
-
撤回的时候catch就可以了?
-
@nambers 目前我的解决办法是封装一个类,包含receipt跟撤回时限时间戳,catch也是一种办法XDDD
-
写一个扩展属性就好
-
在撤回的时候直接撤回, 用
try-catch
包装一下, 并删除引用如果撤回不了后面继续尝试也是撤回不了的, 不管撤回结果直接移除引用即可
-
@karlatemp 虽然是可以啦,主要是异常我都交由全局异常处理了,会写一大堆奇怪的logXD
-
可以定义一个新的方法来撤回
internal suspend fun MessageSource.recallNoError() { kotlin.runCatching { this.recall() } }
-
@karlatemp 好,灰常感谢大佬!