Simple discord bot written Lua
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

90 lines
3.0 KiB

local discordia = require('discordia')
local client = discordia.Client()
Tools = dofile("./API/tools.lua")
discordia.extensions()
if Tools.file_exists("./docs/firstTimeSetupComplete") == false then
print("First time setup started")
os.execute("touch docs/firstTimeSetupComplete")
print("Please enter bot token.")
process.stdin:once("data", function(input)
tokenInput = input:gsub("[\n\r]", "")
os.execute("touch docs/token.lua")
local file = io.open("./docs/token.lua", "w")
file:write('return "'..tokenInput..'"')
file:close()
print("Please enter symbol for command detection(eg, the ! in !helpme)")
process.stdin:once("data", function(input)
keyInput = input:gsub("[\n\r]", "")
os.execute("touch docs/key.lua")
local file = io.open("./docs/key.lua", "w")
file:write('return "'..keyInput..'"')
file:close()
print("First time setup complete!")
local token = dofile("./docs/token.lua")
client:run('Bot '..token)
end)
end)
else
print("If this errors because of bad token, delete docs/firstTimeSetupComplete")
local token = dofile("./docs/token.lua")
client:run('Bot '..token)
end
--Setup bot here, initializes bot
client:once("ready", function()
client:setGame("Astoria's bot, very sad!")
print('Logged in as '.. client.user.username)
Commands = Tools.initialize()
Mode = Tools.getMode()
end)
--Command handler
client:on('messageCreate', function(message)
if message.author.bot then return end
Mode = Tools.getMode()
if Mode == "test" then
Tools.setReinit(true)
end
if Mode == "normal" and Tools.getReinit() == false then
Tools.setReinit(false)
end
if Mode == "normal" and Tools.messageDectection(message, "reinitialize") == true then
reinitialize()
elseif Mode == "test" and Tools.messageDectection(message, "reinitialize") == true then
message:reply("You cannot preform this command because test is on!")
end
if Tools.getReinit() == true then
Commands = Tools.initialize()
Tools = dofile("./API/tools.lua")
Tools.setReinit(false)
end
local args = message.content:split(" ")
local lowerArgs = args[1]:lower()
local command = Commands[lowerArgs]
if command then
command.exec(message, args)
end
end)
function reinitialize(message)
local user = message.guild:getMember(message.author.id)
if Tools.messageDectection(message, "reinitialize") == true then
if not user:hasPermission("administrator") then
message:reply("You cannot re-initialize this bot!")
else
Tools.setReinit(true)
message:reply("Re-Initialized!")
end
end
end
--When a user is banned, post a lenney.
client:on('userBan', function(user, guild)
if guild.systemChannel then
guild.systemChannel:send("A user was banned ( ͡° ͜ʖ ͡°)")
end
end)
--Insert Token in a .lua file with simply returns it as a string.