Как ждать реакции автора на discord.net - PullRequest
0 голосов
/ 22 января 2020

Итак, я нахожусь в процессе написания бота, и я пытаюсь сделать подтверждение, когда автору необходимо действовать, реагируя на сообщение в качестве подтверждения. Я пытался искать в другом месте, но безрезультатно. Любая помощь будет оценена.

if (File.Exists(Program.channelLocation))
        {
            var msgR = await msg.Channel.SendMessageAsync($"Channel is currently set to: {File.ReadAllText(Program.channelLocation)}. Are you sure you want to change this?");

            var emoji = new Discord.Emoji("✅");

            await msgR.AddReactionAsync(emoji);

            var reactedUsers = await msgR.GetReactionUsersAsync(emoji, 100).FlattenAsync();

            IUser user = msg.Author;

            bool run = true;

            Console.WriteLine("loop started");

            while (run)
            {
                if (reactedUsers.Contains(user))
                {
                    run = false;
                    break;
                }
            }

            Console.WriteLine("loop ended");
        }

1 Ответ

0 голосов
/ 22 января 2020

Вам необходимо использовать событие SocketClient.ReactionAdded .

Вот базовая c реализация события ReactionAdded (не тестировалась, может быть неверной):

public class Bot {
    public DiscordSocketClient client;

    public Bot() {
        //Initialize your client here...
        client = new DiscordSocketClient(/* ... */);

        client.ReactionAdded += ReactionAdded_Event;
    }

    public void ReactionAdded_Event(Cacheable<IUserMessage, UInt64> message, ISocketMessageChannel channel, SocketReaction reaction)
    {
        //Check if the message is in the right channel, if it's the emoji you want, etc...
    }
}
...