Проверка реакции в раздоре. Net (C#) - PullRequest
0 голосов
/ 21 марта 2020

Мне нужна помощь с Discord. Net. У меня записана следующая команда:


    [Command("project", RunMode=RunMode.Async)]
    public async Task Project(string action, string id="")
    {
        switch(action)
        {
            case "post":
                {
                    StringCreator tagger = new StringCreator();
                    string index = tagger.Get(5);
                    var project=await Context.Guild.CreateTextChannelAsync("project-id-" + index);

                    var message = await project.SendMessageAsync("What language is this project in?");
                    var rMessage = message.Id;
                    await message.AddReactionAsync(new Emoji("??"));
                    await message.AddReactionAsync(new Emoji("??"));
                    await message.AddReactionAsync(new Emoji("??"));

                    break;
                }
         }

Теперь я попытался создать событие, подобное этому:

 public async Task OnReactionAddedEvent(SocketReaction reaction)
        {
            if (reaction.Emote.Name == "??")
            {
                vars.projectLang = "English";
            }

            if (reaction.Emote.Name == "??")
            {
                vars.projectLang = "Hebrew";
            }

            if (reaction.Emote.Name == "??")
            {
                vars.projectLang = "Romanian";
            }

        }

Если я попытаюсь использовать его таким образом, прямо перед перерывом в моем командная функция:

_discord.ReactionAdded += OnReactionAddedEvent;

Я попытался отредактировать свой метод событий, чтобы взять мараметр как кешируемый, но безуспешно:

public async Task OnReactionAddedEvent(Cacheable<SocketReaction> reaction)
        {
            if (reaction.Emote.Name == "??")
            {
                vars.projectLang = "English";
            }

            if (reaction.Emote.Name == "??")
            {
                vars.projectLang = "Hebrew";
            }

            if (reaction.Emote.Name == "??")
            {
                vars.projectLang = "Romanian";
            }

        }

Что бы я ни делал, объявляя его в методе команды, все утверждение отображается как ошибка. Я в растерянности, пожалуйста, помогите. Заранее спасибо!

...