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 ' )
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-03 21:08:59 +00:00
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
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. " , " 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 \n The 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-03 21:13:09 +00:00
message.channel : send ( " **Need help? Refer to my handy dandy help sheet!** \n \n ```diff \n + Action \n hug kiss pat cuddle slap \n \n + Fun \n 8ball \n \n + Info \n ping help source \n ``` " )
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 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 )
local f = io.open ( " token.txt " , " r " )
local token = f : read ( " *a " )
f : close ( )
client : run ( ' Bot ' .. token : gsub ( " \n " , " " ) )