【发布时间】:2018-03-26 05:13:53
【问题描述】:
我正在使用 Discord.NET 1.0.2 版进行清理
我的 Discord Bot 应用程序中有一个 MessageReceived 任务:
private async Task MessageReceived(SocketMessage message)
这个任务,正如已经可以推断的那样,每次在 Discord 中收到此机器人的消息时都会运行。但是,我试图弄清楚如何对机器人收到的消息添加反应。在SocketMessage 下,没有任何方法可以对收到的消息添加反应。上网查了一下,发现RestUserMessage里面包含了AddReactionAsync(IEmote, RequestOptions)这个方法。然后我将Socket Message 转换为RestUserMessage
var rMessage = (RestUserMessage) await message.Channel.GetMessageAsync(message.Id);
在我的变量rMessage 下为RestUserMessage 运行AddReactionAsync 方法可以工作,但是从我的在线阅读和文档中可以看出,参数没有正确获取。
IEmote 看起来是一个字符串,但是一个字符串不满足这个参数,说明没有从String 到IEmote 的转换。我尝试将此String 转换为IEmote,但没有成功。
RequestOptions 变量似乎与 new RequestOptions() 一样完美地满足了参数。
我的完整代码是:
private async Task MessageReceived(SocketMessage message)
{
var rMessage = (RestUserMessage) await message.Channel.GetMessageAsync(message.Id);
rMessage.AddReactionAsync(???, new RequestOptions());
}
我如何正确地实现这个IEmote 参数,或者我如何定义一个IEmote 变量。此外,定义new RequestOptions() 变量是否也是满足此参数的正确方法。这也是通过 Discord.NET 对消息添加反应的正确方法吗?如果不是,那是什么?
我所做的研究:
https://github.com/RogueException/Discord.Net/issues/490
https://discord.foxbot.me/docs/api/Discord.Rest.RestUserMessage.html
https://discord.foxbot.me/docs/api/Discord.IEmote.html
https://discord.foxbot.me/docs/api/Discord.RequestOptions.html
【问题讨论】:
标签: c# discord discord.net