134 lines
5.9 KiB
Lua
134 lines
5.9 KiB
Lua
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.","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 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"))
|