tilde-chat-discord-bot/bot.js

47 lines
2.4 KiB
JavaScript

const discordapp = require("discord.js");
const fs = require("fs");
const token = require("./token.json").token;
var config = require("./config.json");
const discord = new discordapp.Client();
const util = require("./util.js");
var invites = [];
discord.on("ready", async () => {
console.log(" Fetching current invites state.");
let tildeGuild = discord.guilds.get("387272314276020235");
invites = await util.loadInvites(tildeGuild);
console.log("Ready.");
})
discord.on("guildMemberAdd", async (member) => {
let tildeGuild = discord.guilds.get("387272314276020235");
let invitesCurrent = await util.loadInvites(tildeGuild);
var index;
for(i = 0; i < invites.length; i++){
if (invitesCurrent[i].useCount > invites[i].useCount){
index = i;
break;
}
}
invites = invitesCurrent;
member.addRole(tildeGuild.roles.find(x => x.name == config.invites[invites[index].name]));
});
discord.on("message", (message) => {
if (message.content == config.prefix + "restart" && message.author.id == config.owner){
message.reply(" Restarting, please wait.").then(() => {process.send("restart");});
}
if (message.content.startsWith(config.prefix + "exec") && message.author.id == config.owner){
var response = require("child_process").execSync(message.content.substr((config.prefix + "exec").length));
message.channel.sendCode("", response);
}
if(message.embeds.length > 0 && message.author.id != discord.user.id && !message.content.startsWith("**<TildeBot>**")){
message.embeds.forEach(elem => {
message.channel.send("<" + message.author.tag + "> _[RichEmbed]_ :\n" + (elem.url && !elem.url.startsWith("https://www.youtube.com") ? "**URL**: <" + elem.url + ">\n\n" : "") + (elem.author ? "**Author**: " + elem.author.name + (elem.author.url ? " (<" + elem.author.url + ">)" : "") + "\n\n" : "") + (elem.title ? "**Title**: " + elem.title + "\n\n" : "") + (elem.description ? "**Description**: " + elem.description + "\n\n" : "") + (elem.thumbnail ? "**Thumbnail**: " + elem.thumbnail.url + "\n\n" : "") + (elem.fields.length > 0 ? elem.fields.map(x => "**Name**: " + x.name + "\n" + "**Value**: " + x.value).join(";\n\n") : "") + (elem.image ? "**Image**: " + elem.image.url + "\n\n" : "") + (elem.footer ? "**Footer**: " + elem.footer.text + "\n" : ""))
})
}
})
console.log(" Starting up, please wait...")
discord.login(token);