Advertisement
notcyrusrock1

Discord Bot [easy to edit]

May 23rd, 2019
618
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 14.78 KB | None | 0 0
  1. --[[I don't use my bot anymore, so I just decided to release it. Even a skid can edit it lmao (I made it that easy) and I know my codes ugly. Bully it if you wish
  2. Dependencies:
  3. https://luvit.io/install.html
  4. https://github.com/SinisterRectus/Discordia
  5. If you need help:
  6. Cy#5148
  7. ]]
  8.  
  9. local Discordia = require'discordia'
  10. local Client = Discordia.Client{
  11.     cacheAllMembers = true;
  12. }
  13. local Enums = Discordia.enums
  14. local GuildId = "" -- your guild Id
  15. local WelcomeChannelId = "" -- where you want the bot to message the leave/join
  16. local RoleId = "" -- the role id you want to give to people when they join
  17. local BotOwnerUserId = "" -- Your UserId
  18. local BotToken = "" -- the bot token (needed to login to the bot so it can actually function)
  19. local Tries = 5
  20. local Playing = false
  21. local Min,Max = nil
  22. local RandomNumber = nil
  23. local Cmds = {}
  24. local BallTable = {"Yes.","No.","Maybe.","I can't answer right now."}
  25. local RpsTable = {"Rock","Paper","scissors"}
  26. Discordia.extensions()
  27. math.randomseed(os.time() / os.time() * os.time())
  28.  
  29. Client:on('ready',function()
  30.     Client:setGame("Type 'Help' for help. Bot Rewrite!")
  31. end)
  32.  
  33. Client:on('memberJoin',function(Member)
  34.     if Member.guild.id == GuildId then
  35.         Client:getChannel(WelcomeChannelId):send{embed = {author = {name = "Bot";url = "https://pastebin.com/M0VxVNYF";icon_url = Member.avatarURL;};fields = {{name = Member.name.."#"..Member.discriminator;value = "Welcome <@"..Member.id..">";inline = false;}}};color = Discordia.Color.fromRGB(139,0,0).value;timestamp = os.date('!%Y-%m-%dT%H:%M:%S');footer = {text = "Made by Cy#5148"};};
  36.         Member:addRole(RoleId)
  37.     end
  38. end)
  39.  
  40. Client:on('memberLeave',function(Member)
  41.     if Member.guild.id == GuildId then
  42.         Client:getChannel(WelcomeChannelId):send{embed = {author = {name = "Bot";url = "https://pastebin.com/M0VxVNYF";icon_url = Member.avatarURL;};fields = {{name = Member.name.."#"..Member.discriminator;value = "has left.";inline = false;}};color = Discordia.Color.fromRGB(139,0,0).value;timestamp = os.date('!%Y-%m-%dT%H:%M:%S');footer = {text = "Made by Cy#5148"};};};
  43.     end
  44. end)
  45.  
  46. local function RunCmd(Msg,Member)
  47. local CommandName
  48. local NewCommandName
  49. local Arguments = {}
  50. local Content = Msg.content:lower()
  51. local NewMsg = string.match(Content,"")
  52.     if NewMsg then
  53.         Content = string.gsub(Content,""..NewMsg,"",1)
  54.         for Arguments2 in string.gmatch(Content,"[^%s]+") do
  55.             table.insert(Arguments,Arguments2)
  56.         end
  57.             CommandName = Arguments[1]
  58.             table.remove(Arguments,1)
  59.             NewCommandName = Cmds[CommandName]
  60.         if NewCommandName then
  61.             NewCommandName(Arguments,Member,Msg)
  62.         end
  63.     end
  64. end
  65.  
  66. Client:on('messageCreate',function(Message)
  67. if Message.author == Client.user or Message.member.bot then return end
  68. RunCmd(Message,Message.author)
  69. local MemberId = Message.author.id
  70. local Content = Message.content:lower()
  71.     if not Message.member:hasPermission(Message.content.channel,Enums.permission.administrator) and string.find(Content,'roblox') or string.find(Content,'fortnite') or string.find(Content,'raid this') then
  72.         Message:reply("<@"..MemberId.."> You said a blacklisted word.")
  73.         Message:delete()
  74.     end
  75.     if Message.embeds or Message.embed then
  76.     if Message.member:hasPermission(Message.content.channel,Enums.permission.administrator) or string.find(Content,'https://') or string.find(Content,'http://') then return end
  77.         Message:reply("<@"..MemberId.."> Self Bots are not allowed as they break ToS.")
  78.         Message:delete()
  79.     end
  80.     if string.find(Content,"discord.gg/") and not Message.member:hasPermission(Message.content.channel,Enums.permission.administrator) then
  81.         Message:reply("<@"..MemberId.."> Discord Links are not allowed.")
  82.         Message:delete()
  83.     end
  84.     if tonumber(Content) and tonumber(Content) == RandomNumber and Playing then
  85.         Message:reply('You were correct! Thanks for playing.')
  86.         Playing = false
  87.         Tries = 5
  88.     elseif Playing and tonumber(Content) and tonumber(Content) ~= RandomNumber and tonumber(Content) < RandomNumber then
  89.         Message:reply('The number you guessed was too low! try with different number!')
  90.         Tries = Tries - 1
  91.         elseif Playing and tonumber(Content) and tonumber(Content) ~= RandomNumber and tonumber(Content) > RandomNumber then
  92.         Message:reply('The number you guessed was too high! Try with a different number!')
  93.         Tries = Tries - 1
  94.     end
  95.     if Playing and Tries == 0 and tonumber(Content) then
  96.         Message:reply('You ran out of tries. Your number was: '..RandomNumber)
  97.         Playing = false
  98.         Tries = 5
  99.     end
  100. end)
  101.  
  102. Cmds.say = function(Arguments,Member,Message)
  103.     if Arguments[1] then
  104.         local Chat = table.concat(Arguments, " ")
  105.         Message:reply{
  106.         embed = {
  107.             author = {
  108.                 name = "Bot";
  109.                 url = "https://pastebin.com/M0VxVNYF";
  110.                 icon_url = "http://cyhost.x10.mx/Gallery/80cf2ec6a5.png";
  111.             },
  112.             fields = {
  113.                     {
  114.                     name = Message.author.name.." Says ";
  115.                     value = tostring(Chat);
  116.                     inline = true;
  117.                 }
  118.             };
  119.                 color = Discordia.Color.fromRGB(139,0,0).value;
  120.                 timestamp = os.date('!%Y-%m-%dT%H:%M:%S');
  121.                 footer = {text = "Made by Cy#5148"};
  122.             }
  123.         }
  124.     end
  125. end
  126.  
  127. Cmds.help = function(Arguments,Member,Message)
  128.     if Message.guild then
  129.         Message:reply("<@"..Message.member.id.."> check your dms for the help you requested!")
  130.     end
  131.     Member:send{
  132.         embed = {
  133.             author = {
  134.                 name = "Bot";
  135.                 url = "https://pastebin.com/M0VxVNYF";
  136.                 icon_url = "http://cyhost.x10.mx/Gallery/80cf2ec6a5.png";
  137.             };
  138.         fields = {
  139.             {name = "[ Game ] RandomNumber";value = "Picks a random number.";inline = false;};
  140.             {name = "[ Game ] 8ball";value = "Tells you the answer to your question.";inline = false;};
  141.             {name = "[ Game ] HowGay";value = "Tells you how gay you are (optional @person to say how gay they are)";inline = false;};
  142.             {name = "[ Game ] Rps";value = "Game of Rock Paper Scissors";inline = false;};
  143.             {name = "[ Mod+ ] Ban"; value = "ban @user";inline = false;};
  144.             {name = "[ Mod+ ] Kick";value = "kick @user";inline = false;};
  145.             {name = "[ Mod+ ] Unban";value = "kick @user";inline = false;};
  146.             {name = "[ Misc ] Say";value = "Make the bot say something.";inline = false;};
  147.             {name = "[ Misc ] Ping";value = "Returns the amount of Milliseconds that it took for the bot to respond.";inline = false;};
  148.             {name = "[ Misc ] Enlarge";value = "Gives you the link of the emoji.";inline = false;};
  149.             {name = "[ Misc ] ServerInfo";value = "Gives you the servers info!";inline = false;};
  150.             {name = "[ Misc ] ServerIcon";value = "Gives you the server Icon";inline = false;};
  151.             {name = "[ Misc ] Avatar";value = "Avatar Gives you the avatar URL of yourself or (optional @person gives you their avatar URL)";inline = false;};
  152.         };
  153.             color = Discordia.Color.fromRGB(139,0,0).value;
  154.             timestamp = os.date('!%Y-%m-%dT%H:%M:%S');
  155.             footer = {text = "Made by Cy#5148"};
  156.         }
  157.     }
  158. end
  159.                                    
  160. Cmds.randomnumber = function(Arguments,Member,Message)
  161.     Min,Max = math.random(1,50), math.random(51, 100)
  162.     RandomNumber = math.random(Min,Max)
  163.     Playing = true
  164.     Message:reply("I'm thinking of a number between "..Min..' and '..Max)
  165. end
  166.  
  167. Cmds.kick = function(Arguments,Member,Message)
  168.     if Arguments[1] and Message.guild then
  169.         if Arguments[2] then
  170.             if Message.member:hasPermission(Message.content.channel,Enums.permission.kickMembers) or Message.member:hasPermission(Message.content,channel,Enums.permission.administrator) then
  171.                 for user in Message.mentionedUsers:iter() do
  172.                     local Kick = table.concat(Arguments, " ")
  173.                     Message:reply("<@"..user.id.."> has been kicked. For: "..Kick:sub(23))
  174.                     user:send("You were kicked from: "..Message.member.guild.name.." For: "..Kick:sub(23))
  175.                     Message.guild:kickUser(user,Kick:sub(23))
  176.                 end
  177.             end
  178.             elseif Message.member:hasPermission(Message.content.channel,Enums.permission.kickMembers) or Message.member:hasPermission(Message.content,channel,Enums.permission.administrator) and not Arguments[2] then
  179.                 for user in Message.mentionedUsers:iter() do
  180.                 Message:reply("<@"..user.id.."> has been kicked. For: Unspecified.")
  181.                 user:send("You were kicked from: "..Message.member.guild.name.." For: Unspecified.")
  182.                 Message.guild:kickUser(user,"Unspecified")
  183.             end
  184.         end
  185.     end
  186. end
  187.  
  188. Cmds.ban = function(Arguments,Member,Message)
  189.     if Arguments[1] and Message.guild then
  190.         if Arguments[2] then
  191.             if Message.member:hasPermission(Message.content.channel,Enums.permission.banMembers) or Message.member:hasPermission(Message.content,channel,Enums.permission.administrator) then
  192.                 for user in Message.mentionedUsers:iter() do
  193.                     local Ban = table.concat(Arguments, " ")
  194.                     Message:reply("<@"..user.id.."> has been banned. For: "..Ban:sub(23))
  195.                     Message.guild:banUser(user,Ban:sub(23))
  196.                     user:send("You were banned from: "..Message.member.guild.name.." For: "..Ban:sub(23))
  197.                 end
  198.             end
  199.             elseif Message.member:hasPermission(Message.content.channel,Enums.permission.banMembers) or Message.member:hasPermission(Message.content,channel,Enums.permission.administrator) and not Arguments[2] then
  200.                 for user in Message.mentionedUsers:iter() do
  201.                 Message:reply("<@"..user.id.."> has been banned. For: Unspecified.")
  202.                 Message.guild:banUser(user,"Unspecified")
  203.                 user:send("You were banned from: "..Message.member.guild.name.." For: Unspecified.")
  204.             end
  205.         end
  206.     end
  207. end
  208.  
  209. Cmds.unban = function(Arguments,Member,Message)
  210.     if Arguments[1] and Message.guild then
  211.         if Message.member:hasPermission(Message.channel,Enums.permission.banMembers) or Message.member:hasPermission(Message.channel,Enums.permission.administrator)  then
  212.             local Unban = table.concat(Arguments, " ")
  213.             Message:reply("<@"..Unban.."> has been unbanned.")
  214.             Message.member.guild:unbanUser(Unban)
  215.         end
  216.     end
  217. end
  218.  
  219. Cmds.howgay = function(Arguments,Member,Message)
  220.     if Arguments[1] then
  221.         for user in Message.mentionedUsers:iter() do
  222.             Message:reply("<@"..user.id.."> is "..math.random(0,100).."% homosexual.")
  223.         end
  224.     else
  225.         Message:reply("You are "..math.random(0,100).."% homosexual.") 
  226.     end
  227. end
  228.  
  229. Cmds.stopbot = function(Arguments,Member,Message)
  230.     if Message.member.id == BotOwnerUserId then
  231.         Client:stop()
  232.     else
  233.         Message:reply("<@"..Message.member.id.."> Only <@"..BotOwnerUserId.."> can use this command.")
  234.     end
  235. end
  236.  
  237. Cmds["8ball"] = function(Arguments,Member,Message)
  238.     Message:reply(BallTable[math.random(1,#BallTable)])
  239. end
  240.  
  241. Cmds.ping = function(Arguments,Member,Message)
  242.     local Tick = os.clock()
  243.     Message:reply("Pong! It took "..tostring(os.clock() - Tick):sub(1,6).."ms to return this message.")
  244. end
  245.  
  246. Cmds.rps = function(Arguments,Member,Message)
  247.     if Arguments[1] then
  248.     local UserAnswer
  249.     local RpsbotAnswer = RpsTable[math.random(1,#RpsTable)]
  250.         if tostring(string.lower(Arguments[1])) == "rock" then
  251.             UserAnswer = "Rock"
  252.             Message:reply{
  253.                 embed = {
  254.                     author = {
  255.                         name = "Bot";
  256.                         url = "https://pastebin.com/M0VxVNYF";
  257.                         icon_url = "http://cyhost.x10.mx/Gallery/80cf2ec6a5.png";
  258.                     };
  259.                 fields = {
  260.                     {name = Message.author.name..", Your Answer was "..UserAnswer;value = "The Bots Answer was "..RpsbotAnswer;inline = false;}
  261.                 }
  262.             }
  263.         }
  264.         elseif tostring(string.lower(Arguments[1])) == "paper" then
  265.             UserAnswer = "Paper"
  266.             Message:reply{
  267.                 embed = {
  268.                     author = {
  269.                         name = "Bot";
  270.                         url = "https://pastebin.com/M0VxVNYF";
  271.                         icon_url = "http://cyhost.x10.mx/Gallery/80cf2ec6a5.png";
  272.                     };
  273.                 fields = {
  274.                     {name = Message.author.name..", Your Answer was "..UserAnswer;value = "The Bots Answer was "..RpsbotAnswer;inline = false;}
  275.                 }
  276.             }  
  277.         }
  278.         elseif tostring(string.lower(Arguments[1])) == "scissors" then
  279.             UserAnswer = "Scissors"
  280.             Message:reply{
  281.                 embed = {
  282.                     author = {
  283.                         name = "Bot";
  284.                         url = "https://pastebin.com/M0VxVNYF";
  285.                         icon_url = "http://cyhost.x10.mx/Gallery/80cf2ec6a5.png";
  286.                     };
  287.                     fields = {
  288.                         {name = Message.author.name..", Your Answer was "..UserAnswer;value = "The Bots Answer was "..RpsbotAnswer;inline = false;}
  289.                     }
  290.                 }
  291.             }
  292.         end
  293.     end
  294. end
  295.  
  296. Cmds.enlarge = function(Arguments,Member,Message)
  297.     if Arguments[1] then
  298.         if not tostring(Arguments[1]).animated then
  299.             Message:reply("https://cdn.discordapp.com/emojis/"..tostring(Arguments[1]:match"%d+")..".png")
  300.         else
  301.             Message:reply("https://cdn.discordapp.com/emojis/"..tostring(Arguments[1]:match"%d+")..".gif")
  302.         end
  303.     end
  304. end
  305.  
  306. Cmds.serverinfo = function(Arguments,Member,Message)
  307. if not Message.guild then return Message:reply'Trying to break the bot? Nope!' end
  308. local VoiceChannels
  309. local TextChannels
  310. local Categories
  311. local Emojis
  312. local RoleAmount
  313. local BotAmount
  314. local BotTable = {}
  315. local Normies = {}
  316. local Humans
  317. local CreatedAt = Message.guild.createdAt
  318. local Date = os.date("*t", CreatedAt)
  319. local Online
  320. for i,v in pairs(Message.guild.members) do
  321.     if v.bot then
  322.         table.insert(BotTable,v)
  323.     else
  324.         table.insert(Normies,v)
  325.     end
  326. end
  327. for i = 1,#Message.guild.emojis do
  328.     Emojis = i
  329. end
  330. for i = 1,#Message.guild.voiceChannels do
  331.     VoiceChannels = i
  332. end
  333. for i = 1,#Message.guild.categories do
  334.     Categories = i
  335. end
  336. for i = 1,#Message.guild.textChannels do
  337.     TextChannels = i
  338. end
  339. for i = 1,#Message.guild.roles do
  340.     RoleAmount = i
  341. end
  342. for i = 1,#BotTable do
  343.     BotAmount = i
  344. end
  345. for i = 1,#Normies do
  346.     Normies = i
  347. end
  348.     Message:reply{
  349.         embed = {
  350.         author = {name = Message.guild.name;url = "https://pastebin.com/3NABhEEw";icon_url = Message.guild.iconURL or "http://cyhost.x10.mx/Gallery/80cf2ec6a5.png";};
  351.         fields = {
  352.                 {name = "Owner";value = Message.guild.owner.tag;inline = true;};
  353.                 {name = "Region";value = Message.guild.region;inline = true;};
  354.                 {name = "Channel Categories";value = Categories;inline = true;};
  355.                 {name = "Text Channels";value = TextChannels;inline = true;};
  356.                 {name = "Voice Channels";value = VoiceChannels;inline = true;};
  357.                 {name = "Members";value = Message.guild.totalMemberCount;inline = true;};
  358.                 {name = "People";value = Normies or 0;inline = true;};
  359.                 {name = "Bots";value = BotAmount or 0;inline = true;};
  360.                 {name = "Created At";value = Date.year.."-".."0"..Date.month.."-"..Date.day;inline = true;};
  361.                 {name = "Roles";value = RoleAmount;inline = true;};
  362.                 {name = "Emojis";value = Emojis or 0;inline = true;};
  363.                 {name = "Joined At";value = Message.member.joinedAt:sub(1,10);inline = true;};
  364.             };
  365.             color = Discordia.Color.fromRGB(139,0,0).value;
  366.             footer = {text = "Made by Cy#5148 | Server Id "..Message.guild.id};
  367.         };
  368.     }
  369. end
  370.  
  371. Cmds.servericon = function(Arguments,Member,Message)
  372.     Message:reply("The server Icon is "..Message.guild.iconURL)
  373. end
  374.  
  375. Cmds.avatar = function(Arguments,Member,Message)
  376.     if Arguments[1] then    
  377.         for user in Message.mentionedUsers:iter() do
  378.             Message:reply("<@"..user.id..">'s Avatar is "..user.avatarURL)
  379.         end
  380.     else
  381.         Message:reply("Your Avatar is "..Member.avatarURL)
  382.         Message:reply("Your Avatar is "..Member.avatarURL)
  383.     end
  384. end
  385.  
  386. Client:run(BotToken)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement