Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- using System.Threading.Tasks;
- using System.Collections.Generic;
- using Discord;
- using Discord.Commands;
- using Discord.WebSocket;
- using Discord.Addons.Interactive;
- using Surrendren_Renaissance.XML.Info;
- namespace Surrendren_Renaissance.User
- {
- public class Pronouns : InteractiveBase<SocketCommandContext>
- {
- [Command("pronouns", RunMode = RunMode.Async)]
- [Alias("pronoun")]
- [Summary("Sets a user's pronouns.")]
- [RequireContext (ContextType.Guild)]
- public async Task SetPronouns([Remainder] [Summary("Just incase someone tries to set manually")] string input)
- {
- var guildUser = Context.User as SocketGuildUser;
- if (!Admin.Permissions.Check(Context, guildUser, Admin.PermissionValues.pronouns))
- return;
- ServerInfo infoServ = Program.serverList.GetServer(Context.Guild.Id);
- Dictionary<int, string> pronounNames = new Dictionary<int, string>
- {
- {1, "they/them" },
- {2, "he/him" },
- {3, "she/her" },
- {4, "xe/xem" },
- {5, "anypronouns" }
- };
- string consoleOutput = "{0} User: {1} called the Pronouns command;\n{2}\n{3}\n{4}";
- if (input != "")
- {
- if (Int32.TryParse(input, out int value))
- {
- if (pronounNames.ContainsKey(value))
- {
- var role = Context.Guild.GetRole(infoServ.GetRole(pronounNames[value]).RoleID);
- if (guildUser.Roles.Contains(role))
- {
- await guildUser.RemoveRoleAsync(role);
- await ReplyAsync("Removed: " + role.Name);
- Console.ForegroundColor = ConsoleColor.DarkGray;
- Console.WriteLine(String.Format(consoleOutput, DateTime.Now.ToString("HH:mm:ss"), guildUser.Username + guildUser.Discriminator,
- "",
- "Roles Removed: " + role.Name,
- ""));
- Console.ResetColor();
- }
- else
- {
- await guildUser.AddRoleAsync(role);
- await ReplyAsync("Added: " + role.Name);
- Console.ForegroundColor = ConsoleColor.DarkGray;
- Console.WriteLine(String.Format(consoleOutput, DateTime.Now.ToString("HH:mm:ss"), guildUser.Username + guildUser.Discriminator,
- "Roles Added: " + role.Name,
- "",
- ""));
- Console.ResetColor();
- }
- }
- }
- else if (pronounNames.ContainsValue(input))
- {
- var role = Context.Guild.GetRole(infoServ.GetRole(input).RoleID);
- if (guildUser.Roles.Contains(role))
- {
- await guildUser.RemoveRoleAsync(role);
- await ReplyAsync("Removed: " + role.Name);
- Console.ForegroundColor = ConsoleColor.DarkGray;
- Console.WriteLine(String.Format(consoleOutput, DateTime.Now.ToString("HH:mm:ss"), guildUser.Username + guildUser.Discriminator,
- "",
- "Roles Removed: " + role.Name,
- ""));
- Console.ResetColor();
- }
- else
- {
- await guildUser.AddRoleAsync(role);
- await ReplyAsync("Added: " + role.Name);
- Console.ForegroundColor = ConsoleColor.DarkGray;
- Console.WriteLine(String.Format(consoleOutput, DateTime.Now.ToString("HH:mm:ss"), guildUser.Username + guildUser.Discriminator,
- "Roles Added: " + role.Name,
- "",
- ""));
- Console.ResetColor();
- }
- }
- else
- {
- await ReplyAsync("I'm sorry! I'm afraid I can't find what you're asking for.");
- Console.ForegroundColor = ConsoleColor.DarkGray;
- Console.WriteLine(String.Format(consoleOutput, DateTime.Now.ToString("HH:mm:ss"), guildUser.Username + guildUser.Discriminator,
- "",
- "",
- "Unknown Strings: " + input));
- Console.ResetColor();
- return;
- }
- }
- else
- {
- List<IMessage> commandMessages = new List<IMessage>();
- string roleMessage = "Here are the avaliable Pronouns:\n";
- string roleMessageTemplate = "`{0}` {1}\n";
- foreach (KeyValuePair<int, string> pronoun in pronounNames)
- {
- roleMessage += string.Format(roleMessageTemplate, pronoun.Key, pronoun.Value);
- }
- commandMessages.Add(await ReplyAsync(roleMessage));
- 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!)"));
- var response = await NextMessageAsync(timeout: new TimeSpan(0, 1, 30));
- commandMessages.Add(response as IMessage);
- var splitContent = response.Content.Split(new char[0]);
- Dictionary<bool, int> parseResults = new Dictionary<bool, int>(splitContent.Length);
- string rolesAdded = "";
- string rolesRemoved = "";
- string rolesError = "";
- string output = "Thank you for your patience {0}! Your updated roles are as follows:\n\n" +
- "`Roles Added:` {1}\n" +
- "`Roles Removed:` {2}\n" +
- "`Unknown Strings:` {3}";
- // this foreach loop might be kinda overengineered but it gets the job done
- foreach (string theString in splitContent)
- {
- if (Int32.TryParse(theString, out int value))
- {
- if (pronounNames.ContainsKey(value))
- {
- var role = Context.Guild.GetRole(infoServ.GetRole(pronounNames[value]).RoleID);
- if (guildUser.Roles.Contains(role))
- {
- await guildUser.RemoveRoleAsync(role);
- rolesRemoved += pronounNames[value] + "; ";
- }
- else
- {
- await guildUser.AddRoleAsync(role);
- rolesAdded += pronounNames[value] + "; ";
- }
- }
- }
- else if (pronounNames.ContainsValue(theString))
- {
- var role = Context.Guild.GetRole(infoServ.GetRole(theString).RoleID);
- if (guildUser.Roles.Contains(role))
- {
- await guildUser.RemoveRoleAsync(role);
- rolesRemoved += theString + "; ";
- }
- else
- {
- await guildUser.AddRoleAsync(role);
- rolesAdded += theString + "; ";
- }
- }
- else
- rolesError += theString + "; ";
- }
- if (guildUser.Nickname == null)
- await ReplyAsync(String.Format(output, guildUser.Username, rolesAdded, rolesRemoved, rolesError));
- else
- await ReplyAsync(String.Format(output, guildUser.Nickname, rolesAdded, rolesRemoved, rolesError));
- foreach (IMessage message in commandMessages)
- {
- await message.DeleteAsync();
- }
- Console.ForegroundColor = ConsoleColor.DarkGray;
- Console.WriteLine(String.Format(consoleOutput, DateTime.Now.ToString("HH:mm:ss"), guildUser.Username + guildUser.Discriminator,
- "Roles Added: " + rolesAdded,
- "Roles Removed: " + rolesRemoved,
- "Unknown Strings: " + rolesError));
- Console.ResetColor();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement