2017-10-14 38 views
0

我使用Discord.NET版本1.0.2,以澄清一些事情Discord.NET添加反应到SocketMessage

我有一个的messageReceived任务在我的不和谐机器人的应用程序:

private async Task MessageReceived(SocketMessage message) 

这个任务,正如已经可以扣除的那样,每当收到一条消息在Discord收到这个机器人。然而,我正试图弄清楚如何向bot收到的消息添加一个反应。在SocketMessage下,没有方法可以对接收到的消息添加反应。我在网上查找,发现RestUserMessage包含方法AddReactionAsync(IEmote, RequestOptions)。然后我铸造Socket MessageRestUserMessage为下我的变量rMessageRestUserMessage作品如此

var rMessage = (RestUserMessage) await message.Channel.GetMessageAsync(message.Id); 

运行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 

回答

0

如果你头向Emojipedia,并抓住Unicode版本,如下图所示: enter image description here

之后被复制,你必须创建一个新的Emoji对象,像这样:

var YourEmoji = new Emoji(""); 

然后,您可以添加到所需的信息的反应,我要去使用Context.Message

Context.Message.AddReactionAsync(YourEmoji); 
0

未知的解决方案适用于常规的表情,但不会为特定的行会表情工作。

这是我想出了解决方案:

SocketGuildChannel guild = message.Channel as SocketGuildChannel; 
IEmote emote = guild.Emotes.First(e => e.Name = "my-custom-emote"); 
message.AddReactionAsync(emote);