private async Task SendQuestion(CommandContext ctx, Question question, ApplicationInProgress newApplication) { var thumbsUpEmoji = DiscordEmoji.FromName(ctx.Client, ":+1:"); var thumbsDownEmoji = DiscordEmoji.FromName(ctx.Client, ":-1:"); var questionMarkEmoji = DiscordEmoji.FromName(ctx.Client, ":question:"); DiscordEmoji[] emojis = new DiscordEmoji[3] { thumbsUpEmoji, thumbsDownEmoji, questionMarkEmoji }; var applicationEmbed = new DiscordEmbedBuilder { Title = question.Title, Description = question.Description, ThumbnailUrl = ctx.Client.CurrentUser.AvatarUrl, Color = DiscordColor.Green }; var message = await ctx.Member.SendMessageAsync(embed : applicationEmbed).ConfigureAwait(false); await AddReactions(message, emojis).ConfigureAwait(false); var interactivity = ctx.Client.GetInteractivityModule(); while (true) { var reactionResult = await interactivity.WaitForMessageReactionAsync( x => x.Name == thumbsUpEmoji || x.Name == thumbsDownEmoji || x.Name == questionMarkEmoji, message).ConfigureAwait(false); var role = ctx.Guild.GetRole(TEST_ROLE); if (reactionResult.Emoji == thumbsUpEmoji) { newApplication.AddResponse(question.Title + Environment.NewLine + "Yes" + Environment.NewLine); } else if (reactionResult.Emoji == thumbsDownEmoji) { newApplication.AddResponse(question.Title + Environment.NewLine + "No" + Environment.NewLine); } if (reactionResult.Emoji != questionMarkEmoji) { break; } await message.Channel.SendMessageAsync("help requested").ConfigureAwait(false); } }
public async Task StartApplication(CommandContext ctx, string applicationAppliedFor) { Application application = null; foreach (Application app in applications) { if (app.Title == applicationAppliedFor) { application = app; break; } } if (application == null) { return; } int questionsAnswered = 0; ApplicationInProgress applicationInProgress = new ApplicationInProgress(ctx, application); foreach (Question question in application.Questions) { await SendQuestion(ctx, question, applicationInProgress).ConfigureAwait(false); questionsAnswered++; } if (questionsAnswered < application.Questions.Count) { return; } await ctx.Member.SendMessageAsync("Application Finished").ConfigureAwait(false); var applicationEmbed = new DiscordEmbedBuilder { Title = applicationInProgress.Title, Description = applicationInProgress.GetApplicationResults(), ThumbnailUrl = ctx.Client.CurrentUser.AvatarUrl, Color = DiscordColor.Yellow }; var applicationMessage = await ctx.Guild.GetChannel(id : PENDING_RESPONSES_CHANNEL).SendMessageAsync(embed: applicationEmbed).ConfigureAwait(false); // real iffy here PendingApplication pendingApplication = new PendingApplication(applicationMessage, ctx.Member, applicationInProgress, applicationEmbed.Description); pendingApplications.Add(pendingApplication); SaveFinishedApplications(); // reaction role assignment var thumbsUpEmoji = DiscordEmoji.FromName(ctx.Client, ":+1:"); var thumbsDownEmoji = DiscordEmoji.FromName(ctx.Client, ":-1:"); DiscordEmoji[] emojis = new DiscordEmoji[2] { thumbsUpEmoji, thumbsDownEmoji }; await AddReactions(applicationMessage, emojis).ConfigureAwait(false); // I don't actualy know AddInteractivity(pendingApplication); //// actual reaction interactivity for application confirmation //var interactivity = ctx.Client.GetInteractivityModule(); //var reactionResult = await interactivity.WaitForMessageReactionAsync( //x => x.Name == thumbsUpEmoji || //x.Name == thumbsDownEmoji, //applicationMessage).ConfigureAwait(false); //var role = ctx.Guild.GetRole(TEST_ROLE); //if (reactionResult.Emoji == thumbsUpEmoji) //{ // await ctx.Member.GrantRoleAsync(role).ConfigureAwait(false); // await ctx.Member.SendMessageAsync("Your application for " + application.Title + " has been aprooved").ConfigureAwait(false); // applicationEmbed.Color = DiscordColor.Green; //} //else if (reactionResult.Emoji == thumbsDownEmoji) //{ // await ctx.Member.SendMessageAsync("Your application for " + application.Title + " has been denied").ConfigureAwait(false); // applicationEmbed.Color = DiscordColor.Red; //} //applicationEmbed.Description = reactionResult.User.Username + " has aprooved this application:" + Environment.NewLine + applicationEmbed.Description; //await ctx.Guild.GetChannel(id: FINISHED_APPLICATION_CHANEL).SendMessageAsync(embed: applicationEmbed).ConfigureAwait(false); //await Task.Delay(200); //var chanel = ctx.Guild.GetChannel(PENDING_RESPONSES_CHANNEL); //await chanel.DeleteMessageAsync(applicationMessage).ConfigureAwait(false); }