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
2022-11-04 17:22:14 +00:00

134 lines
5.9 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 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
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
else
local b = str:gsub("<@",""):gsub(">","")
local user = client:getUser(b)
return user.name
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.","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!")
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 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))
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 .. 'counter' then
local weloncounter = load("data/welon.txt")
message.channel:send("**Times Welon has been sus:** ".. weloncounter)
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)
client:run('Bot ' .. load("token.txt"))