110 lines
5.2 KiB
Lua
110 lines
5.2 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 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\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",""))
|