Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

撤回他人消息时出错 #55

Closed
ColorfulGhost opened this issue Aug 21, 2020 · 19 comments
Closed

撤回他人消息时出错 #55

ColorfulGhost opened this issue Aug 21, 2020 · 19 comments
Labels
bug Something isn't working question Further information is requested

Comments

@ColorfulGhost
Copy link

 01:54:33 [DEBUG] [CQHTTPMirai] HTTP API response: {"status":"async","retcode":1,"data":null,"echo":null}
 01:54:33 [ERROR] [CQHTTPMirai] java.util.NoSuchElementException
        at tech.mihoyo.mirai.web.queue.CacheSourceQueue.get(CacheSourceQueue.kt:18)
        at tech.mihoyo.mirai.web.queue.CacheSourceQueue.get(CacheSourceQueue.kt:14)
        at tech.mihoyo.mirai.MiraiApi.cqDeleteMessage(MiraiApi.kt:138)
        at tech.mihoyo.mirai.MiraiApiKt.callMiraiApi(MiraiApi.kt:25)
        at tech.mihoyo.mirai.web.http.HttpApiModuleKt$cqHttpApiServer$1$$special$$inlined$cqHttpApi$10$2$1.invokeSuspend(HttpApiModule.kt:308)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:738)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)


MiraiOK
版本:cqhttp-mirai-0.2.1-all .jar
框架:PicqBotX
调用撤回消息接口报错

@yyuueexxiinngg
Copy link
Owner

是否Bot接入大量群或接收的消息频率很高?

@ColorfulGhost
Copy link
Author

是否Bot接入大量群或接收的消息频率很高?

没有呀.....就1个QQ群,群里就3个人 专门用来开发时候测试的BOT.....
1个正常在线使用的BOT,共用一个CQHTTPMirai...
使用场景就这样 OAO

@ColorfulGhost
Copy link
Author

能否在控制台里加上消息ID,更新到最新版本撤回还是报错,我怀疑是不是找不到这个消息
image

@yyuueexxiinngg
Copy link
Owner

这个问题我一直无法复现, 报错是因为保存的列表中找不到消息发送回执, 但这个保存操作是在发送消息后就执行了的

https://github.com/yyuueexxiinngg/cqhttp-mirai/blob/master/src/main/kotlin/tech/mihoyo/mirai/MiraiApi.kt#L114-L117

image
image

@yyuueexxiinngg yyuueexxiinngg added the question Further information is requested label Aug 26, 2020
@rongzhongyang
Copy link

我碰到同样的问题。
mirai-core-qqandroid-1.2.2.jar
版本:cqhttp-mirai-0.2.3-all .jar
框架:Nonebot

@yyuueexxiinngg
Copy link
Owner

是否在尝试撤回他人消息?

@rongzhongyang
Copy link

是的。群消息撤回失败。2.1和2.3都是

@yyuueexxiinngg yyuueexxiinngg added the bug Something isn't working label Aug 30, 2020
@yyuueexxiinngg yyuueexxiinngg changed the title 撤回功能无法使用 撤回他人消息时出错 Aug 30, 2020
@1523789353
Copy link

撤回失败时aiohttp会报retcode:103

翻阅大量CQhttp相关文档后了解到, 103 代表: [操作失败,一般是因为用户权限不足,或文件系统异常/不符合预期]

https://github.com/howmanybots/onebot/blob/master/legacy/API.md

@rongzhongyang
Copy link

谢谢!我已前用酷Q pro版时是可以撤回的。因为pro才有撤回功能。air版是没有的。会不会有可能是mirai没有撤回权限啊!QQ是有权限的,可以手动撤回。

@1523789353
Copy link

按道理说mirai也能撤回啊

@yyuueexxiinngg
Copy link
Owner

可以撤回, 这是插件的BUG, 没有保存别人的消息导致找不到

@rongzhongyang
Copy link

是我的代码问题吗?我用的是nonebot。在代码中可以获取到消息ID,
if words in messageText:
try:
print("内容包含文字:"+messageText)
await bot.delete_msg(message_id=ctx['message_id'])
except:
print("撤回消息失败!id:",ctx['message_id'])
能打印出消息ID

@1523789353
Copy link

我也是,消息ID有,撤回不了

并且yobot和hoshino(nonebot)我都做了尝试

@ColorfulGhost
Copy link
Author

可以撤回, 这是插件的BUG, 没有保存别人的消息导致找不到

dalao...不单单撤回他人消息报错 撤回自己的消息也报错.....

@1523789353
Copy link

使用get_msg API也报retcode103,估计也和这个有关

@ColorfulGhost
Copy link
Author

image
调试出send_group_msg_async不返回message_id

@China-Uncle
Copy link

可以撤回, 这是插件的BUG, 没有保存别人的消息导致找不到

请问,这个问题目前仍然没有解决方案嘛?

@ColorfulGhost
Copy link
Author

可以撤回, 这是插件的BUG, 没有保存别人的消息导致找不到

请问,这个问题目前仍然没有解决方案嘛?

有个兼容方案.... 不知道适用于你那边否

  1. 在发送消息的时候不要使用异步API
  2. 给messageId + 1

@China-Uncle
Copy link

China-Uncle commented Oct 25, 2020

可以撤回, 这是插件的BUG, 没有保存别人的消息导致找不到

请问,这个问题目前仍然没有解决方案嘛?

有个兼容方案.... 不知道适用于你那边否

  1. 在发送消息的时候不要使用异步API
  2. 给messageId + 1

貌似唯一的办法就是在将接收的信息也保存起来然后进行撤回

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working question Further information is requested
Projects
None yet
Development

No branches or pull requests

5 participants