如何解决无法通过 RestUserMessage 获取消息
遇到一个奇怪的问题。初始化任何命令后,当用户添加反应时,我无法收到消息。 DebugMode 没有显示任何异常,程序继续运行,但代码只是在获取消息的行处停止。奇怪的是,重新启动程序后,如果命令没有初始化,我可以从通道中获取消息。
在这个 GIF 中,我预先初始化了命令“hi”。
命令代码:
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 举报,一经查实,本站将立刻删除。