Advertisement
Guest User

Untitled

a guest
Sep 18th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.22 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using Discord;
  8. using Discord.Commands;
  9. using Discord.WebSocket;
  10. using DiscordTutorialBot.Core.UserAccounts;
  11. using NReco.ImageGenerator;
  12. using System.Net;
  13. using Newtonsoft.Json;
  14. using Discord.Rest;
  15.  
  16. namespace DiscordTutorialBot.Modules
  17. {
  18. public class Misc : ModuleBase<SocketCommandContext>
  19. {
  20. [Command("Warn")]
  21. [RequireUserPermission(GuildPermission.KickMembers)]
  22. [RequireBotPermission(GuildPermission.KickMembers)]
  23. public async Task WarnUser(IGuildUser user)
  24. {
  25. var userAccount = UserAccounts.GetAccount((SocketUser)user);
  26. userAccount.NumberOfWarnings++;
  27. UserAccounts.SaveAccounts();
  28.  
  29. if(userAccount.NumberOfWarnings >= 3)
  30. {
  31. await user.Guild.AddBanAsync(user, 5,"You have reached 3+ or more warnings and has resulted in a ban.");
  32. }
  33. else if(userAccount.NumberOfWarnings == 2)
  34. {
  35. await user.KickAsync("You have reached 2 warnings. Don't let it happen again.");
  36. }
  37. else if (userAccount.NumberOfWarnings == 1)
  38. {
  39. // perhaps send warning message
  40. }
  41. }
  42.  
  43. [Command("Kick")]
  44. [RequireUserPermission(GuildPermission.KickMembers)]
  45. [RequireBotPermission(GuildPermission.KickMembers)]
  46. public async Task KickUser(IGuildUser user, string reason = "No reason provided.")
  47. {
  48. await user.KickAsync(reason);
  49. }
  50.  
  51. [Command("Ban")]
  52. [RequireUserPermission(GuildPermission.BanMembers)]
  53. [RequireBotPermission(GuildPermission.BanMembers)]
  54. public async Task BanUser(IGuildUser user, string reason = "No reason provided.")
  55. {
  56. await user.Guild.AddBanAsync(user, 5, reason);
  57. }
  58.  
  59. [Command("WhatLevelIs")]
  60. public async Task WhatLevelIs(uint xp)
  61. {
  62. uint level = (uint)Math.Sqrt(xp / 50);
  63. await Context.Channel.SendMessageAsync("The level is " + level);
  64. }
  65.  
  66. [Command("react")]
  67. public async Task HandleReactionMessage()
  68. {
  69. RestUserMessage msg = await Context.Channel.SendMessageAsync("React to me!");
  70. Global.MessageIdToTrack = msg.Id;
  71. }
  72.  
  73. [Command("person")]
  74. public async Task GetRandomPerson()
  75. {
  76. string json = "";
  77. using (WebClient client = new WebClient())
  78. {
  79. json = client.DownloadString("https://randomuser.me/api/?gender=female&nat=US");
  80. }
  81.  
  82. var dataObject = JsonConvert.DeserializeObject<dynamic>(json);
  83.  
  84. string firstName = dataObject.results[0].name.first.ToString();
  85. string lastName = dataObject.results[0].name.last.ToString();
  86. string avatarURL = dataObject.results[0].picture.large.ToString();
  87.  
  88. var embed = new EmbedBuilder();
  89. embed.WithThumbnailUrl(avatarURL);
  90. embed.WithTitle("Generated Person");
  91. embed.AddInlineField("First Name", firstName);
  92. embed.AddInlineField("Last Name", lastName);
  93.  
  94. await Context.Channel.SendMessageAsync("", embed: embed);
  95. }
  96.  
  97. [Command("hello")]
  98. public async Task Hello(string color = "red")
  99. {
  100. string css = "<style>\n h1{\n background-color: " + color + ";\n }\n</style>\n";
  101. string html = String.Format("<h1>Hello {0}!</h1>", Context.User.Username);
  102. var converter = new HtmlToImageConverter
  103. {
  104. Width = 250,
  105. Height = 70
  106. };
  107. var jpgBytes = converter.GenerateImage(css + html, NReco.ImageGenerator.ImageFormat.Jpeg);
  108. await Context.Channel.SendFileAsync(new MemoryStream(jpgBytes), "hello.jpg");
  109. }
  110.  
  111. [Command("myStats")]
  112. public async Task MyStats([Remainder]string arg = "")
  113. {
  114. SocketUser target = null;
  115. var mentionedUser = Context.Message.MentionedUsers.FirstOrDefault();
  116. target = mentionedUser ?? Context.User;
  117.  
  118. var account = UserAccounts.GetAccount(target);
  119. await Context.Channel.SendMessageAsync($"{target.Username} has {account.XP} XP and {account.Points} points.");
  120. }
  121.  
  122. [Command("addXP")]
  123. [RequireUserPermission(GuildPermission.Administrator)]
  124. public async Task AddXP(uint xp)
  125. {
  126. var account = UserAccounts.GetAccount(Context.User);
  127. account.XP += xp;
  128. UserAccounts.SaveAccounts();
  129. await Context.Channel.SendMessageAsync($"You gained {xp} XP.");
  130. }
  131.  
  132. [Command("echo")]
  133. public async Task Echo([Remainder]string message)
  134. {
  135. var embed = new EmbedBuilder();
  136. embed.WithTitle("Message by " + Context.User.Username);
  137. embed.WithDescription(message);
  138. embed.WithColor(new Color(0, 255, 0));
  139. await Context.Channel.SendMessageAsync("", false, embed);
  140. }
  141.  
  142. [Command("pick")]
  143. public async Task PickOne([Remainder]string message)
  144. {
  145. string[] options = message.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
  146.  
  147. Random r = new Random();
  148. string selection = options[r.Next(0, options.Length)];
  149.  
  150. var embed = new EmbedBuilder();
  151. embed.WithTitle("Choice for " + Context.User.Username);
  152. embed.WithDescription(selection);
  153. embed.WithColor(new Color(255, 255, 0));
  154. embed.WithThumbnailUrl("https://orig00.deviantart.net/3033/f/2016/103/0/c/mercy_by_raichiyo33-d9yufl4.jpg");
  155.  
  156. await Context.Channel.SendMessageAsync("", false, embed);
  157. DataStorage.AddPairToStorage(Context.User.Username + DateTime.Now.ToLongDateString(), selection);
  158. }
  159.  
  160. [Command("secret")]
  161. public async Task RevealSecret([Remainder]string arg = "")
  162. {
  163. if (!UserIsSecretOwner((SocketGuildUser)Context.User))
  164. {
  165. await Context.Channel.SendMessageAsync(":x: You need the SecretOwner role to do that. " + Context.User.Mention);
  166. return;
  167. }
  168. var dmChannel = await Context.User.GetOrCreateDMChannelAsync();
  169. await dmChannel.SendMessageAsync(Utilities.GetAlert("SECRET"));
  170. }
  171.  
  172. private bool UserIsSecretOwner(SocketGuildUser user)
  173. {
  174. string targetRoleName = "SecretOwner";
  175. var result = from r in user.Guild.Roles
  176. where r.Name == targetRoleName
  177. select r.Id;
  178. ulong roleID = result.FirstOrDefault();
  179. if (roleID == 0) return false;
  180. var targetRole = user.Guild.GetRole(roleID);
  181. return user.Roles.Contains(targetRole);
  182. }
  183.  
  184. [Command("data")]
  185. public async Task GetData()
  186. {
  187. await Context.Channel.SendMessageAsync("Data Has " + DataStorage.GetPairsCount() + " pairs.");
  188. }
  189. }
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement