无法通过 RestUserMessage 获取消息
Can't get a message through 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
来完成。虽然目前还不清楚为什么在 bot 启动之前存在的消息可以通过 RestUserMessage
检索,而 bot 发送的新消息只能被 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);
}
遇到了一个奇怪的问题。初始化任何命令后,当用户添加反应时我无法收到消息。 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
来完成。虽然目前还不清楚为什么在 bot 启动之前存在的消息可以通过 RestUserMessage
检索,而 bot 发送的新消息只能被 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);
}