Beispiel #1
0
        public async Task NewVote([Remainder] string selection = "")
        {
            try {
                //Create instance of servers and votes if it does not already exist.
                if (ServersAndVotes == null)
                {
                    ServersAndVotes = new Dictionary <ulong, RankedServerVote>();
                }

                //Vote has already started, do not continue
                if (ServersAndVotes.ContainsKey(Context.Guild.Id))
                {
                    await Context.Channel.SendMessageAsync("A vote is already running, please end the current one before starting a new one!");

                    return;
                }
                ServerData sd   = ServerData.Get(Context.Guild);
                Movie[]    movs = null;
                if (selection == "")
                {
                    //Get the movies to vote on
                    movs = sd.GetMovieSelection(sd.MovieVoteOptionCount);
                }
                else
                {
                    string[] titles = selection.Split(";");
                    movs = new Movie[titles.Length];
                    for (int i = 0; i < movs.Length; i++)
                    {
                        movs[i]       = new Movie();
                        movs[i].Title = titles[i];
                    }
                }
                //Generate the ranked vote object
                RankedServerVote serverVote = new RankedServerVote(Context.Guild, movs, Context.Channel);

                //build and send out the voting embed
                Embed embed = serverVote.MakeVoteEmbed();
                //Send the message out
                RestUserMessage mess = await Context.Channel.SendMessageAsync("Movie Vote!!!", embed : embed).ConfigureAwait(false);

                Emoji[] votes = new Emoji[movs.Length + 1];
                //React with the voting reactions
                for (int i = 0; i < movs.Length; i++)
                {
                    votes[i] = MojiCommand.VoteMoji[i];
                }
                votes[votes.Length - 1] = MojiCommand.CommandMoji[1];
                await mess.AddReactionsAsync(votes);

                //Finally add this vote object to the dictionary for later reference
                serverVote.voteMessage = mess;
                ServersAndVotes.Add(Context.Guild.Id, serverVote);
            } catch (DataException ex) {
                await Program.Instance.Log(new LogMessage(LogSeverity.Error, "Voting", "A data related exception was raised.", ex));

                await Context.Channel.SendMessageAsync("I'm not really sure what happened but something went wrong while executing that command, sorry. :flushed:");
            } catch (Exception ex) {
                await Program.Instance.Log(new LogMessage(LogSeverity.Error, "Voting", "A general exception was raised.", ex));

                await Context.Channel.SendMessageAsync("I'm not really sure what happened but something went wrong while executing that command, sorry. :flushed:");
            }
        }