This repository has been archived on 2023-10-28. You can view files and clone it, but cannot push or open issues or pull requests.
joltik/bot.lua

135 lines
5.9 KiB
Lua
Raw Normal View History

2022-11-03 18:55:00 +00:00
local discordia = require('discordia')
local client = discordia.Client()
2022-11-03 20:15:23 +00:00
local http = require("simple-http")
local json = require('json')
2022-11-04 17:22:14 +00:00
local prefix = "."
2022-11-03 21:08:59 +00:00
math.randomseed(os.time())
2022-11-03 20:15:23 +00:00
--- https://stackoverflow.com/a/22843701
string.startswith = function(self, str)
return self:find('^' .. str) ~= nil
end
2022-11-03 18:55:00 +00:00
2022-11-04 17:20:29 +00:00
function load(filename)
local f = io.open(filename, "r")
if not f then return false end
local token = f:read("*a")
f:close()
return token:gsub("\n","")
end
function write(filename, inp)
local f = io.open(filename, "w")
if not f then return false end
local token = f:write(inp)
f:close()
return true
end
2022-11-03 21:08:59 +00:00
function getnick(str, guild)
if guild ~= nil then
local b = str:gsub("<@",""):gsub(">","")
local user = guild:getMember(b)
if user.nickname == nil then
return user.name
else
return user.nickname
end
2022-11-03 21:08:59 +00:00
else
local b = str:gsub("<@",""):gsub(">","")
local user = client:getUser(b)
return user.name
2022-11-03 21:08:59 +00:00
end
end
2022-11-03 18:55:00 +00:00
client:on('ready', function()
print('Logged in as '.. client.user.username)
end)
client:on('messageCreate', function(message)
2022-11-03 20:15:23 +00:00
if message.content == prefix .. 'ping' then
message.channel:send({embed = {title = "Ping?",description = "Pong!",color = 0x00FFFF}})
end
if message.content:startswith(prefix .. 'hug <@') then
2022-11-03 21:08:59 +00:00
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}}})
2022-11-03 20:15:23 +00:00
end
if message.content:startswith(prefix .. 'cuddle <@') then
2022-11-03 21:08:59 +00:00
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}}})
2022-11-03 20:15:23 +00:00
end
if message.content:startswith(prefix .. 'kiss <@') then
2022-11-03 21:08:59 +00:00
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}}})
2022-11-03 20:15:23 +00:00
end
if message.content:startswith(prefix .. 'slap <@') then
2022-11-03 21:08:59 +00:00
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}}})
2022-11-03 20:15:23 +00:00
end
if message.content:startswith(prefix .. 'pat <@') then
2022-11-03 21:08:59 +00:00
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.","Dont 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!")
2022-11-03 20:15:23 +00:00
end
if message.content == prefix .. 'help' then
2022-11-04 17:20:29 +00:00
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 counter\n\n+ Info\nping help source\n```")
end
if message.content:lower() == "welon sus" then
local welonsus = load("data/welon.txt")
welonsus = tonumber(welonsus)
message:addReaction("🗿")
welonsus = welonsus + 1
write("data/welon.txt", tostring(welonsus))
2022-11-03 20:15:23 +00:00
end
2022-11-03 21:13:09 +00:00
if message.content == prefix .. 'source' then
message.channel:send("**Look inside my brain at https://git.colean.cc/threeoh6000/joltik**")
2022-11-03 21:13:36 +00:00
end
2022-11-04 17:20:29 +00:00
if message.content == prefix .. 'counter' then
local weloncounter = load("data/welon.txt")
message.channel:send("**Times Welon has been sus:** ".. weloncounter)
end
2022-11-03 20:15:23 +00:00
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
2022-11-03 18:55:00 +00:00
end
end)
2022-11-04 17:20:29 +00:00
client:run('Bot ' .. load("token.txt"))