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:"); } }