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 ' )
2022-11-04 17:22:14 +00:00
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-04 17:20:29 +00:00
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
2022-11-03 21:08:59 +00:00
function getnick ( str , guild )
2022-11-04 17:03:05 +00:00
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
2022-11-03 21:08:59 +00:00
else
2022-11-04 17:03:05 +00:00
local b = str : gsub ( " <@ " , " " ) : gsub ( " > " , " " )
local user = client : getUser ( b )
return user.name
2022-11-03 21:08:59 +00:00
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-04 17:20:29 +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 counter \n \n + Info \n ping 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 ) )
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 21:13:36 +00:00
end
2022-11-04 17:20:29 +00:00
if message.content == prefix .. ' counter ' then
local weloncounter = load ( " data/welon.txt " )
message.channel : send ( " **Times Welon has been sus:** " .. weloncounter )
end
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 )
2022-11-04 17:20:29 +00:00
client : run ( ' Bot ' .. load ( " token.txt " ) )