Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
        }