Discord.net можно ли программно добавить пользовательскую реакцию эмодзи сервера?

Мне интересно, есть ли способ добавить нестандартный смайлик, принадлежащий нашему серверу.

Это работает, например:

var context = new SocketCommandContext(_client, message as SocketUserMessage);
await context.Message.AddReactionAsync(new Emoji("????")).ConfigureAwait(false);

Но это не работает

var context = new SocketCommandContext(_client, message as SocketUserMessage);
await context.Message.AddReactionAsync(new Emoji(":MyCustomEmoji:")).ConfigureAwait(false);

Вопрос

Есть ли способ добавить собственный смайлик, который используется на нашем сервере? Если да, то объясните.


person Dan Beaulieu    schedule 13.11.2019    source источник


Ответы (1)


Нестандартными смайликами можно управлять с помощью класса эмоций. Вот ссылка на дополнительную документацию.

Это прямо взято из документации класса Emote, указанной выше.

public async Task SendAndReactAsync(ISocketMessageChannel channel)
{
    var message = await channel.SendMessageAsync("I am a message.");

    // Creates a Unicode-based emoji based on the Unicode string.
    // This is effectively the same as new Emoji("????").
    var heartEmoji = new Emoji("\U0001f495");
    // Reacts to the message with the Emoji.
    await message.AddReactionAsync(heartEmoji);

    // Parses a custom emote based on the provided Discord emote format.
    // Please note that this does not guarantee the existence of
    // the emote.
    var emote = Emote.Parse("<:thonkang:282745590985523200>");
    // Reacts to the message with the Emote.
    await message.AddReactionAsync(emote);
}

Допустимый формат эмоции: ‹: emoteName: emoteId>. Этого можно добиться, используя символ \ перед эмоцией в клиенте чата Discord.

person Anu6is    schedule 13.11.2019
comment
Я нашел это для будущих читателей. Позвоните context.Guild.Emotes, чтобы получить список эмоций гильдий. - person Dan Beaulieu; 14.11.2019
comment
Это все объясняется в связанной документации - To obtain the raw string as shown above for your emote, you would need to escape the emote using the escape character \ in chat somewhere. формат эмоции <:name:id>. Примечание. Контекст, о котором вы говорите, существует только в командных модулях. Но да, вы можете получить список эмоций для гильдии через объект SocketGuild. - person Anu6is; 14.11.2019