コード例 #1
0
        public async Task AddEvent(CommandContext ctx)
        {
            var thirdStep  = new TextStep("Who will be taking part in this event?", null);
            var secondStep = new TextStep("What is the Event name?", thirdStep);
            var firstStep  = new DateTimeStep("What is the date/time you wish this event to take place on?\nStyle of Response Needed: DD/MM/YYYY HH:MM", secondStep);

            var newEvent = new EventList();

            firstStep.OnValidResult  += (result) => newEvent.DateTime = $"{result}";
            secondStep.OnValidResult += (result) => newEvent.EventName = $"{result}";
            thirdStep.OnValidResult  += (result) => newEvent.Attendees = $"{result}";

            var inputDialogueHandler = new DialogueHandler(
                ctx.Client,
                ctx.Channel,
                ctx.User,
                firstStep
                );

            bool succeeded = await inputDialogueHandler.ProcessDialogue().ConfigureAwait(false);

            if (!succeeded)
            {
                return;
            }

            await _eventService.CreateNewEvent(newEvent).ConfigureAwait(false);

            //Change this to -6 or -7 depending on DST
            var parsedTimeDate = DateTime.Parse(newEvent.DateTime).AddHours(-5);

            var embed = new DiscordEmbedBuilder
            {
                Title       = "Event Created:",
                Color       = DiscordColor.DarkRed,
                Description = $"Date/Time: {parsedTimeDate.ToShortDateString()} at {parsedTimeDate.ToShortTimeString()} (CST)\n\nEvent Name: {newEvent.EventName}\n\nAttendees: {newEvent.Attendees}",
            };

            embed.AddField("MST:", $"{parsedTimeDate.AddHours(-2).ToLongDateString()} at {parsedTimeDate.AddHours(-2).ToShortTimeString()}");
            embed.AddField("GMT:", $"{parsedTimeDate.AddHours(5).ToLongDateString()} at {parsedTimeDate.AddHours(5).ToShortTimeString()}");

            embed.WithFooter($"Event ID: {newEvent.Id}");

            var eventChannel = ctx.Guild.GetChannel(808076578725822474);

            await ctx.Channel.SendMessageAsync(embed : embed).ConfigureAwait(false);

            var eventMessage = await eventChannel.SendMessageAsync(embed : embed).ConfigureAwait(false);

            newEvent.EventChannelId = eventChannel.Id;
            newEvent.EventMessageId = eventMessage.Id;

            await _eventService.EditEvent(newEvent);
        }
コード例 #2
0
        public async Task ScheduleMeeting(CommandContext context)
        {
            var newMeeting = new Meeting()
            {
                CreatorUserId = context.Message.Author.Id.ToString(),
                GuildId       = context.Guild.Id.ToString()
            };

            var dateTimeStep    = new DateTimeStep("Enter summary", null);
            var timeboxStep     = new TimeboxStep("Enter timebox", dateTimeStep);
            var meetingTypeStep = new MeetingTypeStep("Enter meeting type", timeboxStep);
            var titleStep       = new TitleStep("Enter meeting type", meetingTypeStep);

            titleStep.OnValidResult       += (result) => newMeeting.Title = result;
            meetingTypeStep.OnValidResult += (result) => newMeeting.MeetingType = result;
            timeboxStep.OnValidResult     += (result) => newMeeting.Timebox = result;
            dateTimeStep.OnValidResult    += (result) => newMeeting.DateTime = result;

            // open dm
            // var dm = await context.Member.CreateDmChannelAsync().ConfigureAwait(false);

            var meetingScheduler = new MeetingSchedulerHandler(
                context.Client,
                context.Channel,
                context.User,
                titleStep
                );

            var succeeded = await meetingScheduler.ProcessReportLogger().ConfigureAwait(false);

            if (!succeeded)
            {
                return;
            }

            await _dbContext.AddAsync(newMeeting).ConfigureAwait(false);

            await _dbContext.SaveChangesAsync().ConfigureAwait(false);

            await context.Channel.SendMessageAsync("Report successfully saved to database").ConfigureAwait(false);
        }