From 575307c01361dc434a809c499c6834dea2491d41 Mon Sep 17 00:00:00 2001 From: Celeste Date: Thu, 3 Nov 2022 21:08:59 +0000 Subject: [PATCH] add 8ball and refactor some code --- bot.lua | 67 +++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 56 insertions(+), 11 deletions(-) diff --git a/bot.lua b/bot.lua index 07a6a26..8e6ea58 100644 --- a/bot.lua +++ b/bot.lua @@ -3,12 +3,23 @@ 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) @@ -18,27 +29,61 @@ client:on('messageCreate', function(message) message.channel:send({embed = {title = "Ping?",description = "Pong!",color = 0x00FFFF}}) end if message.content:startswith(prefix .. 'hug <@') then - local body, res = http.request("GET", "https://nekos.life/api/v2/img/hug") - message.channel:send({embed = {title = "Aww! " .. message.guild:getMember(message.author.id).username .. " hugged " .. message.guild:getMember(message.content:gsub(prefix .. 'hug <@', ''):gsub('>', '')).username .. "!",color = 0x00FFFF, image = {url = body.url, height = 0, width = 0}}}) + 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 body, res = http.request("GET", "https://nekos.life/api/v2/img/cuddle") - message.channel:send({embed = {title = "Aww! " .. message.guild:getMember(message.author.id).username .. " cuddled " .. message.guild:getMember(message.content:gsub(prefix .. 'cuddle <@', ''):gsub('>', '')).username .. "!",color = 0x00FFFF, image = {url = body.url, height = 0, width = 0}}}) + 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 body, res = http.request("GET", "https://nekos.life/api/v2/img/kiss") - message.channel:send({embed = {title = "Aww! " .. message.guild:getMember(message.author.id).username .. " kissed " .. message.guild:getMember(message.content:gsub(prefix .. 'kiss <@', ''):gsub('>', '')).username .. "!",color = 0x00FFFF, image = {url = body.url, height = 0, width = 0}}}) + 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 body, res = http.request("GET", "https://nekos.life/api/v2/img/slap") - message.channel:send({embed = {title = "Aww! " .. message.guild:getMember(message.author.id).username .. " slapped " .. message.guild:getMember(message.content:gsub(prefix .. 'slap <@', ''):gsub('>', '')).username .. "!",color = 0x00FFFF, image = {url = body.url, height = 0, width = 0}}}) + 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 body, res = http.request("GET", "https://nekos.life/api/v2/img/pat") - message.channel:send({embed = {title = "Aww! " .. message.guild:getMember(message.author.id).username .. " patted " .. message.guild:getMember(message.content:gsub(prefix .. 'pat <@', ''):gsub('>', '')).username .. "!",color = 0x00FFFF, image = {url = body.url, height = 0, width = 0}}}) + 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+ Info\nping help\n```") + 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\n```") end if message.content == prefix .. 'shutdown' then if message.author.id == "867901290336223242" then