private async Task AddGuildEventInteractive(CommandContext context, InteractivityExtension interactivity, DiscordMessage msg)
        {
            using IBotAccessProvider provider = this.accessBuilder.Build();

            if (msg == null)
            {
                await context.RespondAsync(content : "Ok, what do you want the event name to be?");
            }
            else
            {
                await msg.ModifyAsync(content : "Ok, what do you want the event name to be?");
            }

            InteractivityResult <DiscordMessage> result = await interactivity.WaitForMessageAsync(xm => xm.Author.Equals(context.User) && xm.Channel.Equals(context.Channel));

            if (result.TimedOut)
            {
                DiscordMessage snark = await context.RespondAsync(
                    content : "You failed to provide a valid event title within the time limit, so thanks for wasting a minute of myyyy time. :triumph:");

                await Task.Delay(5000);

                await context.Channel.DeleteMessagesAsync(new List <DiscordMessage> {
                    msg, result.Result, snark
                });

                return;
            }

            string eventName = result.Result.Content;

            await result.Result.DeleteAsync();

            await msg.ModifyAsync("What do you want the event description to be?");

            result = await interactivity.WaitForMessageAsync(xm => xm.Author.Equals(context.User) && xm.Channel.Equals(context.Channel), timeoutoverride : TimeSpan.FromMinutes(3));

            if (result.TimedOut)
            {
                DiscordMessage snark = await context.RespondAsync(
                    content : "You failed to provide a valid event description within the time limit, so thanks for wasting a minute of myyyy time. :triumph:");

                await Task.Delay(5000);

                await context.Channel.DeleteMessagesAsync(new List <DiscordMessage> {
                    msg, result.Result, snark
                });

                return;
            }

            string eventDesc = result.Result.Content;
            await result.Result.DeleteAsync();

            provider.AddGuildEvent(context.Guild.Id, eventName, eventDesc);
            DiscordEmbed embed = new DiscordEmbedBuilder()
                                 .WithAuthor(context.Client.CurrentUser.Username, iconUrl: context.Client.CurrentUser.AvatarUrl)
                                 .WithDescription(eventDesc)
                                 .WithTitle(eventName)
                                 .Build();

            await msg.ModifyAsync("You have added the following event to your guild:", embed : embed);
        }