Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 39.69 KB | None | 0 0
  1. using Discord;
  2. using Discord.Commands;
  3. using System;
  4. using System.IO;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Timers;
  10.  
  11. namespace DiscordTestBot
  12. {
  13.     class MyBot
  14.     {
  15.         DiscordClient discord;
  16.         CommandService commands;
  17.  
  18.         public MyBot()
  19.         {
  20.             discord = new DiscordClient(x =>
  21.             {
  22.                 x.LogLevel = LogSeverity.Info; //Defines log
  23.                 x.LogHandler = Log;
  24.             });
  25.  
  26.             discord.UsingCommands(x =>
  27.             {
  28.                 x.PrefixChar = '-';        
  29.                 x.AllowMentionPrefix = true; //Initiates the '-' prefix for commands and allows mentions
  30.                 x.HelpMode = HelpMode.Public; //Allows the help command
  31.             });
  32.  
  33.             commands = discord.GetService<CommandService>();
  34.  
  35.             RegisterEveryoneAntiAbuseCommand(); //Command calls
  36.             RegisterSpamLiamCommand();
  37.             RegisterWinsCommand();
  38.             RegisterTicksCommand();
  39.             RegisterAddWinCommand();
  40.             RegisterUndoWinCommand();
  41.             RegisterAddTickCommand();
  42.             RegisterUndoTickCommand();
  43.             RegisterAddUserCommand();
  44.             RegisterDeleteUserCommand();
  45.             RegisterPermTestCommand();
  46.             RegisterTimeCommand();
  47.             RegisterUserProfileCommand();
  48.             RegisterPlanBCommand();
  49.             RegisterChangeNameCommand();
  50.             RegisterDiceRollCommand();
  51.             RegisterPersonalMessageCommand();
  52.  
  53.             discord.ExecuteAndWait(async () =>
  54.             {
  55.                 await discord.Connect("MzQ4MTI4MTE0ODg4NTQwMTYw.DHiquQ.LqC8cykUC3eICxKYVHqHN3m_Wjc", TokenType.Bot); //Accesses the correct discord bot ID
  56.                 Game g = new Game("REEEEEEEEEEEEEE", GameType.Twitch, "https://www.twitch.tv/forsenlol");
  57.                 discord.SetGame(g);
  58.             });
  59.         }
  60.  
  61.         public static string messageToSend;
  62.  
  63.         private void RegisterSpamLiamCommand() //Spam Liam for fun
  64.         {
  65.             /*
  66.             commands.CreateCommand("spamliam")
  67.             .Description("Spams Liam.")
  68.             .Do(async (e) =>
  69.             {
  70.                 for (int i = 1; i <= 5; i++)
  71.                 {
  72.                     await e.Channel.SendMessage("<@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee <@281578558210441216> REEeee");
  73.                 }
  74.             });
  75.             */
  76.         }
  77.  
  78.         private void RegisterEveryoneAntiAbuseCommand() //Anti-Liam Measures
  79.         {
  80.             discord.MessageReceived += async (s, e) => {
  81.                 // Check to make sure that the bot is not the author
  82.                 if ((!e.Message.IsAuthor) && (e.User.Id == 281578558210441216) && (e.Message.ToString().Contains("@everyone"))) //Liam's ID: 281578558210441216
  83.                 {
  84.                     for (int i = 1; i <= 5; i++)
  85.                     {
  86.                         await e.Channel.SendMessage("<@281578558210441216> REEeee");
  87.                     }
  88.                 }
  89.             };
  90.         }
  91.  
  92.         private void RegisterWinsCommand() //Displays the wins of a specified player
  93.         {
  94.             commands.CreateCommand("wins")
  95.                 .Description("Specifies the amount of wins a player has. Usage: '-wins <player_name>'")
  96.                 .Parameter("player", ParameterType.Unparsed)
  97.                 .Do(async (e) =>
  98.                 {
  99.                     var playerName = $"{e.GetArg("player")}";
  100.                     string playerWins;
  101.                     char playerExist = 'T';
  102.                     StreamReader sr;
  103.  
  104.                     try
  105.                     {
  106.                         sr = new StreamReader("C:\\Users\\Jared\\Documents\\Player_Profiles\\" + playerName + ".txt");
  107.                         sr.Close();
  108.                     }
  109.                     catch(IOException)
  110.                     {
  111.                         playerExist = 'F';
  112.                     }
  113.                     switch(playerExist)
  114.                     {
  115.                         case 'T':
  116.                             sr = new StreamReader("C:\\Users\\Jared\\Documents\\Player_Profiles\\" + playerName + ".txt");
  117.                             playerWins = sr.ReadLine();
  118.                             sr.Close();
  119.                             switch (playerWins)
  120.                             {
  121.                                 case "1":
  122.                                     await e.Channel.SendMessage(playerName + " has " + playerWins + " win.");
  123.                                     break;
  124.                                 default:
  125.                                     await e.Channel.SendMessage(playerName + " has " + playerWins + " wins.");
  126.                                     break;
  127.                             }
  128.                             break;
  129.                         case 'F':
  130.                             await e.Channel.SendMessage("You have entered an invalid name.");
  131.                             break;
  132.                         default:
  133.                             await e.Channel.SendMessage("An unexpected error has occured.");
  134.                             break;
  135.                     }
  136.                 });
  137.                 }
  138.  
  139.         private void RegisterTicksCommand() //Displays the ticks of a specified player
  140.         {
  141.             commands.CreateCommand("ticks")
  142.                 .Description("Specifies the amount of ticks a player has. Usage: '-ticks <player_name>'")
  143.                 .Parameter("player", ParameterType.Unparsed)
  144.                 .Do(async (e) =>
  145.                 {
  146.                     var playerName = $"{e.GetArg("player")}";
  147.                     string playerTicks;
  148.                     char playerExist = 'T';
  149.                     StreamReader sr;
  150.  
  151.                     try
  152.                     {
  153.                         sr = new StreamReader("C:\\Users\\Jared\\Documents\\Player_Profiles\\" + playerName + ".txt");
  154.                         sr.Close();
  155.                     }
  156.                     catch (IOException)
  157.                     {
  158.                         playerExist = 'F';
  159.                     }
  160.                     switch (playerExist)
  161.                     {
  162.                         case 'T':
  163.                             sr = new StreamReader("C:\\Users\\Jared\\Documents\\Player_Profiles\\" + playerName + ".txt");
  164.                             playerTicks = sr.ReadLine();
  165.                             playerTicks = sr.ReadLine();
  166.                             sr.Close();
  167.                             switch (playerTicks)
  168.                             {
  169.                                 case "1":
  170.                                     await e.Channel.SendMessage(playerName + " has " + playerTicks + " tick.");
  171.                                     break;
  172.                                 default:
  173.                                     await e.Channel.SendMessage(playerName + " has " + playerTicks + " ticks.");
  174.                                     break;
  175.                             }
  176.                             break;
  177.                         case 'F':
  178.                             await e.Channel.SendMessage("You have entered an invalid name.");
  179.                             break;
  180.                         default:
  181.                             await e.Channel.SendMessage("An unexpected error has occured.");
  182.                             break;
  183.                     }
  184.                 });
  185.         }
  186.  
  187.         private void RegisterAddWinCommand() //Adds a win to a player's profile file
  188.         {
  189.             commands.CreateCommand("addwin")
  190.                 .Description("Adds a win to a player's current win count. Usage: '-addwin <player_name>'")
  191.                 .Parameter("player", ParameterType.Unparsed)
  192.                 .Do(async (e) =>
  193.                 {
  194.                     var playerName = $"{e.GetArg("player")}";
  195.                     string strOldWins;
  196.                     int intOldWins;
  197.                     int intNewWins;
  198.                     string ticksHeldValue;
  199.                     char playerExist = 'T';
  200.                     StreamReader sr;
  201.                     StreamWriter sw;
  202.  
  203.                     switch (e.User.Id)
  204.                     {
  205.                         case 176815679599542274: //Jared
  206.                         case 170671108675076108: //Thomas
  207.                         case 175755733395046400: //Colin
  208.                             if (playerName != "Better Thomas")
  209.                             {
  210.                                 try
  211.                             {
  212.                                 sr = new StreamReader("C:\\Users\\Jared\\Documents\\Player_Profiles\\" + playerName + ".txt");
  213.                                 sr.Close();
  214.                             }
  215.                             catch (IOException)
  216.                             {
  217.                                 playerExist = 'F';
  218.                             }
  219.                                 switch (playerExist)
  220.                                 {
  221.                                     case 'T':
  222.                                         sr = new StreamReader("C:\\Users\\Jared\\Documents\\Player_Profiles\\" + playerName + ".txt");
  223.                                         strOldWins = sr.ReadLine();
  224.                                         ticksHeldValue = sr.ReadLine();
  225.                                         intOldWins = Int32.Parse(strOldWins);
  226.                                         intNewWins = intOldWins + 1;
  227.                                         sr.Close();
  228.  
  229.                                         sw = new StreamWriter("C:\\Users\\Jared\\Documents\\Player_Profiles\\" + playerName + ".txt", false);
  230.                                         sw.WriteLine(intNewWins);
  231.                                         sw.WriteLine(ticksHeldValue);
  232.                                         sw.Close();
  233.  
  234.                                         sw = new StreamWriter("C:\\Users\\Jared\\Documents\\Bot_Log\\Log.txt", true);
  235.                                         sw.WriteLine("[" + DateTime.Now.ToString() + "] " + playerName + " +1 Win");
  236.                                         sw.Close();
  237.                                         switch (intNewWins)
  238.                                         {
  239.                                             case 1:
  240.                                                 await e.Channel.SendMessage("Value updated. " + playerName + " now currently has " + intNewWins + " win.");
  241.                                                 break;
  242.                                             default:
  243.                                                 await e.Channel.SendMessage("Value updated. " + playerName + " now currently has " + intNewWins + " wins.");
  244.                                                 break;
  245.                                         }
  246.                                         break;
  247.                                     case 'F':
  248.                                         await e.Channel.SendMessage("You have entered an invalid name.");
  249.                                         break;
  250.                                     default:
  251.                                         await e.Channel.SendMessage("An unexpected error has occured.");
  252.                                         break;
  253.                                 }
  254.                             }
  255.                             else
  256.                             {
  257.                                 await e.Channel.SendMessage("Wins could not be added. The selected user already has too many wins.");
  258.                             }
  259.                             break;
  260.                         default:
  261.                             await e.Channel.SendMessage("You do not have permission to use this command.");
  262.                             break;
  263.                     }
  264.                 });
  265.         }
  266.  
  267.         private void RegisterUndoWinCommand() //Subtracts a win from a player's profile file
  268.         {
  269.             commands.CreateCommand("undowin")
  270.                 .Description("Subtracts a win from a player's current win count. Usage: '-undowin <player_name>'")
  271.                 .Parameter("player", ParameterType.Unparsed)
  272.                 .Do(async (e) =>
  273.                 {
  274.                     var playerName = $"{e.GetArg("player")}";
  275.                     string strOldWins;
  276.                     int intOldWins;
  277.                     int intNewWins;
  278.                     string ticksHeldValue;
  279.                     char playerExist = 'T';
  280.                     StreamReader sr;
  281.                     StreamWriter sw;
  282.  
  283.                     switch (e.User.Id)
  284.                     {
  285.                         case 176815679599542274: //Jared
  286.                         case 170671108675076108: //Thomas
  287.                         case 175755733395046400: //Colin
  288.                             if (playerName != "Better Thomas")
  289.                             {
  290.                                 try
  291.                             {
  292.                                 sr = new StreamReader("C:\\Users\\Jared\\Documents\\Player_Profiles\\" + playerName + ".txt");
  293.                                 sr.Close();
  294.                             }
  295.                             catch (IOException)
  296.                             {
  297.                                 playerExist = 'F';
  298.                             }
  299.                                 switch (playerExist)
  300.                                 {
  301.                                     case 'T':
  302.                                         sr = new StreamReader("C:\\Users\\Jared\\Documents\\Player_Profiles\\" + playerName + ".txt");
  303.                                         strOldWins = sr.ReadLine();
  304.                                         ticksHeldValue = sr.ReadLine();
  305.                                         intOldWins = Int32.Parse(strOldWins);
  306.                                         intNewWins = intOldWins - 1;
  307.                                         sr.Close();
  308.  
  309.                                         sw = new StreamWriter("C:\\Users\\Jared\\Documents\\Player_Profiles\\" + playerName + ".txt", false);
  310.                                         sw.WriteLine(intNewWins);
  311.                                         sw.WriteLine(ticksHeldValue);
  312.                                         sw.Close();
  313.  
  314.                                         sw = new StreamWriter("C:\\Users\\Jared\\Documents\\Bot_Log\\Log.txt", true);
  315.                                         sw.WriteLine("[" + DateTime.Now.ToString() + "] " + playerName + " -1 Win");
  316.                                         sw.Close();
  317.                                         switch (intNewWins)
  318.                                         {
  319.                                             case 1:
  320.                                                 await e.Channel.SendMessage("Value updated. " + playerName + " now currently has " + intNewWins + " win.");
  321.                                                 break;
  322.                                             default:
  323.                                                 await e.Channel.SendMessage("Value updated. " + playerName + " now currently has " + intNewWins + " wins.");
  324.                                                 break;
  325.                                         }
  326.                                         break;
  327.                                     case 'F':
  328.                                         await e.Channel.SendMessage("You have entered an invalid name.");
  329.                                         break;
  330.                                     default:
  331.                                         await e.Channel.SendMessage("An unexpected error has occured.");
  332.                                         break;
  333.                                 }
  334.                             }
  335.                             else
  336.                             {
  337.                                 await e.Channel.SendMessage("Wins could not be removed. The selected user already has too many wins.");
  338.                             }
  339.                             break;
  340.                         default:
  341.                             await e.Channel.SendMessage("You do not have permission to use this command.");
  342.                             break;
  343.                     }
  344.                 });
  345.         }
  346.  
  347.         private void RegisterAddTickCommand() //Adds a tick to a player's profile file
  348.         {
  349.             commands.CreateCommand("addtick")
  350.                 .Description("Adds a tick to a player's current tick count. Usage: '-addtick <player_name>'")
  351.                 .Parameter("player", ParameterType.Unparsed)
  352.                 .Do(async (e) =>
  353.                 {
  354.                     var playerName = $"{e.GetArg("player")}";
  355.                     string strOldTicks;
  356.                     int intOldTicks;
  357.                     int intNewTicks;
  358.                     string winsHeldValue;
  359.                     char playerExist = 'T';
  360.                     StreamReader sr;
  361.                     StreamWriter sw;
  362.  
  363.                     switch (e.User.Id)
  364.                     {
  365.                         case 176815679599542274: //Jared
  366.                         case 170671108675076108: //Thomas
  367.                         case 175755733395046400: //Colin
  368.                             try
  369.                             {
  370.                                 sr = new StreamReader("C:\\Users\\Jared\\Documents\\Player_Profiles\\" + playerName + ".txt");
  371.                                 sr.Close();
  372.                             }
  373.                             catch (IOException)
  374.                             {
  375.                                 playerExist = 'F';
  376.                             }
  377.                             switch (playerExist)
  378.                             {
  379.                                 case 'T':
  380.                                     sr = new StreamReader("C:\\Users\\Jared\\Documents\\Player_Profiles\\" + playerName + ".txt");
  381.                                     winsHeldValue = sr.ReadLine();
  382.                                     strOldTicks = sr.ReadLine();
  383.                                     intOldTicks = Int32.Parse(strOldTicks);
  384.                                     intNewTicks = intOldTicks + 1;
  385.                                     sr.Close();
  386.  
  387.                                     sw = new StreamWriter("C:\\Users\\Jared\\Documents\\Player_Profiles\\" + playerName + ".txt", false);
  388.                                     sw.WriteLine(winsHeldValue);
  389.                                     sw.WriteLine(intNewTicks);
  390.                                     sw.Close();
  391.  
  392.                                     sw = new StreamWriter("C:\\Users\\Jared\\Documents\\Bot_Log\\Log.txt", true);
  393.                                     sw.WriteLine("[" + DateTime.Now.ToString() + "] " + playerName + " +1 Tick");
  394.                                     sw.Close();
  395.                                     switch (intNewTicks)
  396.                                     {
  397.                                         case 1:
  398.                                             await e.Channel.SendMessage("Value updated. " + playerName + " now currently has " + intNewTicks + " tick.");
  399.                                             break;
  400.                                         default:
  401.                                             await e.Channel.SendMessage("Value updated. " + playerName + " now currently has " + intNewTicks + " ticks.");
  402.                                             break;
  403.                                     }
  404.                                     break;
  405.                                 case 'F':
  406.                                     await e.Channel.SendMessage("You have entered an invalid name.");
  407.                                     break;
  408.                                 default:
  409.                                     await e.Channel.SendMessage("An unexpected error has occured.");
  410.                                     break;
  411.                             }
  412.                             break;
  413.                         default:
  414.                             await e.Channel.SendMessage("You do not have permission to use this command.");
  415.                             break;
  416.                     }
  417.                 });
  418.         }
  419.  
  420.         private void RegisterUndoTickCommand() //Subtracts a tick from a player's profile file
  421.         {
  422.             commands.CreateCommand("undotick")
  423.                 .Description("Subtracts a tick from a player's current tick count. Usage: '-undotick <player_name>'")
  424.                 .Parameter("player", ParameterType.Unparsed)
  425.                 .Do(async (e) =>
  426.                 {
  427.                     var playerName = $"{e.GetArg("player")}";
  428.                     string strOldTicks;
  429.                     int intOldTicks;
  430.                     int intNewTicks;
  431.                     string winsHeldValue;
  432.                     char playerExist = 'T';
  433.                     StreamReader sr;
  434.                     StreamWriter sw;
  435.  
  436.                     switch (e.User.Id)
  437.                     {
  438.                         case 176815679599542274: //Jared
  439.                         case 170671108675076108: //Thomas
  440.                         case 175755733395046400: //Colin
  441.                             try
  442.                             {
  443.                                 sr = new StreamReader("C:\\Users\\Jared\\Documents\\Player_Profiles\\" + playerName + ".txt");
  444.                                 sr.Close();
  445.                             }
  446.                             catch (IOException)
  447.                             {
  448.                                 playerExist = 'F';
  449.                             }
  450.                             switch (playerExist)
  451.                             {
  452.                                 case 'T':
  453.                                     sr = new StreamReader("C:\\Users\\Jared\\Documents\\Player_Profiles\\" + playerName + ".txt");
  454.                                     winsHeldValue = sr.ReadLine();
  455.                                     strOldTicks = sr.ReadLine();
  456.                                     intOldTicks = Int32.Parse(strOldTicks);
  457.                                     intNewTicks = intOldTicks - 1;
  458.                                     sr.Close();
  459.  
  460.                                     sw = new StreamWriter("C:\\Users\\Jared\\Documents\\Player_Profiles\\" + playerName + ".txt", false);
  461.                                     sw.WriteLine(winsHeldValue);
  462.                                     sw.WriteLine(intNewTicks);
  463.                                     sw.Close();
  464.  
  465.                                     sw = new StreamWriter("C:\\Users\\Jared\\Documents\\Bot_Log\\Log.txt", true);
  466.                                     sw.WriteLine("[" + DateTime.Now.ToString() + "] " + playerName + " -1 Tick");
  467.                                     sw.Close();
  468.                                     switch (intNewTicks)
  469.                                     {
  470.                                         case 1:
  471.                                             await e.Channel.SendMessage("Value updated. " + playerName + " now currently has " + intNewTicks + " tick.");
  472.                                             break;
  473.                                         default:
  474.                                             await e.Channel.SendMessage("Value updated. " + playerName + " now currently has " + intNewTicks + " ticks.");
  475.                                             break;
  476.                                     }
  477.                                     break;
  478.                                 case 'F':
  479.                                     await e.Channel.SendMessage("You have entered an invalid name.");
  480.                                     break;
  481.                                 default:
  482.                                     await e.Channel.SendMessage("An unexpected error has occured.");
  483.                                     break;
  484.                             }
  485.                             break;
  486.                         default:
  487.                             await e.Channel.SendMessage("You do not have permission to use this command.");
  488.                             break;
  489.                     }
  490.                 });
  491.         }
  492.  
  493.         private void RegisterAddUserCommand() //Creates a new player profile file
  494.         {
  495.             commands.CreateCommand("adduser")
  496.                 .Description("Adds a user to the player database. Usage: '-adduser <user_name>'")
  497.                 .Parameter("user", ParameterType.Unparsed)
  498.                 .Do(async (e) =>
  499.                 {
  500.                     var userName = $"{e.GetArg("user")}";
  501.                     string filePath = "C:\\Users\\Jared\\Documents\\Player_Profiles\\" + userName + ".txt";
  502.  
  503.                     switch (e.User.Id)
  504.                     {
  505.                         case 176815679599542274: //Jared
  506.                         case 170671108675076108: //Thomas
  507.                         case 175755733395046400: //Colin
  508.                             if (!File.Exists(filePath))
  509.                             {
  510.                                 using (StreamWriter sw = File.CreateText(filePath))
  511.                                 {
  512.                                     sw.WriteLine("0");
  513.                                     sw.WriteLine("0");
  514.                                     sw.Close();
  515.                                 }
  516.                                 await e.Channel.SendMessage("The user '" + userName + "' has been successfully created.");
  517.                             }
  518.                             else
  519.                             {
  520.                                 await e.Channel.SendMessage("This user already exists.");
  521.                             }
  522.                             break;
  523.                         default:
  524.                             await e.Channel.SendMessage("You do not have permission to use this command.");
  525.                             break;
  526.                     }
  527.                 });
  528.         }
  529.  
  530.         private void RegisterDeleteUserCommand() //Deletes an existing player profile file
  531.         {
  532.             commands.CreateCommand("deluser")
  533.                 .Description("Deletes a user from the player database. Usage: '-deluser <user_name>'")
  534.                 .Parameter("user", ParameterType.Unparsed)
  535.                 .Do(async (e) =>
  536.                 {
  537.                     var userName = $"{e.GetArg("user")}";
  538.                     string filePath = "C:\\Users\\Jared\\Documents\\Player_Profiles\\" + userName + ".txt";
  539.  
  540.                     switch (e.User.Id)
  541.                     {
  542.                         case 176815679599542274: //Jared
  543.                         case 170671108675076108: //Thomas
  544.                         case 175755733395046400: //Colin
  545.                             if (File.Exists(filePath))
  546.                             {
  547.                                 File.Delete(filePath);
  548.                                 await e.Channel.SendMessage("The user '" + userName + "' has been successfully deleted.");
  549.                             }
  550.                             else
  551.                             {
  552.                                 await e.Channel.SendMessage("That user does not exist.");
  553.                             }
  554.                             break;
  555.                         default:
  556.                             await e.Channel.SendMessage("You do not have permission to use this command.");
  557.                             break;
  558.                     }
  559.                 });
  560.         }
  561.  
  562.         private void RegisterPermTestCommand() //Test command to check permissions
  563.         {
  564.         commands.CreateCommand("permtest")
  565.             .Description("Checks to see what your command permissions are.")
  566.             .Do(async (e) =>
  567.             {
  568.                 switch (e.User.Id)
  569.                 {
  570.                     case 176815679599542274: //Jared
  571.                     case 170671108675076108: //Thomas
  572.                     case 175755733395046400: //Colin
  573.                         await e.Channel.SendMessage("You have elevated priveleges.");
  574.                         break;
  575.                     default:
  576.                         await e.Channel.SendMessage("Oy vey, check your privelege!");
  577.                         break;
  578.                 }
  579.  
  580.             });
  581.         }
  582.  
  583.         private void RegisterTimeCommand() //Checks the time
  584.         {
  585.             commands.CreateCommand("time")
  586.             .Description("Displays the current time and date.")
  587.             .Do(async (e) =>
  588.             {
  589.                 await e.Channel.SendMessage(DateTime.Now.ToString());
  590.             });
  591.         }
  592.  
  593.         private void RegisterUserProfileCommand() //Checks a user's profile
  594.         {
  595.             commands.CreateCommand("profile")
  596.            .Description("Checks the statistics of a certain user. Usage: 'profile <user_name>'")
  597.            .Parameter("player", ParameterType.Unparsed)
  598.            .Do(async (e) =>
  599.            {
  600.            var playerName = $"{e.GetArg("player")}";
  601.            string playerWins;
  602.            string playerTicks;
  603.            char playerExist = 'T';
  604.            StreamReader sr;
  605.  
  606.            try
  607.            {
  608.                sr = new StreamReader("C:\\Users\\Jared\\Documents\\Player_Profiles\\" + playerName + ".txt");
  609.                sr.Close();
  610.            }
  611.            catch (IOException)
  612.            {
  613.                playerExist = 'F';
  614.            }
  615.                switch (playerExist)
  616.                {
  617.                    case 'T':
  618.                        sr = new StreamReader("C:\\Users\\Jared\\Documents\\Player_Profiles\\" + playerName + ".txt");
  619.                        playerWins = sr.ReadLine();
  620.                        playerTicks = sr.ReadLine();
  621.                        sr.Close();
  622.  
  623.                        switch (playerWins)
  624.                        {
  625.                            case "1":
  626.                                switch (playerTicks)
  627.                                {
  628.                                    case "1":
  629.                                        await e.Channel.SendMessage("Profile for user " + "'" + playerName + "':\n" + playerWins + " win\n" + playerTicks + " tick");
  630.                                        break;
  631.                                    default:
  632.                                        await e.Channel.SendMessage("Profile for user " + "'" + playerName + "':\n" + playerWins + " win\n" + playerTicks + " ticks");
  633.                                        break;
  634.                                }
  635.                                break;
  636.                            default:
  637.                                switch (playerTicks)
  638.                                {
  639.                                    case "1":
  640.                                        await e.Channel.SendMessage("Profile for user " + "'" + playerName + "':\n" + playerWins + " wins\n" + playerTicks + " tick");
  641.                                        break;
  642.                                    default:
  643.                                        await e.Channel.SendMessage("Profile for user " + "'" + playerName + "':\n" + playerWins + " wins\n" + playerTicks + " ticks");
  644.                                        break;
  645.                                }
  646.                                break;
  647.                        }
  648.                        break;
  649.                    case 'F':
  650.                        await e.Channel.SendMessage("You have entered an invalid name.");
  651.                        break;
  652.                    default:
  653.                        await e.Channel.SendMessage("An unexpected error has occured.");
  654.                        break;
  655.                }
  656.            });
  657.         }
  658.  
  659.         private void RegisterPlanBCommand() //Recovers from Thomas attacks
  660.         {
  661.             commands.CreateCommand("dontworryaboutit")
  662.                 .Description("null")
  663.                 .Do(async (e) =>
  664.                 {
  665.                     var userName = e.User;
  666.                     switch (e.User.Id)
  667.                     {
  668.                         case 176815679599542274: //Jared
  669.                             //new ChannelPermissionOverrides(sendMessages: PermValue.Deny);
  670.                             //await Channel.AddPermissionsRule(e.User, NewOverwrites);
  671.                             //await Channel.AddPermissionsRule(e.User, sendMessages);
  672.                             break;
  673.                         default:
  674.                             await e.Channel.SendMessage("null");
  675.                             break;
  676.                     }
  677.                 });
  678.         }
  679.  
  680.         private void RegisterChangeNameCommand() //Changes someone's name
  681.         {
  682.             commands.CreateCommand("setnick")
  683.             .Description("Changes, or sets, the nickname of the specified user. Usage: 'setnick <user_name> <new_name>'")
  684.             .Parameter("user")
  685.             .Parameter("newname", ParameterType.Unparsed)
  686.             .Do(async (e) =>
  687.             {
  688.                 switch (e.User.Id)
  689.                 {
  690.                     case 176815679599542274: //Jared
  691.                     case 170671108675076108: //Thomas
  692.                     case 175755733395046400: //Colin
  693.                         var user = e.Channel.FindUsers(e.GetArg("user")).FirstOrDefault();
  694.                         string newname = e.GetArg("newname");
  695.                         await user.Edit(nickname: newname).ConfigureAwait(false);
  696.                         break;
  697.                     default:
  698.                         await e.Channel.SendMessage("You do not have permission to use this command.");
  699.                         break;
  700.                 }
  701.             });
  702.         }
  703.  
  704.         private void RegisterDiceRollCommand() //Rolls a die
  705.         {
  706.             commands.CreateCommand("roll")
  707.             .Description("Rolls a die and gives the result to the user. Usage: 'roll <max_number>'")
  708.             .Parameter("number")
  709.             .Do(async (e) =>
  710.             {
  711.                 int randomMax = 0;
  712.                 var pickedNumber = $"{e.GetArg("number")}";
  713.                 char errorOccurred = 'F';
  714.  
  715.                 try
  716.                 {
  717.                     randomMax = Convert.ToInt32(pickedNumber);
  718.                 }
  719.                 catch (FormatException)
  720.                 {
  721.                     await e.Channel.SendMessage("You did not enter a number.");
  722.                     errorOccurred = 'T';
  723.                 }
  724.                 catch (OverflowException)
  725.                 {
  726.                     await e.Channel.SendMessage("The number you entered is too large.");
  727.                     errorOccurred = 'T';
  728.                 }
  729.  
  730.                 if (randomMax > 0)
  731.                 {
  732.                     Random rnd = new Random();
  733.                     int randomRoll = rnd.Next(1, randomMax);
  734.                     await e.Channel.SendMessage("You rolled a " + randomRoll + ".");
  735.                 }
  736.                 else if (errorOccurred == 'F')
  737.                 {
  738.                     await e.Channel.SendMessage("You entered an invalid number.");
  739.                 }
  740.             });
  741.         }
  742.  
  743.         private void RegisterPersonalMessageCommand() //Sends a personal message to people
  744.         {
  745.             commands.CreateCommand("funcommand")
  746.             .Description("It's amazing. Who knows what it does?")
  747.             .Parameter("target", ParameterType.Required)
  748.             .Parameter("message", ParameterType.Required)
  749.             .Parameter("timestospam", ParameterType.Required)
  750.             .Do(async (e) =>
  751.             {
  752.                 ulong id;
  753.                 User u = null;
  754.                 char errorOccurred = 'F';
  755.                 long timesToSpam = 0;
  756.  
  757.                 string findUser = e.GetArg("target");
  758.                 messageToSend = e.GetArg("message");
  759.                 string tempTimes = e.GetArg("timestospam");
  760.  
  761.                 try //Testing the number for conversion errors
  762.                 {
  763.                     timesToSpam = Convert.ToInt32(tempTimes);
  764.                 }
  765.                 catch (FormatException)
  766.                 {
  767.                     await e.Channel.SendMessage("You did not enter a number.");
  768.                     errorOccurred = 'T';
  769.                 }
  770.                 catch (OverflowException)
  771.                 {
  772.                     await e.Channel.SendMessage("The number you entered does not fit into the data type.");
  773.                     errorOccurred = 'T';
  774.                 }
  775.  
  776.                 if (timesToSpam < 1) //Too small of a number
  777.                 {
  778.                     await e.Channel.SendMessage("The number you entered is too large.");
  779.                     errorOccurred = 'T';
  780.                 }
  781.  
  782.                 if ((findUser == "Rook") || (findUser == "fishlunatic") || (findUser == "JardTheBard"))
  783.                 {
  784.                     await e.Channel.SendMessage("This user cannot be targeted.");
  785.                     errorOccurred = 'T';
  786.                 }
  787.  
  788.                 if (errorOccurred == 'F')
  789.                 {
  790.                     switch (e.User.Id)
  791.                     {
  792.                         case 176815679599542274: //Jared
  793.                         case 170671108675076108: //Thomas
  794.                         case 175755733395046400: //Colin
  795.                             if (!string.IsNullOrWhiteSpace(findUser))
  796.                             {
  797.                                 if (e.Message.MentionedUsers.Count() == 1)
  798.                                     u = e.Message.MentionedUsers.FirstOrDefault();
  799.                                 else if (e.Server.FindUsers(findUser).Any())
  800.                                     u = e.Server.FindUsers(findUser).FirstOrDefault();
  801.                                 else if (ulong.TryParse(findUser, out id))
  802.                                     u = e.Server.GetUser(id);
  803.  
  804.                                 for (int i = 1; i <= timesToSpam; i++)
  805.                                 {
  806.                                     await u.SendMessage(messageToSend);
  807.                                 }
  808.                             }
  809.                             break;
  810.                         default:
  811.                             await e.Channel.SendMessage("You do not have permission to use this command.");
  812.                             break;
  813.                     }
  814.                 }
  815.  
  816.             });
  817.         }
  818.  
  819.         private void Log(object sender, LogMessageEventArgs e) //Sends error and information logs to the console
  820.         {
  821.             Console.WriteLine(e.Message);
  822.         }
  823.     }
  824. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement