local discordia = require('discordia') local client = discordia.Client() local http = require("simple-http") local json = require('json') local prefix = "." math.randomseed(os.time()) --- https://stackoverflow.com/a/22843701 string.startswith = function(self, str) return self:find('^' .. str) ~= nil end function getnick(str, guild) local b = str:gsub("<@",""):gsub(">","") local user = guild:getMember(b) if user.nickname == nil then return user.name else return user.nickname end end client:on('ready', function() print('Logged in as '.. client.user.username) end) client:on('messageCreate', function(message) if message.content == prefix .. 'ping' then message.channel:send({embed = {title = "Ping?",description = "Pong!",color = 0x00FFFF}}) end if message.content:startswith(prefix .. 'hug <@') then local action = "hug" local actioner = " hugged " local body, res = http.request("GET", "https://nekos.life/api/v2/img/" .. action) message.channel:send({embed = {title = "Aww! " .. getnick(message.author.id, message.guild) .. actioner .. getnick(message.content:gsub(prefix .. action .. ' ', ''), message.guild) .. "!",color = 0x00FFFF, image = {url = body.url, height = 0, width = 0}}}) end if message.content:startswith(prefix .. 'cuddle <@') then local action = "cuddle" local actioner = " cuddled " local body, res = http.request("GET", "https://nekos.life/api/v2/img/" .. action) message.channel:send({embed = {title = "Aww! " .. getnick(message.author.id, message.guild) .. actioner .. getnick(message.content:gsub(prefix .. action .. ' ', ''), message.guild) .. "!",color = 0x00FFFF, image = {url = body.url, height = 0, width = 0}}}) end if message.content:startswith(prefix .. 'kiss <@') then local action = "kiss" local actioner = " kissed " local body, res = http.request("GET", "https://nekos.life/api/v2/img/" .. action) message.channel:send({embed = {title = "Aww! " .. getnick(message.author.id, message.guild) .. actioner .. getnick(message.content:gsub(prefix .. action .. ' ', ''), message.guild) .. "!",color = 0x00FFFF, image = {url = body.url, height = 0, width = 0}}}) end if message.content:startswith(prefix .. 'slap <@') then local action = "slap" local actioner = " slapped " local body, res = http.request("GET", "https://nekos.life/api/v2/img/" .. action) message.channel:send({embed = {title = "Woah! " .. getnick(message.author.id, message.guild) .. actioner .. getnick(message.content:gsub(prefix .. action .. ' ', ''), message.guild) .. "!",color = 0x00FFFF, image = {url = body.url, height = 0, width = 0}}}) end if message.content:startswith(prefix .. 'pat <@') then local action = "pat" local actioner = " patted " local body, res = http.request("GET", "https://nekos.life/api/v2/img/" .. action) message.channel:send({embed = {title = "Aww! " .. getnick(message.author.id, message.guild) .. actioner .. getnick(message.content:gsub(prefix .. action .. ' ', ''), message.guild) .. "!",color = 0x00FFFF, image = {url = body.url, height = 0, width = 0}}}) end if message.content:startswith(prefix .. '8ball') then local array = {"As I see it, yes.", "Ask again later.", "Better not tell you now.", "Cannot predict now.", "Concentrate and ask again.","Don’t count on it.", "It is certain.", "It is decidedly so.", "Most likely.", "My reply is no.", "My sources say no.","Outlook not so good.", "Outlook good.", "Reply hazy, try again.", "Signs point to yes.", "Very doubtful.", "Without a doubt.","Yes.", "Yes – definitely.", "You may rely on it."} local r = math.random(1,20) if message.content:gsub(prefix..'8ball','') == "" or message.content:gsub(prefix..'8ball','') == " " then message.channel:send("The 8-ball requires a question!") else message.channel:send("**" .. getnick(message.author.id,message.guild).. "** has asked the magic 8-ball: **"..message.content:gsub(prefix..'8ball ','').."**\n\nThe magic 8-ball replies: **"..array[r].."**") end end if message.content == prefix .. 'hug' then message.channel:send("You gotta hug someone!") end if message.content == prefix .. 'cuddle' then message.channel:send("You gotta cuddle someone!") end if message.content == prefix .. 'slap' then message.channel:send("You gotta slap someone!") end if message.content == prefix .. 'kiss' then message.channel:send("You gotta kiss someone!") end if message.content == prefix .. 'pat' then message.channel:send("You gotta pat someone!") end if message.content == prefix .. 'help' then message.channel:send("**Need help? Refer to my handy dandy help sheet!**\n\n```diff\n+ Action\nhug kiss pat cuddle slap\n\n+ Fun\n8ball\n\n+ Info\nping help source\n```") end if message.content == prefix .. 'source' then message.channel:send("**Look inside my brain at https://git.colean.cc/threeoh6000/joltik**") end if message.content == prefix .. 'shutdown' then if message.author.id == "867901290336223242" then message.channel:send("**Shutting down!** Good night mother! :heart:") client:stop() else message.channel:send("You aren't my mother!") end end end) local f = io.open("token.txt", "r") local token = f:read("*a") f:close() client:run('Bot ' .. token:gsub("\n",""))