101 lines
5 KiB
Lua
101 lines
5 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)
|
||
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)
|
||
|
||
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\n```")
|
||
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",""))
|