public static async void HugError(SocketMessage message) { var user = message.Author; var channel = message.Channel; //Retrieve the account information of the command's user var account = UserInfoClasses.GetAccount(user); //Create an embeded message and declare the title var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Social Command: Hug", IconUrl = user.GetAvatarUrl() }; // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.WithAuthor(author); embed.WithDescription("Mention a user while using this command to give them a hug."); await channel.SendMessageAsync("", false, embed.Build()); }
public static EmbedBuilder MenuTimedOut(SocketGuildUser user) { // Get the account information of the command's target var account = UserInfoClasses.GetAccount(user); var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Inactive Menu", IconUrl = user.GetAvatarUrl() }; embed.WithAuthor(author); // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.WithDescription($"You can access the help menu at any time with the **`{BotConfig.bot.cmdPrefix}help`** command."); return(embed); }
public static EmbedBuilder MenuTimedOut(SocketGuildUser user) { // Get the account information of the command's target var account = UserInfoClasses.GetAccount(user); var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Inactive Menu", IconUrl = user.GetAvatarUrl() }; embed.WithAuthor(author); // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.WithDescription($"You can adjust your template settings at any time from the **`{BotConfig.bot.cmdPrefix}settings`** menu by choosing [Scene Maker Settings] > [Template Layout]."); return(embed); }
public static async Task SM_Tutorial_Basics_Page_3(SocketGuildUser user, RestUserMessage message) { // Get the account information of the command's user. var account = UserInfoClasses.GetAccount(user); // Find the menu session associated with the current user. var menuSession = Global.MenuIdList.SingleOrDefault(x => x.User.Id == user.Id); var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Using Sprite Sheets", IconUrl = user.GetAvatarUrl() }; embed.WithAuthor(author); var footer = new EmbedFooterBuilder { Text = "" + "◀️ Previous Page | ▶️ Next Page\n" + "Page 3 / 6" }; embed.WithFooter(footer); // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.WithDescription("" + $"Once you find a character you want, use the format **`{BotConfig.bot.cmdPrefix}maker [character]`** to display their sprite sheet.\n" + "\n" + "If the character appears in more than one title, this will only bring up their sprite sheet from the game they originated from. " + "To specify their sprite sheet from another title, type one of the template keywords after their name."); // Attempt editing the message if it hasn't been deleted by the user yet. // If it has, catch the exception, remove the menu entry from the global list, and return. try { // Remove all reactions from the current message. await message.RemoveAllReactionsAsync(); // Edit the current active message by replacing it with the recently created embed. await message.ModifyAsync(x => { x.Embed = embed.Build(); }); } catch (Exception ex) { Console.WriteLine(ex); // Remove the menu entry from the global list. Global.MenuIdList.Remove(menuSession); return; } // Edit the menu session according to the current message. menuSession.CurrentMenu = "SM_Tutorial_Basics_Page_3"; menuSession.MenuTimer = new Timer() { // Create a timer that expires as a "time out" duration for the user. Interval = MenuConfig.menu.timerDuration, AutoReset = false, Enabled = true }; // If the menu timer runs out, activate a function. menuSession.MenuTimer.Elapsed += (sender, e) => MenuTimer_Elapsed(sender, e, menuSession); // Create an empty list for reactions. List <IEmote> reaction_list = new List <IEmote> { }; // Add needed emote reactions for the menu. reaction_list.Add(new Emoji("◀️")); reaction_list.Add(new Emoji("▶️")); // Add the reactions to the message. _ = ReactionHandling.AddReactionsToMenu(message, reaction_list); }
public static async Task Status_Tutorial_Page_2(SocketGuildUser user, RestUserMessage message) { // Get the account information of the command's user. var account = UserInfoClasses.GetAccount(user); // Find the menu session associated with the current user. var menuSession = Global.MenuIdList.SingleOrDefault(x => x.User.Id == user.Id); var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Social Stats", IconUrl = user.GetAvatarUrl() }; embed.WithAuthor(author); var footer = new EmbedFooterBuilder { Text = "" + "◀️ Previous Page | ▶️ Next Page\n" + "Page 2 / 5" }; embed.WithFooter(footer); // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.WithDescription("" + "Social stats are determined by how interactive you are with Social Linker. There’s a daily limit for points earned with each one, so come back often to see them grow.\n" + "\n" + "**• Proficiency:** Increases through use of Social Linker commands.\n" + "**• Diligence:** Increases through daily Discord activity.\n" + "**• Expression:** Increases through usage of social commands by you or by others."); // Attempt editing the message if it hasn't been deleted by the user yet. // If it has, catch the exception, remove the menu entry from the global list, and return. try { // Remove all reactions from the current message. await message.RemoveAllReactionsAsync(); // Edit the current active message by replacing it with the recently created embed. await message.ModifyAsync(x => { x.Embed = embed.Build(); }); } catch (Exception ex) { Console.WriteLine(ex); // Remove the menu entry from the global list. Global.MenuIdList.Remove(menuSession); return; } // Edit the menu session according to the current message. menuSession.CurrentMenu = "Status_Tutorial_Page_2"; menuSession.MenuTimer = new Timer() { // Create a timer that expires as a "time out" duration for the user. Interval = MenuConfig.menu.timerDuration, AutoReset = false, Enabled = true }; // If the menu timer runs out, activate a function. menuSession.MenuTimer.Elapsed += (sender, e) => MenuTimer_Elapsed(sender, e, menuSession); // Create an empty list for reactions. List <IEmote> reaction_list = new List <IEmote> { }; // Add needed emote reactions for the menu. reaction_list.Add(new Emoji("◀️")); reaction_list.Add(new Emoji("▶️")); // Add the reactions to the message. _ = ReactionHandling.AddReactionsToMenu(message, reaction_list); }
public static async Task Credits_Main(SocketGuildUser user, RestUserMessage message) { // Get the account information of the command's user. var account = UserInfoClasses.GetAccount(user); // Find the menu session associated with the current user. var menuSession = Global.MenuIdList.SingleOrDefault(x => x.User.Id == user.Id); var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Credits", IconUrl = user.GetAvatarUrl() }; embed.WithAuthor(author); var footer = new EmbedFooterBuilder { Text = "↩️ Return to Help Menu" }; embed.WithFooter(footer); // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.AddField("Programming & Design", "" + "[Microjack5](https://twitter.com/Microjack5)\n"); embed.AddField("Quality Assurance Advisors", "" + "[Angel ✨](https://twitter.com/_Amaurot)\n" + "[Arkane](https://twitter.com/ArkaneOnline)\n" + "[Azure](https://twitter.com/Azure_Blazes)\n" + "[Camz](https://twitter.com/Camzcer)\n" + "[Corrin](https://twitter.com/LocalSynth)\n" + "[Kara](https://discordapp.com/users/707398527575130162/)\n" + "[Mel](https://twitter.com/skyseekingdream)\n" + "[Naanos](https://www.youtube.com/channel/UCiUR9b-ptxqSbKw0vIaDklg)\n" + "[無限 | Nate](https://twitter.com/CrestofDog)\n" + "[RomIsALemon](https://twitter.com/phighters_rom)\n" + "[Shadow Kawa](https://discordapp.com/users/210080634498973696/)\n" + "[SlimePupAribaba](https://twitter.com/SlimePupAribaba)\n" + "[Squishy](https://twitter.com/Squishy_Mona)\n" + "[Thena](https://twitter.com/ThenaIsLost)\n" + "[TooBlue!](https://twitter.com/EMOMESSlAH)\n" + "[WaffleBandito](https://twitter.com/WaffIeBandito)\n"); embed.AddField("Asset Advisors", "" + "[80constant](https://twitter.com/80constant_)\n" + "[Arkane](https://twitter.com/ArkaneOnline)\n" + "[Canasniimehugh](https://www.vg-resource.com/user-17021.html)\n" + "[EsperKnight](https://twitter.com/esperknight)\n" + "[Geo](https://github.com/Geordan9)\n"); embed.AddField("Status Décor Designers", "" + "[danny !](https://twitter.com/SPACECHANEL5)\n" + "[Microjack5](https://twitter.com/Microjack5)\n" + "[無限 | Nate](https://discordapp.com/users/140846765275348993/)\n" + "[TooBlue!](https://twitter.com/EMOMESSlAH)\n"); embed.AddField("Gameplay Footage", "" + "[BuffMaister](https://www.youtube.com/channel/UCks_VIIleZT2iDWNipPglUg)\n" + "[Faz](https://www.youtube.com/channel/UCEevYX4rCcfF0ZrxmnnONXA)\n" + "[Ignis](https://www.youtube.com/channel/UCHViTnm0pNN3BwvOwGqlPgQ)\n" + "[JohneAwesome](https://www.youtube.com/user/JohneAwesome)\n" + "[Literally Satan GAMING](https://www.youtube.com/channel/UCfdQp9SVfAMQEtD3jQAoXLg)\n" + "[Noire Blue](https://www.youtube.com/channel/UCUZpzh41JoA4bbgfQL1hx7A)\n" + "[PuppiStation](https://www.youtube.com/channel/UCv3PDRDC9cRw9Yzgb_NzgYg)\n" + "[RandomPl0x](https://www.youtube.com/c/RandomChannelPlox)\n" + "[Shirrako](https://www.youtube.com/channel/UC7eAfUjR9gdIjoaoQaS0W-A)\n"); embed.AddField("Services", "" + "[Microsoft Azure](https://azure.microsoft.com/)\n" + "[Weather API](https://www.weatherapi.com/)\n"); embed.AddField("Special Thanks", "" + "[Joseph Navarro](https://github.com/josephnavarro)\n" + "[Meloman19](https://github.com/Meloman19)\n" + "[Petr Sedláček](https://github.com/petrspelos)\n" + "[ShrineFox](https://shrinefox.com/)\n"); // Attempt editing the message if it hasn't been deleted by the user yet. // If it has, catch the exception, remove the menu entry from the global list, and return. try { // Remove all reactions from the current message. await message.RemoveAllReactionsAsync(); // Edit the current active message by replacing it with the recently created embed. await message.ModifyAsync(x => { x.Embed = embed.Build(); }); } catch (Exception ex) { Console.WriteLine(ex); // Remove the menu entry from the global list. Global.MenuIdList.Remove(menuSession); return; } // Edit the menu session according to the current message. menuSession.CurrentMenu = "Credits_Main"; menuSession.MenuTimer = new Timer() { // Create a timer that expires as a "time out" duration for the user. Interval = MenuConfig.menu.timerDuration, AutoReset = false, Enabled = true }; // If the menu timer runs out, activate a function. menuSession.MenuTimer.Elapsed += (sender, e) => MenuTimer_Elapsed(sender, e, menuSession); // Create an empty list for reactions. List <IEmote> reaction_list = new List <IEmote> { }; // Add needed emote reactions for the menu. reaction_list.Add(new Emoji("↩️")); // Add the reactions to the message. _ = ReactionHandling.AddReactionsToMenu(message, reaction_list); }
public static async Task Status_Tutorial_Page_1(SocketGuildUser user, RestUserMessage message) { // Get the account information of the command's user. var account = UserInfoClasses.GetAccount(user); // Find the menu session associated with the current user. var menuSession = Global.MenuIdList.SingleOrDefault(x => x.User.Id == user.Id); var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Status Screens", IconUrl = user.GetAvatarUrl() }; embed.WithAuthor(author); var footer = new EmbedFooterBuilder { Text = "" + "↩️ Return to Help Menu | ▶️ Next Page\n" + "Page 1 / 5" }; embed.WithFooter(footer); // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.WithDescription("Status screens keep track of your various Discord activities. Depending on which theme you set your profile to, they can take on different appearances."); // Attempt editing the message if it hasn't been deleted by the user yet. // If it has, catch the exception, remove the menu entry from the global list, and return. try { // Remove all reactions from the current message. await message.RemoveAllReactionsAsync(); // Edit the current active message by replacing it with the recently created embed. await message.ModifyAsync(x => { x.Embed = embed.Build(); }); } catch (Exception ex) { Console.WriteLine(ex); // Remove the menu entry from the global list. Global.MenuIdList.Remove(menuSession); return; } // Edit the menu session according to the current message. menuSession.CurrentMenu = "Status_Tutorial_Page_1"; menuSession.MenuTimer = new Timer() { // Create a timer that expires as a "time out" duration for the user. Interval = MenuConfig.menu.timerDuration, AutoReset = false, Enabled = true }; // If the menu timer runs out, activate a function. menuSession.MenuTimer.Elapsed += (sender, e) => MenuTimer_Elapsed(sender, e, menuSession); // Create an empty list for reactions. List <IEmote> reaction_list = new List <IEmote> { }; // Add needed emote reactions for the menu. reaction_list.Add(new Emoji("↩️")); reaction_list.Add(new Emoji("▶️")); // Add the reactions to the message. _ = ReactionHandling.AddReactionsToMenu(message, reaction_list); }
public static async Task Status_Tutorial_Page_5(SocketGuildUser user, RestUserMessage message) { // Get the account information of the command's user. var account = UserInfoClasses.GetAccount(user); // Find the menu session associated with the current user. var menuSession = Global.MenuIdList.SingleOrDefault(x => x.User.Id == user.Id); var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Settings and Commands", IconUrl = user.GetAvatarUrl() }; embed.WithAuthor(author); var footer = new EmbedFooterBuilder { Text = "" + "◀️ Previous Page | 💠 Return to Help Menu\n" + "Page 5 / 5" }; embed.WithFooter(footer); // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.WithDescription("" + $"You can set your profile theme at any time from the **`{BotConfig.bot.cmdPrefix}settings`** menu by choosing [Profile Theme Settings].\n" + "Use the following commands to access these main features:\n"); embed.AddField($"Command List", "> **`>status`**\n" + "Check your status screen.\n" + "Type `detail` after it to view a detailed breakdown of your profile, or tag a user to view theirs.\n" + "\n" + "> **`>shop`**\n" + "Access the status screen Décor Shop."); // Attempt editing the message if it hasn't been deleted by the user yet. // If it has, catch the exception, remove the menu entry from the global list, and return. try { // Remove all reactions from the current message. await message.RemoveAllReactionsAsync(); // Edit the current active message by replacing it with the recently created embed. await message.ModifyAsync(x => { x.Embed = embed.Build(); }); } catch (Exception ex) { Console.WriteLine(ex); // Remove the menu entry from the global list. Global.MenuIdList.Remove(menuSession); return; } // Edit the menu session according to the current message. menuSession.CurrentMenu = "Status_Tutorial_Page_5"; menuSession.MenuTimer = new Timer() { // Create a timer that expires as a "time out" duration for the user. Interval = MenuConfig.menu.timerDuration, AutoReset = false, Enabled = true }; // If the menu timer runs out, activate a function. menuSession.MenuTimer.Elapsed += (sender, e) => MenuTimer_Elapsed(sender, e, menuSession); // Create an empty list for reactions. List <IEmote> reaction_list = new List <IEmote> { }; // Add needed emote reactions for the menu. reaction_list.Add(new Emoji("◀️")); reaction_list.Add(new Emoji("💠")); // Add the reactions to the message. _ = ReactionHandling.AddReactionsToMenu(message, reaction_list); }
public static async Task SM_Tutorial_Basics_Page_6(SocketGuildUser user, RestUserMessage message) { // Get the account information of the command's user. var account = UserInfoClasses.GetAccount(user); // Find the menu session associated with the current user. var menuSession = Global.MenuIdList.SingleOrDefault(x => x.User.Id == user.Id); var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Backgrounds & Deleting Scenes", IconUrl = user.GetAvatarUrl() }; embed.WithAuthor(author); var footer = new EmbedFooterBuilder { Text = "" + "◀️ Previous Page | 💠 Return to Tutorial Menu\n" + "Page 6 / 6" }; embed.WithFooter(footer); // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.WithDescription("" + "To use a background, upload an image alongside your command when creating a scene.\n" + "\n" + "You can also delete scenes you’ve already made by reacting to them with the :x: emote."); // Attempt editing the message if it hasn't been deleted by the user yet. // If it has, catch the exception, remove the menu entry from the global list, and return. try { // Remove all reactions from the current message. await message.RemoveAllReactionsAsync(); // Edit the current active message by replacing it with the recently created embed. await message.ModifyAsync(x => { x.Embed = embed.Build(); }); } catch (Exception ex) { Console.WriteLine(ex); // Remove the menu entry from the global list. Global.MenuIdList.Remove(menuSession); return; } // Edit the menu session according to the current message. menuSession.CurrentMenu = "SM_Tutorial_Basics_Page_6"; menuSession.MenuTimer = new Timer() { // Create a timer that expires as a "time out" duration for the user. Interval = MenuConfig.menu.timerDuration, AutoReset = false, Enabled = true }; // If the menu timer runs out, activate a function. menuSession.MenuTimer.Elapsed += (sender, e) => MenuTimer_Elapsed(sender, e, menuSession); // Create an empty list for reactions. List <IEmote> reaction_list = new List <IEmote> { }; // Add needed emote reactions for the menu. reaction_list.Add(new Emoji("◀️")); reaction_list.Add(new Emoji("💠")); // Add the reactions to the message. _ = ReactionHandling.AddReactionsToMenu(message, reaction_list); }
public static async Task SM_Tutorial_Basics_Page_2(SocketGuildUser user, RestUserMessage message) { // Get the account information of the command's user. var account = UserInfoClasses.GetAccount(user); // Find the menu session associated with the current user. var menuSession = Global.MenuIdList.SingleOrDefault(x => x.User.Id == user.Id); var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Character Lists and Templates", IconUrl = user.GetAvatarUrl() }; embed.WithAuthor(author); var footer = new EmbedFooterBuilder { Text = "" + "◀️ Previous Page | ▶️ Next Page\n" + "Page 2 / 6" }; embed.WithFooter(footer); // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.WithDescription("" + "There are multiple templates to choose from based on each title:\n" + "\n" + "<:P1:751133115531133112> `P1` - **Persona**\n" + "<:P2IS:788950080396328990> `P2IS` - **Persona 2: Innocent Sin**\n" + "<:P2EP:788950163363463172> `P2EP` - **Persona 2: Eternal Punishment**\n" + "<:P3:751133114918633483> `P3` - **Persona 3**\n" + "<:P4:751133120530612274> `P4` - **Persona 4**\n" + "<:P4AU:751133122342420572> `P4AU` - **Persona 4 Arena Ultimax**\n" + "<:P4D:751133120346062859> `P4D` - **Persona 4: Dancing All Night**\n" + "<:P5:751133123861020742> `P5` - **Persona 5**\n" + "<:BBTAG:751133123013771617> `BBTAG` - **BlazBlue: Cross Tag Battle**\n" + "\n" + $"Use the format **`{BotConfig.bot.cmdPrefix}maker [template]`** to view the names of characters with sprites for that title."); // Attempt editing the message if it hasn't been deleted by the user yet. // If it has, catch the exception, remove the menu entry from the global list, and return. try { // Remove all reactions from the current message. await message.RemoveAllReactionsAsync(); // Edit the current active message by replacing it with the recently created embed. await message.ModifyAsync(x => { x.Embed = embed.Build(); }); } catch (Exception ex) { Console.WriteLine(ex); // Remove the menu entry from the global list. Global.MenuIdList.Remove(menuSession); return; } // Edit the menu session according to the current message. menuSession.CurrentMenu = "SM_Tutorial_Basics_Page_2"; menuSession.MenuTimer = new Timer() { // Create a timer that expires as a "time out" duration for the user. Interval = MenuConfig.menu.timerDuration, AutoReset = false, Enabled = true }; // If the menu timer runs out, activate a function. menuSession.MenuTimer.Elapsed += (sender, e) => MenuTimer_Elapsed(sender, e, menuSession); // Create an empty list for reactions. List <IEmote> reaction_list = new List <IEmote> { }; // Add needed emote reactions for the menu. reaction_list.Add(new Emoji("◀️")); reaction_list.Add(new Emoji("▶️")); // Add the reactions to the message. _ = ReactionHandling.AddReactionsToMenu(message, reaction_list); }
public static async Task SM_Tutorial_Spriteless_System_Page_2(SocketGuildUser user, RestUserMessage message) { // Get the account information of the command's user. var account = UserInfoClasses.GetAccount(user); // Find the menu session associated with the current user. var menuSession = Global.MenuIdList.SingleOrDefault(x => x.User.Id == user.Id); var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Cross-Dimensional Observation System No. XX", IconUrl = user.GetAvatarUrl() }; embed.WithAuthor(author); var footer = new EmbedFooterBuilder { Text = "" + "◀️ Previous Page | 💠 Return to Spriteless Scenes Menu\n" + "Page 2 / 2" }; embed.WithFooter(footer); // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.WithDescription("" + "BBTAG’s System acts as a unique character with multiple textboxes to choose from.\n" + "\n" + "The default form can still be selected by setting the sprite number to `0`, or you can set the sprite number to `1` for her sentient form."); // Attempt editing the message if it hasn't been deleted by the user yet. // If it has, catch the exception, remove the menu entry from the global list, and return. try { // Remove all reactions from the current message. await message.RemoveAllReactionsAsync(); // Edit the current active message by replacing it with the recently created embed. await message.ModifyAsync(x => { x.Embed = embed.Build(); }); } catch (Exception ex) { Console.WriteLine(ex); // Remove the menu entry from the global list. Global.MenuIdList.Remove(menuSession); return; } // Edit the menu session according to the current message. menuSession.CurrentMenu = "SM_Tutorial_Spriteless_System_Page_2"; menuSession.MenuTimer = new Timer() { // Create a timer that expires as a "time out" duration for the user. Interval = MenuConfig.menu.timerDuration, AutoReset = false, Enabled = true }; // If the menu timer runs out, activate a function. menuSession.MenuTimer.Elapsed += (sender, e) => MenuTimer_Elapsed(sender, e, menuSession); // Create an empty list for reactions. List <IEmote> reaction_list = new List <IEmote> { }; // Add needed emote reactions for the menu. reaction_list.Add(new Emoji("◀️")); reaction_list.Add(new Emoji("💠")); // Add the reactions to the message. _ = ReactionHandling.AddReactionsToMenu(message, reaction_list); }
public static async Task SM_Tutorial_Basics_Page_5(SocketGuildUser user, RestUserMessage message) { // Get the account information of the command's user. var account = UserInfoClasses.GetAccount(user); // Find the menu session associated with the current user. var menuSession = Global.MenuIdList.SingleOrDefault(x => x.User.Id == user.Id); var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Cross-compatibility", IconUrl = user.GetAvatarUrl() }; embed.WithAuthor(author); var footer = new EmbedFooterBuilder { Text = "" + "◀️ Previous Page | ▶️ Next Page\n" + "Page 5 / 6" }; embed.WithFooter(footer); // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.WithDescription("" + "To use a character sprite in a template they don’t belong to, use a template keyword right before the character’s name when creating a scene.\n" + "\n" + "Some character sprites might be too small to appear normally in other templates. They’ll be formatted in other ways that are natural to the game’s aesthetics."); // Attempt editing the message if it hasn't been deleted by the user yet. // If it has, catch the exception, remove the menu entry from the global list, and return. try { // Remove all reactions from the current message. await message.RemoveAllReactionsAsync(); // Edit the current active message by replacing it with the recently created embed. await message.ModifyAsync(x => { x.Embed = embed.Build(); }); } catch (Exception ex) { Console.WriteLine(ex); // Remove the menu entry from the global list. Global.MenuIdList.Remove(menuSession); return; } // Edit the menu session according to the current message. menuSession.CurrentMenu = "SM_Tutorial_Basics_Page_5"; menuSession.MenuTimer = new Timer() { // Create a timer that expires as a "time out" duration for the user. Interval = MenuConfig.menu.timerDuration, AutoReset = false, Enabled = true }; // If the menu timer runs out, activate a function. menuSession.MenuTimer.Elapsed += (sender, e) => MenuTimer_Elapsed(sender, e, menuSession); // Create an empty list for reactions. List <IEmote> reaction_list = new List <IEmote> { }; // Add needed emote reactions for the menu. reaction_list.Add(new Emoji("◀️")); reaction_list.Add(new Emoji("▶️")); // Add the reactions to the message. _ = ReactionHandling.AddReactionsToMenu(message, reaction_list); }
public static async Task SM_Tutorial_Basics_Page_1(SocketGuildUser user, RestUserMessage message) { // Get the account information of the command's user. var account = UserInfoClasses.GetAccount(user); // Find the menu session associated with the current user. var menuSession = Global.MenuIdList.SingleOrDefault(x => x.User.Id == user.Id); var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Persona Scene Maker", IconUrl = user.GetAvatarUrl() }; embed.WithAuthor(author); var footer = new EmbedFooterBuilder { Text = "" + "↩️ Return to Previous Menu | ▶️ Next Page\n" + "Page 1 / 6" }; embed.WithFooter(footer); // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.WithDescription("" + "The scene maker lets you generate images resembling screenshots from the Persona series.\n" + "\n" + $"Each image is called a “scene” and can be generated with a variety of commands with the prefix **`{BotConfig.bot.cmdPrefix}maker`**."); // Attempt editing the message if it hasn't been deleted by the user yet. // If it has, catch the exception, remove the menu entry from the global list, and return. try { // Remove all reactions from the current message. await message.RemoveAllReactionsAsync(); // Edit the current active message by replacing it with the recently created embed. await message.ModifyAsync(x => { x.Embed = embed.Build(); }); } catch (Exception ex) { Console.WriteLine(ex); // Remove the menu entry from the global list. Global.MenuIdList.Remove(menuSession); return; } // Edit the menu session according to the current message. menuSession.CurrentMenu = "SM_Tutorial_Basics_Page_1"; menuSession.MenuTimer = new Timer() { // Create a timer that expires as a "time out" duration for the user. Interval = MenuConfig.menu.timerDuration, AutoReset = false, Enabled = true }; // If the menu timer runs out, activate a function. menuSession.MenuTimer.Elapsed += (sender, e) => MenuTimer_Elapsed(sender, e, menuSession); // Create an empty list for reactions. List <IEmote> reaction_list = new List <IEmote> { }; // Add needed emote reactions for the menu. reaction_list.Add(new Emoji("↩️")); reaction_list.Add(new Emoji("▶️")); // Add the reactions to the message. _ = ReactionHandling.AddReactionsToMenu(message, reaction_list); }
public static async Task SM_Tutorial_Anime_Frames_Page_2(SocketGuildUser user, RestUserMessage message) { // Get the account information of the command's user. var account = UserInfoClasses.GetAccount(user); // Find the menu session associated with the current user. var menuSession = Global.MenuIdList.SingleOrDefault(x => x.User.Id == user.Id); var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Using Animation Frames", IconUrl = user.GetAvatarUrl() }; embed.WithAuthor(author); var footer = new EmbedFooterBuilder { Text = "" + "◀️ Previous Page | ▶️ Next Page\n" + "Page 2 / 3" }; embed.WithFooter(footer); // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.WithDescription("" + "If you string together numbers for the base sprite, an eye frame, and a mouth frame with hyphens, you can create even more varied expressions with your scenes."); // Attempt editing the message if it hasn't been deleted by the user yet. // If it has, catch the exception, remove the menu entry from the global list, and return. try { // Remove all reactions from the current message. await message.RemoveAllReactionsAsync(); // Edit the current active message by replacing it with the recently created embed. await message.ModifyAsync(x => { x.Embed = embed.Build(); }); } catch (Exception ex) { Console.WriteLine(ex); // Remove the menu entry from the global list. Global.MenuIdList.Remove(menuSession); return; } // Edit the menu session according to the current message. menuSession.CurrentMenu = "SM_Tutorial_Anime_Frames_Page_2"; menuSession.MenuTimer = new Timer() { // Create a timer that expires as a "time out" duration for the user. Interval = MenuConfig.menu.timerDuration, AutoReset = false, Enabled = true }; // If the menu timer runs out, activate a function. menuSession.MenuTimer.Elapsed += (sender, e) => MenuTimer_Elapsed(sender, e, menuSession); // Create an empty list for reactions. List <IEmote> reaction_list = new List <IEmote> { }; // Add needed emote reactions for the menu. reaction_list.Add(new Emoji("◀️")); reaction_list.Add(new Emoji("▶️")); // Add the reactions to the message. _ = ReactionHandling.AddReactionsToMenu(message, reaction_list); }
public static async Task SM_Tutorial_Dual_Chara_Page_1(SocketGuildUser user, RestUserMessage message) { // Get the account information of the command's user. var account = UserInfoClasses.GetAccount(user); // Find the menu session associated with the current user. var menuSession = Global.MenuIdList.SingleOrDefault(x => x.User.Id == user.Id); var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Dual Character Scenes", IconUrl = user.GetAvatarUrl() }; embed.WithAuthor(author); var footer = new EmbedFooterBuilder { Text = "" + "↩️ Return to Tips & Tricks Menu | ▶️ Next Page\n" + "Page 1 / 2" }; embed.WithFooter(footer); // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.WithDescription("" + $"Type **`{BotConfig.bot.cmdPrefix}maker dual`** to start creating a scene with two characters. This is only possible with a select few templates, so choose the one you think fits best and follow the instructions provided."); // Attempt editing the message if it hasn't been deleted by the user yet. // If it has, catch the exception, remove the menu entry from the global list, and return. try { // Remove all reactions from the current message. await message.RemoveAllReactionsAsync(); // Edit the current active message by replacing it with the recently created embed. await message.ModifyAsync(x => { x.Embed = embed.Build(); }); } catch (Exception ex) { Console.WriteLine(ex); // Remove the menu entry from the global list. Global.MenuIdList.Remove(menuSession); return; } // Edit the menu session according to the current message. menuSession.CurrentMenu = "SM_Tutorial_Dual_Chara_Page_1"; menuSession.MenuTimer = new Timer() { // Create a timer that expires as a "time out" duration for the user. Interval = MenuConfig.menu.timerDuration, AutoReset = false, Enabled = true }; // If the menu timer runs out, activate a function. menuSession.MenuTimer.Elapsed += (sender, e) => MenuTimer_Elapsed(sender, e, menuSession); // Create an empty list for reactions. List <IEmote> reaction_list = new List <IEmote> { }; // Add needed emote reactions for the menu. reaction_list.Add(new Emoji("↩️")); reaction_list.Add(new Emoji("▶️")); // Add the reactions to the message. _ = ReactionHandling.AddReactionsToMenu(message, reaction_list); }
public static async Task Legal_Notices_Main(SocketGuildUser user, RestUserMessage message) { // Get the account information of the command's user. var account = UserInfoClasses.GetAccount(user); // Find the menu session associated with the current user. var menuSession = Global.MenuIdList.SingleOrDefault(x => x.User.Id == user.Id); var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Legal Notices", IconUrl = user.GetAvatarUrl() }; embed.WithAuthor(author); var footer = new EmbedFooterBuilder { Text = "↩️ Return to Help Menu" }; embed.WithFooter(footer); // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.WithDescription( "**Content: :copyright: ATLUS / SEGA / KOEI TECMO GAMES / ARC SYSTEM WORKS / FRENCH-BREAD / Rooster Teeth Productions, LLC. / Team ARCANA / Marvelous, Inc. / SUBTLE STYLE**\n" + "\n" + "\"PlayStation\", \"PS\", \"PS2\", \"PS3\", \"PS4\", \"PSP\", \"PSVITA\", and the \"PS\" Family logos are either registered trademarks or trademarks of Sony Interactive Entertainment Inc.\n" + "\n" + "Xbox 360, Xbox One, and the Xbox logos are either registered trademarks or trademarks of the Microsoft group of companies.\n" + "\n" + "Wii U and Nintendo Switch are trademarks of Nintendo.\n" + "\n" + "The ratings icon is a registered trademark of the Entertainment Software Association.\n" + "\n" + "All other trademarks are property of their respective owners.\n" + "\n" + "```Social Linker is not affiliated, associated, authorized, maintained, sponsored, endorsed by, or in any way officially connected with these trademark and copyright holders. Content intended with fair use.```"); // Attempt editing the message if it hasn't been deleted by the user yet. // If it has, catch the exception, remove the menu entry from the global list, and return. try { // Remove all reactions from the current message. await message.RemoveAllReactionsAsync(); // Edit the current active message by replacing it with the recently created embed. await message.ModifyAsync(x => { x.Embed = embed.Build(); }); } catch (Exception ex) { Console.WriteLine(ex); // Remove the menu entry from the global list. Global.MenuIdList.Remove(menuSession); return; } // Edit the menu session according to the current message. menuSession.CurrentMenu = "Legal_Notices_Main"; menuSession.MenuTimer = new Timer() { // Create a timer that expires as a "time out" duration for the user. Interval = MenuConfig.menu.timerDuration, AutoReset = false, Enabled = true }; // If the menu timer runs out, activate a function. menuSession.MenuTimer.Elapsed += (sender, e) => MenuTimer_Elapsed(sender, e, menuSession); // Create an empty list for reactions. List <IEmote> reaction_list = new List <IEmote> { }; // Add needed emote reactions for the menu. reaction_list.Add(new Emoji("↩️")); // Add the reactions to the message. _ = ReactionHandling.AddReactionsToMenu(message, reaction_list); }
public static async Task SM_Tutorial_VC_Cross_Page_3(SocketGuildUser user, RestUserMessage message) { // Get the account information of the command's user. var account = UserInfoClasses.GetAccount(user); // Find the menu session associated with the current user. var menuSession = Global.MenuIdList.SingleOrDefault(x => x.User.Id == user.Id); var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Using Expanded Template Keywords", IconUrl = user.GetAvatarUrl() }; embed.WithAuthor(author); var footer = new EmbedFooterBuilder { Text = "" + "◀️ Previous Page | 💠 Return to Version Control Tutorials\n" + "Page 3 / 3" }; embed.WithFooter(footer); // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.WithDescription("" + "Like usual, you can also use these keywords to access version-specific character lists and sprite sheets.\n" + "\n" + "If you can master their usage, your scenes can become quite versatile!"); // Attempt editing the message if it hasn't been deleted by the user yet. // If it has, catch the exception, remove the menu entry from the global list, and return. try { // Remove all reactions from the current message. await message.RemoveAllReactionsAsync(); // Edit the current active message by replacing it with the recently created embed. await message.ModifyAsync(x => { x.Embed = embed.Build(); }); } catch (Exception ex) { Console.WriteLine(ex); // Remove the menu entry from the global list. Global.MenuIdList.Remove(menuSession); return; } // Edit the menu session according to the current message. menuSession.CurrentMenu = "SM_Tutorial_VC_Cross_Page_3"; menuSession.MenuTimer = new Timer() { // Create a timer that expires as a "time out" duration for the user. Interval = MenuConfig.menu.timerDuration, AutoReset = false, Enabled = true }; // If the menu timer runs out, activate a function. menuSession.MenuTimer.Elapsed += (sender, e) => MenuTimer_Elapsed(sender, e, menuSession); // Create an empty list for reactions. List <IEmote> reaction_list = new List <IEmote> { }; // Add needed emote reactions for the menu. reaction_list.Add(new Emoji("◀️")); reaction_list.Add(new Emoji("💠")); // Add the reactions to the message. _ = ReactionHandling.AddReactionsToMenu(message, reaction_list); }
public static async Task SM_Tutorial_VC_Cross_Page_2(SocketGuildUser user, RestUserMessage message) { // Get the account information of the command's user. var account = UserInfoClasses.GetAccount(user); // Find the menu session associated with the current user. var menuSession = Global.MenuIdList.SingleOrDefault(x => x.User.Id == user.Id); var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Template Keywords", IconUrl = user.GetAvatarUrl() }; embed.WithAuthor(author); var footer = new EmbedFooterBuilder { Text = "" + "◀️ Previous Page | ▶️ Next Page\n" + "Page 2 / 3" }; embed.WithFooter(footer); // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.WithDescription("" + "Although template keywords usually follow your version control settings, you can bypass this with an expanded list of keywords that specify each version’s template.\n"); embed.AddField("Persona Keywords", "" + "<:P1_PS1:824469261316915220> `P1-PS1` - **Revelations: Persona**\n" + "<:P1:751133115531133112> `P1-PSP` - **Persona (Remake)**"); embed.AddField("Persona 2: Innocent Sin Keywords", "" + "<:P2IS:788950080396328990> `P2IS-PS1` - **Persona 2: Innocent Sin (PlayStation®️)**\n" + "<:P2IS:788950080396328990> `P2IS-PSP` - **Persona 2: Innocent Sin (Remake)**"); embed.AddField("Persona 2: Eternal Punishment Keywords", "" + "<:P2EP:788950163363463172> `P2EP-PS1` - **Persona 2: Eternal Punishment (PlayStation®️)**\n" + "<:P2EP:788950163363463172> `P2EP-PSP` - **Persona 2: Eternal Punishment (Remake)**"); embed.AddField("Persona 3 Keywords", "" + "<:P3F:788949741681115187> `P3F` - **Persona 3 FES**\n" + "<:P3P:751133116533309441> `P3P` - **Persona 3 Portable**"); embed.AddField("Persona 4 Keywords", "" + "<:P4:751133120530612274> `P4-PS2` - **Persona 4 (PlayStation®️ 2)**\n" + "<:P4G:751133123479207956> `P4G` - **Persona 4 Golden**"); embed.AddField("Persona 5 Keywords", "" + "<:P5:751133123861020742> `P5-PS4` - **Persona 5 (PlayStation®️ 4)**\n" + "<:P5R:751133123617488937> `P5R` - **Persona 5 Royal**"); embed.AddField("Single Version Keywords", "" + "<:P4AU:751133122342420572> `P4AU` - **Persona 4 Arena Ultimax**\n" + "<:P4D:751133120346062859> `P4D` - **Persona 4: Dancing All Night**\n" + "<:BBTAG:751133123013771617> `BBTAG` - **BlazBlue: Cross Tag Battle**"); // Attempt editing the message if it hasn't been deleted by the user yet. // If it has, catch the exception, remove the menu entry from the global list, and return. try { // Remove all reactions from the current message. await message.RemoveAllReactionsAsync(); // Edit the current active message by replacing it with the recently created embed. await message.ModifyAsync(x => { x.Embed = embed.Build(); }); } catch (Exception ex) { Console.WriteLine(ex); // Remove the menu entry from the global list. Global.MenuIdList.Remove(menuSession); return; } // Edit the menu session according to the current message. menuSession.CurrentMenu = "SM_Tutorial_VC_Cross_Page_2"; menuSession.MenuTimer = new Timer() { // Create a timer that expires as a "time out" duration for the user. Interval = MenuConfig.menu.timerDuration, AutoReset = false, Enabled = true }; // If the menu timer runs out, activate a function. menuSession.MenuTimer.Elapsed += (sender, e) => MenuTimer_Elapsed(sender, e, menuSession); // Create an empty list for reactions. List <IEmote> reaction_list = new List <IEmote> { }; // Add needed emote reactions for the menu. reaction_list.Add(new Emoji("◀️")); reaction_list.Add(new Emoji("▶️")); // Add the reactions to the message. _ = ReactionHandling.AddReactionsToMenu(message, reaction_list); }
public static async Task SM_Tutorial_VC_Main(SocketGuildUser user, RestUserMessage message) { // Get the account information of the command's user. var account = UserInfoClasses.GetAccount(user); // Find the menu session associated with the current user. var menuSession = Global.MenuIdList.SingleOrDefault(x => x.User.Id == user.Id); var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Scene Maker Tutorials: Version Control", IconUrl = user.GetAvatarUrl() }; embed.WithAuthor(author); var footer = new EmbedFooterBuilder { Text = "" + "↩️ Return to Help Menu" }; embed.WithFooter(footer); // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.AddField(":one: Basic Tutorial", "What is version control?"); embed.AddField(":two: Auto-switching", "Switch versions based on character."); /*embed.AddField(":three: Cross-compatibility", * "Create scenes with cross-version sprites."); */ // Attempt editing the message if it hasn't been deleted by the user yet. // If it has, catch the exception, remove the menu entry from the global list, and return. try { // Remove all reactions from the current message. await message.RemoveAllReactionsAsync(); // Edit the current active message by replacing it with the recently created embed. await message.ModifyAsync(x => { x.Embed = embed.Build(); }); } catch (Exception ex) { Console.WriteLine(ex); // Remove the menu entry from the global list. Global.MenuIdList.Remove(menuSession); return; } // Edit the menu session according to the current message. menuSession.CurrentMenu = "SM_Tutorial_VC_Main"; menuSession.MenuTimer = new Timer() { // Create a timer that expires as a "time out" duration for the user. Interval = MenuConfig.menu.timerDuration, AutoReset = false, Enabled = true }; // If the menu timer runs out, activate a function. menuSession.MenuTimer.Elapsed += (sender, e) => MenuTimer_Elapsed(sender, e, menuSession); // Create an empty list for reactions. List <IEmote> reaction_list = new List <IEmote> { }; // Add needed emote reactions for the menu. reaction_list.Add(new Emoji("↩️")); reaction_list.Add(new Emoji("\u0031\ufe0f\u20e3")); // Keycap One reaction_list.Add(new Emoji("\u0032\ufe0f\u20e3")); // Keycap Two //reaction_list.Add(new Emoji("\u0033\ufe0f\u20e3")); // Keycap Three // Add the reactions to the message. _ = ReactionHandling.AddReactionsToMenu(message, reaction_list); }
public static async Task SM_Tutorial_Basics_Page_4(SocketGuildUser user, RestUserMessage message) { // Get the account information of the command's user. var account = UserInfoClasses.GetAccount(user); // Find the menu session associated with the current user. var menuSession = Global.MenuIdList.SingleOrDefault(x => x.User.Id == user.Id); var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Creating a Scene", IconUrl = user.GetAvatarUrl() }; embed.WithAuthor(author); var footer = new EmbedFooterBuilder { Text = "" + "◀️ Previous Page | ▶️ Next Page\n" + "Page 4 / 6" }; embed.WithFooter(footer); // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.WithDescription("" + "String together a character keyword, one of their sprite numbers, and the dialogue you want them to say within quotation marks to create a scene.\n" + "\n" + $"The template will form according to your settings, which you can adjust by typing **`{BotConfig.bot.cmdPrefix}settings`** and choosing [Scene Maker Settings]."); // Attempt editing the message if it hasn't been deleted by the user yet. // If it has, catch the exception, remove the menu entry from the global list, and return. try { // Remove all reactions from the current message. await message.RemoveAllReactionsAsync(); // Edit the current active message by replacing it with the recently created embed. await message.ModifyAsync(x => { x.Embed = embed.Build(); }); } catch (Exception ex) { Console.WriteLine(ex); // Remove the menu entry from the global list. Global.MenuIdList.Remove(menuSession); return; } // Edit the menu session according to the current message. menuSession.CurrentMenu = "SM_Tutorial_Basics_Page_4"; menuSession.MenuTimer = new Timer() { // Create a timer that expires as a "time out" duration for the user. Interval = MenuConfig.menu.timerDuration, AutoReset = false, Enabled = true }; // If the menu timer runs out, activate a function. menuSession.MenuTimer.Elapsed += (sender, e) => MenuTimer_Elapsed(sender, e, menuSession); // Create an empty list for reactions. List <IEmote> reaction_list = new List <IEmote> { }; // Add needed emote reactions for the menu. reaction_list.Add(new Emoji("◀️")); reaction_list.Add(new Emoji("▶️")); // Add the reactions to the message. _ = ReactionHandling.AddReactionsToMenu(message, reaction_list); }
public static async Task Help_Main_Menu(SocketGuildUser user, RestUserMessage message) { // Get the account information of the command's user. var account = UserInfoClasses.GetAccount(user); // Find the menu session associated with the current user. var menuSession = Global.MenuIdList.SingleOrDefault(x => x.User.Id == user.Id); var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = "Social Linker Help", IconUrl = user.GetAvatarUrl() }; embed.WithAuthor(author); var footer = new EmbedFooterBuilder { Text = "⚖️ Legal Notices | 📄 Credits | ❌ Close Menu" }; embed.WithFooter(footer); // Determine the color and thumbnail for the embeded message embed.WithColor(EmbedSettings.Get_Profile_Embed_Color(account)); embed.WithThumbnailUrl(EmbedSettings.Get_Profile_Help_Thumbnail(account)); embed.WithDescription( "> **Tutorials**\n" + ":large_blue_diamond: **`Status Screens`**\n" + ":orange_circle: **`Scene Maker`**\n" + "\n" + "> **General Commands**\n" + $"`{BotConfig.bot.cmdPrefix}help`\n" + $"`{BotConfig.bot.cmdPrefix}settings`\n" + "\n" + "> **Social Commands**\n" + $"`{BotConfig.bot.cmdPrefix}hug [user]`\n" + $"`{BotConfig.bot.cmdPrefix}pat [user]`\n" + $"`{BotConfig.bot.cmdPrefix}slap [user]`\n" + $"`{BotConfig.bot.cmdPrefix}punch [user]`\n"); embed.AddField("Links", "[Social Linker Support](https://discord.gg/ZbEeZRjVvU)\n" + "[Add Social Linker to your Server](https://discord.gg/ZbEeZRjVvU)\n" + ""); // Attempt editing the message if it hasn't been deleted by the user yet. // If it has, catch the exception, remove the menu entry from the global list, and return. try { // Remove all reactions from the current message. await message.RemoveAllReactionsAsync(); // Edit the current active message by replacing it with the recently created embed. await message.ModifyAsync(x => { x.Embed = embed.Build(); }); } catch (Exception ex) { Console.WriteLine(ex); // Remove the menu entry from the global list. Global.MenuIdList.Remove(menuSession); return; } // Edit the menu session according to the current message. menuSession.CurrentMenu = "Help_Main_Menu"; menuSession.MenuTimer = new Timer() { // Create a timer that expires as a "time out" duration for the user. Interval = MenuConfig.menu.timerDuration, AutoReset = false, Enabled = true }; // If the menu timer runs out, activate a function. menuSession.MenuTimer.Elapsed += (sender, e) => MenuTimer_Elapsed(sender, e, menuSession); // Create an empty list for reactions. List <IEmote> reaction_list = new List <IEmote> { }; // Add needed emote reactions for the menu. reaction_list.Add(new Emoji("🔷")); reaction_list.Add(new Emoji("🟠")); reaction_list.Add(new Emoji("⚖️")); reaction_list.Add(new Emoji("📄")); reaction_list.Add(new Emoji("❌")); // Add the reactions to the message. _ = ReactionHandling.AddReactionsToMenu(message, reaction_list); }