Advertisement
Guest User

Pronombres

a guest
May 26th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.95 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Threading.Tasks;
  4. using System.Collections.Generic;
  5. using Discord;
  6. using Discord.Commands;
  7. using Discord.WebSocket;
  8. using Discord.Addons.Interactive;
  9.  
  10. using Surrendren_Renaissance.XML.Info;
  11.  
  12. namespace Surrendren_Renaissance.User
  13. {
  14.     public class Pronouns : InteractiveBase<SocketCommandContext>
  15.     {
  16.         [Command("pronouns", RunMode = RunMode.Async)]
  17.         [Alias("pronoun")]
  18.         [Summary("Sets a user's pronouns.")]
  19.         [RequireContext (ContextType.Guild)]
  20.         public async Task SetPronouns([Remainder] [Summary("Just incase someone tries to set manually")] string input)
  21.         {
  22.             var guildUser = Context.User as SocketGuildUser;
  23.             if (!Admin.Permissions.Check(Context, guildUser, Admin.PermissionValues.pronouns))
  24.                 return;
  25.  
  26.             ServerInfo infoServ = Program.serverList.GetServer(Context.Guild.Id);
  27.             Dictionary<int, string> pronounNames = new Dictionary<int, string>
  28.             {
  29.                 {1, "they/them" },
  30.                 {2, "he/him" },
  31.                 {3, "she/her" },
  32.                 {4, "xe/xem" },
  33.                 {5, "anypronouns" }
  34.             };
  35.  
  36.             string consoleOutput = "{0} User: {1} called the Pronouns command;\n{2}\n{3}\n{4}";
  37.  
  38.             if (input != "")
  39.             {
  40.                 if (Int32.TryParse(input, out int value))
  41.                 {
  42.                     if (pronounNames.ContainsKey(value))
  43.                     {
  44.                         var role = Context.Guild.GetRole(infoServ.GetRole(pronounNames[value]).RoleID);
  45.                         if (guildUser.Roles.Contains(role))
  46.                         {
  47.                             await guildUser.RemoveRoleAsync(role);
  48.                             await ReplyAsync("Removed: " + role.Name);
  49.                             Console.ForegroundColor = ConsoleColor.DarkGray;
  50.                             Console.WriteLine(String.Format(consoleOutput, DateTime.Now.ToString("HH:mm:ss"), guildUser.Username + guildUser.Discriminator,
  51.                                 "",
  52.                                 "Roles Removed: " + role.Name,
  53.                                 ""));
  54.                             Console.ResetColor();
  55.                         }
  56.                         else
  57.                         {
  58.                             await guildUser.AddRoleAsync(role);
  59.                             await ReplyAsync("Added: " + role.Name);
  60.                             Console.ForegroundColor = ConsoleColor.DarkGray;
  61.                             Console.WriteLine(String.Format(consoleOutput, DateTime.Now.ToString("HH:mm:ss"), guildUser.Username + guildUser.Discriminator,
  62.                                 "Roles Added: " + role.Name,
  63.                                 "",
  64.                                 ""));
  65.                             Console.ResetColor();
  66.                         }
  67.                     }
  68.                 }
  69.                 else if (pronounNames.ContainsValue(input))
  70.                 {
  71.                     var role = Context.Guild.GetRole(infoServ.GetRole(input).RoleID);
  72.                     if (guildUser.Roles.Contains(role))
  73.                     {
  74.                         await guildUser.RemoveRoleAsync(role);
  75.                         await ReplyAsync("Removed: " + role.Name);
  76.                         Console.ForegroundColor = ConsoleColor.DarkGray;
  77.                         Console.WriteLine(String.Format(consoleOutput, DateTime.Now.ToString("HH:mm:ss"), guildUser.Username + guildUser.Discriminator,
  78.                             "",
  79.                             "Roles Removed: " + role.Name,
  80.                             ""));
  81.                         Console.ResetColor();
  82.                     }
  83.                     else
  84.                     {
  85.                         await guildUser.AddRoleAsync(role);
  86.                         await ReplyAsync("Added: " + role.Name);
  87.                         Console.ForegroundColor = ConsoleColor.DarkGray;
  88.                         Console.WriteLine(String.Format(consoleOutput, DateTime.Now.ToString("HH:mm:ss"), guildUser.Username + guildUser.Discriminator,
  89.                             "Roles Added: " + role.Name,
  90.                             "",
  91.                             ""));
  92.                         Console.ResetColor();
  93.                     }
  94.                 }
  95.                 else
  96.                 {
  97.                     await ReplyAsync("I'm sorry! I'm afraid I can't find what you're asking for.");
  98.                     Console.ForegroundColor = ConsoleColor.DarkGray;
  99.                     Console.WriteLine(String.Format(consoleOutput, DateTime.Now.ToString("HH:mm:ss"), guildUser.Username + guildUser.Discriminator,
  100.                         "",
  101.                         "",
  102.                         "Unknown Strings: " + input));
  103.                     Console.ResetColor();
  104.                     return;
  105.                 }
  106.             }
  107.             else
  108.             {
  109.                 List<IMessage> commandMessages = new List<IMessage>();
  110.                 string roleMessage = "Here are the avaliable Pronouns:\n";
  111.                 string roleMessageTemplate = "`{0}` {1}\n";
  112.  
  113.                 foreach (KeyValuePair<int, string> pronoun in pronounNames)
  114.                 {
  115.                     roleMessage += string.Format(roleMessageTemplate, pronoun.Key, pronoun.Value);
  116.                 }
  117.  
  118.                 commandMessages.Add(await ReplyAsync(roleMessage));
  119.                 commandMessages.Add(await ReplyAsync("What pronouns do you want added or removed " + guildUser.Username + "? (You can respond with *multiple* numbers or names! Spaces between each number please!)"));
  120.  
  121.                 var response = await NextMessageAsync(timeout: new TimeSpan(0, 1, 30));
  122.                 commandMessages.Add(response as IMessage);
  123.  
  124.                 var splitContent = response.Content.Split(new char[0]);
  125.                 Dictionary<bool, int> parseResults = new Dictionary<bool, int>(splitContent.Length);
  126.  
  127.                 string rolesAdded = "";
  128.                 string rolesRemoved = "";
  129.                 string rolesError = "";
  130.                 string output = "Thank you for your patience {0}! Your updated roles are as follows:\n\n" +
  131.                     "`Roles Added:` {1}\n" +
  132.                     "`Roles Removed:` {2}\n" +
  133.                     "`Unknown Strings:` {3}";
  134.  
  135.                 // this foreach loop might be kinda overengineered but it gets the job done
  136.                 foreach (string theString in splitContent)
  137.                 {
  138.                     if (Int32.TryParse(theString, out int value))
  139.                     {
  140.                         if (pronounNames.ContainsKey(value))
  141.                         {
  142.                             var role = Context.Guild.GetRole(infoServ.GetRole(pronounNames[value]).RoleID);
  143.                             if (guildUser.Roles.Contains(role))
  144.                             {
  145.                                 await guildUser.RemoveRoleAsync(role);
  146.                                 rolesRemoved += pronounNames[value] + "; ";
  147.                             }
  148.                             else
  149.                             {
  150.                                 await guildUser.AddRoleAsync(role);
  151.                                 rolesAdded += pronounNames[value] + "; ";
  152.                             }
  153.                         }
  154.                     }
  155.                     else if (pronounNames.ContainsValue(theString))
  156.                     {
  157.                         var role = Context.Guild.GetRole(infoServ.GetRole(theString).RoleID);
  158.                         if (guildUser.Roles.Contains(role))
  159.                         {
  160.                             await guildUser.RemoveRoleAsync(role);
  161.                             rolesRemoved += theString + "; ";
  162.                         }
  163.                         else
  164.                         {
  165.                             await guildUser.AddRoleAsync(role);
  166.                             rolesAdded += theString + "; ";
  167.                         }
  168.                     }
  169.                     else
  170.                         rolesError += theString + "; ";
  171.                 }
  172.  
  173.                 if (guildUser.Nickname == null)
  174.                     await ReplyAsync(String.Format(output, guildUser.Username, rolesAdded, rolesRemoved, rolesError));
  175.                 else
  176.                     await ReplyAsync(String.Format(output, guildUser.Nickname, rolesAdded, rolesRemoved, rolesError));
  177.                 foreach (IMessage message in commandMessages)
  178.                 {
  179.                     await message.DeleteAsync();
  180.                 }
  181.  
  182.                 Console.ForegroundColor = ConsoleColor.DarkGray;
  183.                 Console.WriteLine(String.Format(consoleOutput, DateTime.Now.ToString("HH:mm:ss"), guildUser.Username + guildUser.Discriminator,
  184.                     "Roles Added: " + rolesAdded,
  185.                     "Roles Removed: " + rolesRemoved,
  186.                     "Unknown Strings: " + rolesError));
  187.                 Console.ResetColor();
  188.             }
  189.         }
  190.     }
  191. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement