Skip to content

Commit 27ad8bd

Browse files
EP_04
1 parent 1f40723 commit 27ad8bd

File tree

7 files changed

+189
-0
lines changed

7 files changed

+189
-0
lines changed

Ep_04/.env

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
TOKEN=TOKEN_HERE

Ep_04/commands/info/ping.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module.exports = {
2+
name: "ping",
3+
description: "Returns latency and API ping",
4+
run: async (client, message, args) => {
5+
const msg = await message.channel.send(`🏓 Pinging....`);
6+
7+
msg.edit(`🏓 Pong!
8+
Latency is ${Math.floor(msg.createdTimestap - message.createdTimestap)}ms
9+
API Latency is ${Math.round(client.ping)}ms`);
10+
}
11+
}

Ep_04/commands/info/whois.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
const { RichEmbed } = require("discord.js");
2+
const { stripIndents } = require("common-tags");
3+
const { getMember, formatDate } = require("../../functions.js");
4+
5+
module.exports = {
6+
name: "whois",
7+
aliases: ["who", "user", "info"],
8+
description: "Returns user information",
9+
usage: "[username | id | mention]",
10+
run: (client, message, args) => {
11+
const member = getMember(message, args.join(" "));
12+
13+
// Member variables
14+
const joined = formatDate(member.joinedAt);
15+
const roles = member.roles
16+
.filter(r => r.id !== message.guild.id)
17+
.map(r => r).join(", ") || 'none';
18+
19+
// User variables
20+
const created = formatDate(member.user.createdAt);
21+
22+
const embed = new RichEmbed()
23+
.setFooter(member.displayName, member.user.displayAvatarURL)
24+
.setThumbnail(member.user.displayAvatarURL)
25+
.setColor(member.displayHexColor === '#000000' ? '#ffffff' : member.displayHexColor)
26+
27+
.addField('Member information:', stripIndents`**> Display name:** ${member.displayName}
28+
**> Joined at:** ${joined}
29+
**> Roles:** ${roles}`, true)
30+
31+
.addField('User information:', stripIndents`**> ID:** ${member.user.id}
32+
**> Username**: ${member.user.username}
33+
**> Tag**: ${member.user.tag}
34+
**> Created at**: ${created}`, true)
35+
36+
.setTimestamp()
37+
38+
if (member.user.presence.game)
39+
embed.addField('Currently playing', stripIndents`**> Name:** ${member.user.presence.game.name}`);
40+
41+
message.channel.send(embed);
42+
}
43+
}

Ep_04/commands/moderation/say.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
const { RichEmbed } = require("discord.js");
2+
3+
module.exports = {
4+
name: "say",
5+
aliases: ["bc", "broadcast"],
6+
description: "Says your input via the bot",
7+
usage: "<input>",
8+
run: (client, message, args) => {
9+
message.delete();
10+
11+
if (!message.member.hasPermission("MANAGE_MESSAGES"))
12+
return message.reply("You don't have the required permissions to use this command.").then(m => m.delete(5000));
13+
14+
if (args.length < 0)
15+
return message.reply("Nothing to say?").then(m => m.delete(5000));
16+
17+
const roleColor = message.guild.me.highestRole.hexColor;
18+
19+
if (args[0].toLowerCase() === "embed") {
20+
const embed = new RichEmbed()
21+
.setDescription(args.slice(1).join(" "))
22+
.setColor(roleColor === "#000000" ? "#ffffff" : roleColorv);
23+
24+
message.channel.send(embed);
25+
} else {
26+
message.channel.send(args.join(" "));
27+
}
28+
}
29+
}

Ep_04/functions.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
module.exports = {
2+
getMember: function(message, toFind = '') {
3+
toFind = toFind.toLowerCase();
4+
5+
let target = message.guild.members.get(toFind);
6+
7+
if (!target && message.mentions.members)
8+
target = message.mentions.members.first();
9+
10+
if (!target && toFind) {
11+
target = message.guild.members.find(member => {
12+
return member.displayName.toLowerCase().includes(toFind) ||
13+
member.user.tag.toLowerCase().includes(toFind)
14+
});
15+
}
16+
17+
if (!target)
18+
target = message.member;
19+
20+
return target;
21+
},
22+
23+
formatDate: function(date) {
24+
return new Intl.DateTimeFormat('en-US').format(date)
25+
}
26+
}

Ep_04/handlers/command.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
const { readdirSync } = require("fs");
2+
3+
const ascii = require("ascii-table");
4+
5+
let table = new ascii("Commands");
6+
table.setHeading("Command", "Load status");
7+
8+
module.exports = (client) => {
9+
readdirSync("./commands/").forEach(dir => {
10+
const commands = readdirSync(`./commands/${dir}/`).filter(file => file.endsWith(".js"));
11+
12+
for (let file of commands) {
13+
let pull = require(`../commands/${dir}/${file}`);
14+
15+
if (pull.name) {
16+
client.commands.set(pull.name, pull);
17+
table.addRow(file, '✅');
18+
} else {
19+
table.addRow(file, `❌ -> missing a help.name, or help.name is not a string.`);
20+
continue;
21+
}
22+
23+
if (pull.aliases && Array.isArray(pull.aliases)) pull.aliases.forEach(alias => client.aliases.set(alias, pull.name));
24+
}
25+
});
26+
27+
console.log(table.toString());
28+
}

Ep_04/index.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
const { Client, Collection } = require("discord.js");
2+
const { config } = require("dotenv");
3+
4+
const client = new Client({
5+
disableEveryone: true
6+
})
7+
8+
client.commands = new Collection();
9+
client.aliases = new Collection();
10+
11+
config({
12+
path: __dirname + "/.env"
13+
});
14+
15+
["command"].forEach(handler => {
16+
require(`./handlers/${handler}`)(client);
17+
});
18+
19+
client.on("ready", () => {
20+
console.log(`Hi, ${client.user.username} is now online!`);
21+
22+
client.user.setPresence({
23+
status: "online",
24+
game: {
25+
name: "me getting developed",
26+
type: "STREAMING"
27+
}
28+
});
29+
})
30+
31+
client.on("message", async message => {
32+
const prefix = "_";
33+
34+
if (message.author.bot) return;
35+
if (!message.guild) return;
36+
if (!message.content.startsWith(prefix)) return;
37+
if (!message.member) message.member = await message.guild.fetchMember(message);
38+
39+
const args = message.content.slice(prefix.length).trim().split(/ +/g);
40+
const cmd = args.shift().toLowerCase();
41+
42+
if (cmd.length === 0) return;
43+
44+
let command = client.commands.get(cmd);
45+
if (!command) command = client.commands.get(client.aliases.get(cmd));
46+
47+
if (command)
48+
command.run(client, message, args);
49+
});
50+
51+
client.login(process.env.TOKEN);

0 commit comments

Comments
 (0)