Exemple #1
0
        public static async Task <IVoteable> DoVote(List <IVoteable> options, int seconds)
        {
            Dictionary <Emoji, IVoteable> tracker = new Dictionary <Emoji, IVoteable>();

            EmbedBuilder embed = new EmbedBuilder()
            {
                Color = new Color(0, 100, 255),
                Title = "Vote:"
            };

            //string mes = "|";

            foreach (IVoteable option in options)
            {
                if (!tracker.ContainsKey(option.GetEmote()))
                {
                    tracker.Add(option.GetEmote(), option);
                    //mes += $" {option.GetName()} = {option.GetEmote()} |";

                    embed.AddField((efb) =>
                    {
                        efb.Name  = option.GetName();
                        efb.Value = option.GetEmote();
                    });
                }
            }

            RestUserMessage msg = await VoopAI.gameChannel.SendMessageAsync(embed : embed.Build());

            List <Emoji> distinct = new List <Emoji>();

            Emoji c = null;

            try
            {
                foreach (Emoji e in tracker.Keys)
                {
                    c = e;
                    await msg.AddReactionAsync(e);
                }
            }
            catch (System.Exception e)
            {
                await(gameChannel.SendMessageAsync(e.ToString()));
                await(gameChannel.SendMessageAsync(c.ToString()));
            }


            Thread.Sleep(seconds * 1000);

            IEmote chosen = tracker.Keys.PickRandom();
            int    top    = 0;

            IUserMessage liveMessage = (IUserMessage)await VoopAI.gameChannel.GetMessageAsync(msg.Id);

            foreach (KeyValuePair <IEmote, ReactionMetadata> pair in liveMessage.Reactions)
            {
                //await VoopAI.gameChannel.SendMessageAsync($"DEBUG: {pair.Key.Name} = {pair.Value.ReactionCount}");

                if (pair.Value.ReactionCount > top)
                {
                    top    = pair.Value.ReactionCount;
                    chosen = pair.Key;
                }
            }

            IVoteable obj = tracker[new Emoji(chosen.Name)];

            await VoopAI.gameChannel.SendMessageAsync($"You have chosen [ {obj.GetName()} ]");

            Thread.Sleep(5000);

            return(obj);
        }