微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法通过 RestUserMessage 获取消息

如何解决无法通过 RestUserMessage 获取消息

遇到一个奇怪的问题。初始化任何命令后,当用户添加反应时,我无法收到消息。 DebugMode 没有显示任何异常,程序继续运行,但代码只是在获取消息的行处停止。奇怪的是,重新启动程序后,如果命令没有初始化,我可以从通道中获取消息。

在这个 GIF 中,我预先初始化了命令“hi”。

enter image description here

命令代码

public class Module : ModuleBase<SocketCommandContext>
{
    [Command("hi")]
    public async Task Hi()
    {
        string hi = "Hi";
    }
}

OnReaction 代码

private async Task OnReactionAdded(Cacheable<IUserMessage,ulong> arg1,ISocketMessageChannel arg2,SocketReaction arg3)
{
    IEnumerable<IMessage> messages = await arg2.GetMessagesAsync(2).FlattenAsync();
    var message = (RestUserMessage)await arg2.GetMessageAsync(messages.First().Id); //Just stops the execution of the code after use any command
}

解决方法

问题是 arg2 只接受 SocketUserMessage,我尝试通过 RestUserMessage 来完成。尽管目前还不清楚为什么可以通过 RestUserMessage 检索机器人启动之前存在的消息,而机器人发送的新消息只能由 SocketUserMessage 读取。

我的代码:

private async Task OnReactionAdded(Cacheable<IUserMessage,ulong> arg1,ISocketMessageChannel arg2,SocketReaction arg3)
{
    IEnumerable<IMessage> messages = await arg2.GetMessagesAsync(2).FlattenAsync();
    var message = (SocketUserMessage)await arg2.GetMessageAsync(messages.First().Id); 
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。