skylex
Version:
Botlarınızda Rahatlıkla Kullanabileceğiniz Bir Modüldür.
169 lines (156 loc) • 7.28 kB
JavaScript
const { EventEmitter } = require('events');
const Discord = require('discord.js');
class Bot extends EventEmitter {
constructor(client, { options = {} }) {
super();
if (!client) throw new Error("A client wasn't provided.");
if (!options.token) throw new Error("A token wasn't provided.");
if (!options.prefix) throw new Error("A prefix wasn't provided.");
this.client = client;
this.token = options.token;
this.prefix = options.prefix;
this.client.on('ready', async () => {
if (options.mobile == true) {
Discord.Constants.DefaultOptions.ws.properties.$browser = "Discord Android";
} else if (options.mobile == false) {
if (!options.presence.name) throw new Error("A presence name wasn't provided.");
this.client.user.setPresence({
activity: {
name: options.presence.name,
type: options.presence.type || "PLAYING"
},
status: options.presence.status || "online"
})
}
});
this.client.login(this.token).catch(async () => {
throw new Error("A valid token wasn't provided. If you need help come the discord.gg/delimine");
});
}
async onMessage({ name, message }) {
if (!name) throw new Error("A name wasn't provided.");
if (!message) throw new Error("A message wasn't provided.");
this.client.on('message', async (msg) => {
var prefix = this.prefix;
if (msg.content.indexOf(prefix) !== 0) return;
var args = msg.content.slice(prefix.length).trim().split(/ +/g);
var command = args.shift().toLowerCase();
if (command == name) {
var Msg = message
.replace('{ping}', this.client.ws.ping)
.replace('{user}', message.author);
return msg.channel.send(Msg);
}
});
}
async onJoinMember(guild = {}) {
if (!guild.channel) throw new Error("A channel wasn't provived.");
if (!guild.message) throw new Error("A message wasn't provived.");
this.client.on('guildMemberAdd', async (member) => {
if (!member.user.bot) {
var Msg = guild.message
.replace('{userName}', member.user.username)
.replace('{userName}', member.user.username)
.replace('{userName}', member.user.username)
.replace('{userName}', member.user.username)
.replace('{guildName}', member.guild.name)
.replace('{guildName}', member.guild.name)
.replace('{guildName}', member.guild.name)
.replace('{guildName}', member.guild.name);
return this.client.channels.cache.get(guild.channel).send(Msg).catch(async (error) => {
throw new Error(error);
});
} else {
return;
}
});
}
async onJoinBot(guild = {}) {
if (!guild.channel) throw new Error("A channel wasn't provided.");
if (!guild.message) throw new Error("A message wasn't provided.");
this.client.on('guildMemberAdd', async (member) => {
if (member.user.bot) {
var Msg = guild.message
.replace('{botName}', member.user.username)
.replace('{botName}', member.user.username)
.replace('{botName}', member.user.username)
.replace('{botName}', member.user.username)
.replace('{guildName}', member.guild.name)
.replace('{guildName}', member.guild.name)
.replace('{guildName}', member.guild.name)
.replace('{guildName}', member.guild.name);
return this.client.channels.cache.get(guild.channel).send(Msg).catch(async (error) => {
throw new Error(error);
});
} else {
return;
}
});
}
async leaveGuild(guildId) {
if (!guildId) throw new Error("A guild Id wasn't provided.");
this.client.guilds.cache.get(guildId).leave();
}
async onReady(message) {
this.client.on('ready', async () => {
console.log(message);
});
}
async onLeaveMember(guild = {}) {
if (!guild.channel) throw new Error("A channel wasn't provided.");
if (!guild.message) throw new Error("A message wasn't provided.");
this.client.on('guildMemberRemove', async (member) => {
if (!member.user.bot) {
var Msg = guild.message
.replace('{userName}', member.user.username)
.replace('{userName}', member.user.username)
.replace('{userName}', member.user.username)
.replace('{userName}', member.user.username)
.replace('{guildName}', member.guild.name)
.replace('{guildName}', member.guild.name)
.replace('{guildName}', member.guild.name)
.replace('{guildName}', member.guild.name);
return this.client.channels.cache.get(guild.channel).send(Msg).catch(async (error) => {
throw new Error(error);
});
} else {
return;
}
});
}
async onLeaveBot(guild = {}) {
if (!guild.channel) throw new Error("A channel wasn't provided.");
if (!guild.message) throw new Error("A message wasn't provided.");
this.client.on('guildMemberRemove', async (member) => {
if (member.user.bot) {
var Msg = guild.message
.replace('{botName}', member.user.username)
.replace('{botName}', member.user.username)
.replace('{botName}', member.user.username)
.replace('{botName}', member.user.username)
.replace('{guildName}', member.guild.name)
.replace('{guildName}', member.guild.name)
.replace('{guildName}', member.guild.name)
.replace('{guildName}', member.guild.name);
return this.client.channels.cache.get(guild.channel).send(Msg).catch(async (error) => {
throw new Error(error);
});
} else {
return;
}
});
}
async onGuildBoost(guild = {}) {
if (!guild.channel) throw new Error("A channel wasn't provided.");
if (!guild.message) throw new Error("A message wasn't provided.");
if (!guild.role) throw new Error("A role wasn't provided.");
this.client.on('guildMemberBoost', async (member) => {
if (member.roles.cache.has(guild.role)) {
return;
} else {
this.client.channels.cache.get(guild.channel).send(guild.message).catch(() => {});
};
});
}
}
module.exports = Bot;