2017-10-14 9 views
0

J'utilise la version 1.0.2 Discord.NET pour éclaircir les chosesDiscord.NET Ajout des réactions à un SocketMessage

J'ai MessageReceived tâche dans ma Discorde application Bot:

private async Task MessageReceived(SocketMessage message) 

Cette tâche, comme peut déjà être déduit, s'exécute chaque fois qu'un message est reçu en Discord à ce bot. J'essaie de comprendre comment ajouter une réaction à un message que le bot a reçu, cependant. Sous SocketMessage il n'y a pas de méthodes pour ajouter des réactions au message reçu. J'ai regardé en ligne et a trouvé que RestUserMessage contient la méthode AddReactionAsync(IEmote, RequestOptions). Je puis Casted Socket Message à un RestUserMessage comme si

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

L'exécution de la méthode AddReactionAsync sous mes variables rMessage pour RestUserMessage œuvres, mais les paramètres ne sont pas pris correctement que je perçois de ma lecture en ligne et la documentation.

IEmoteIEmote semble être une chaîne, mais une chaîne ne remplit pas ce paramètre, en disant qu'il n'y a pas de conversion d'un String à un IEmote. J'ai essayé de lancer ce String à IEmote mais cela n'a pas fonctionné. La variable RequestOptions semble remplir parfaitement le paramètre comme new RequestOptions().

Mon code complet pour c'est:

private async Task MessageReceived(SocketMessage message) 
{ 
    var rMessage = (RestUserMessage) await message.Channel.GetMessageAsync(message.Id); 
    rMessage.AddReactionAsync(???, new RequestOptions()); 
} 

Comment puis-je remplir cette comment et ou correctement le paramètre IEmote-je définir une variable IEmote. De plus, la définition d'une variable new RequestOptions() est également la bonne chose pour remplir ce paramètre. Est-ce aussi la bonne façon d'ajouter des réactions à un message via Discord.NET et si ce n'est pas le cas?

La recherche que je l'ai fait:

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 

Répondre

0

Si vous vous dirigez vers Emojipedia, et prenez la version unicode comme indiqué ci-dessous: enter image description here

Après cela est copié, vous devez créer un nouveau objet Emoji, comme ceci:

var YourEmoji = new Emoji(""); 

Vous pouvez ensuite ajouter une réaction au message désiré, je vais utiliser Context.Message:

Context.Message.AddReactionAsync(YourEmoji); 
0

solution de Unknown travaille pour emotes réguliers, mais ne fonctionnera pas pour emotes spécifiques à la guilde.

C'est la solution que je suis venu avec:

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