Skip to content

Commit 94f35a6

Browse files
authored
Merge pull request #35 from NGIT-Open-Source/develop
v1.5
2 parents 587d163 + 96fb969 commit 94f35a6

File tree

7 files changed

+223
-62
lines changed

7 files changed

+223
-62
lines changed

commands/run.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,8 @@ module.exports = {
100100
const user = interaction.user.id;
101101

102102
// prompt user to send code
103-
await interaction.reply({ content: `Send your **${lang}** code enclosed in a code block. Request expires in 15 minutes!`, ephemeral: true });
103+
const helpLink = 'https://github.com/NGIT-Open-Source/Neil.js/wiki/Run-your-code-with-Neil.js';
104+
await interaction.reply({ content: `Send your **${lang}** code enclosed in a code block. [Help](<${helpLink}>)?`, ephemeral: true });
104105

105106
// Check if any received message by user is a codeblock, if not wait for reply until timer ends
106107
// `filter` returns a boolean, code will be processed only when it returns True

commands/server.js

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,29 @@
1+
// Docs reference
2+
// Interaction: https://discord.js.org/#/docs/main/stable/class/Interaction
3+
// Guild: https://discord.js.org/#/docs/main/stable/class/Guild
4+
// GuildMembers: https://discord.js.org/#/docs/main/stable/class/GuildMemberManager
15
const { SlashCommandBuilder } = require('@discordjs/builders');
6+
const { MessageEmbed } = require('discord.js');
7+
8+
// EMBED CONSTRUCTOR
9+
const embed = (guild, count) => new MessageEmbed()
10+
.setTitle(guild.name)
11+
.setThumbnail(guild.iconURL())
12+
.setFields(
13+
{ name: '📅Created', value: `**<t:${Math.floor(guild.createdTimestamp / 1000)}:R>**`, inline: true },
14+
{ name: `👥Members(${guild.memberCount})`, value: `**${count}** Users | **${guild.memberCount - count}** Bots`, inline: true },
15+
{ name: '👑Owner:', value: `<@${guild.ownerId}>`, inline: true });
216

317
module.exports = {
418
data: new SlashCommandBuilder()
519
.setName('server')
620
.setDescription('Replies with Server info!'),
721
async execute(interaction) {
8-
// MultiLine strings using `Template Literals`, it outputs as we see in our code, So beware, don't add spaces/tabs below
9-
await interaction.reply(`
10-
Server name: ${interaction.guild.name}
11-
Total members: ${interaction.guild.memberCount}
12-
Created on: ${interaction.guild.createdAt}
13-
VerificationLvl: ${interaction.guild.verificationLevel}
14-
`);
22+
// Guild
23+
const guild = interaction.guild;
24+
// GuildMembers
25+
const userCount = guild.members.cache.filter(cnt => cnt.user.bot).size;
26+
27+
await interaction.reply({ embeds: [embed(guild, userCount)] });
1528
},
1629
};

commands/together.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Experimental feature. Stay away!
2+
const { SlashCommandBuilder } = require('@discordjs/builders');
3+
4+
// supported task/game list
5+
const tasks = ['youtube', 'poker', 'chess', 'betrayal', 'fishing', 'lettertile', 'wordsnack', 'doodlecrew'];
6+
7+
module.exports = {
8+
data: new SlashCommandBuilder()
9+
.setName('together')
10+
.setDescription('Together have fun🎉[EXPERIMENTAL/UNSTABLE]')
11+
.addStringOption(option => {
12+
option
13+
.setName('apps')
14+
.setDescription('Choose a app/game to start!')
15+
.setRequired(true);
16+
for (const task of tasks) {
17+
option.addChoice(task, task);
18+
}
19+
return option;
20+
}),
21+
async execute(interaction) {
22+
const channel = interaction.member.voice.channel;
23+
const task = interaction.options.getString('apps');
24+
if (channel) {
25+
interaction.client.discordTogether.createTogetherCode(channel.id, `${task}`).then(async invite => {
26+
await interaction.reply(`Click here ${invite.code} to start the activity!`);
27+
});
28+
}
29+
else {await interaction.reply({ content: 'You must be in a voice channel!', ephemeral: true });}
30+
},
31+
};

commands/user.js

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,42 @@
1+
// Docs reference
2+
// Interaction: https://discord.js.org/#/docs/main/stable/class/Interaction
3+
// GuildMember: https://discord.js.org/#/docs/main/stable/class/GuildMember
4+
// GuildMembers: https://discord.js.org/#/docs/main/stable/class/GuildMemberManager
15
const { SlashCommandBuilder } = require('@discordjs/builders');
6+
const { MessageEmbed } = require('discord.js');
7+
8+
// EMBED CONSTRUCTOR
9+
const embed = member => new MessageEmbed()
10+
.setThumbnail(member.displayAvatarURL())
11+
.setDescription(`**<@${member.user.id}>**`)
12+
.setFields(
13+
{ name: 'Joined Discord:', value: `**<t:${format(member.user.createdTimestamp)}:R>**`, inline: true },
14+
{ name: 'Joined Server:', value: `**<t:${format(member.joinedTimestamp)}:R>**`, inline: true })
15+
.setFooter(member.user.tag);
16+
17+
// Format timestamp from 13 digits to 10, Discord uses 10 digit timestamps
18+
const format = timeStamp => Math.ceil(timeStamp / 1000);
219

320
module.exports = {
421
data: new SlashCommandBuilder()
522
.setName('user')
6-
.setDescription('Replies with User info!'),
23+
.setDescription('Replies with User info!')
24+
.addUserOption(option =>
25+
option.setName('target_user')
26+
.setDescription('Get targeted user info')),
27+
728
async execute(interaction) {
8-
await interaction.reply(`Your tag: ${interaction.user.tag}\nYour id: ${interaction.user.id}`);
29+
// GuildMember
30+
let member = interaction.member;
31+
// Target member, if provided
32+
const target = interaction.options.getUser('target_user');
33+
// GuildMember Object for Targeted member
34+
if (target) {
35+
// GuildMembers
36+
const members = interaction.guild.members;
37+
member = await members.fetch(target);
38+
}
39+
40+
await interaction.reply({ embeds: [embed(member)], ephemeral: true });
941
},
1042
};

index.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,20 @@
55

66
require('dotenv').config();
77
const fs = require('fs');
8-
const { Client, Intents } = require('discord.js');
8+
const { Client } = require('discord.js');
99
const startServer = require('./server');
1010
const { setSlashCmds } = require('./events/slashCommands');
11+
const { DiscordTogether } = require('discord-together');
12+
13+
// Intents are like permissions for the bot. Here's a list of intents available
14+
// https://discord.com/developers/docs/topics/gateway#gateway-intents
15+
const gateway_intents = ['GUILDS', 'GUILD_MESSAGES', 'GUILD_VOICE_STATES'];
1116

1217
// Creates a new client instance
13-
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] });
18+
const client = new Client({ intents: gateway_intents });
19+
20+
// discord-together init
21+
client.discordTogether = new DiscordTogether(client);
1422

1523
// Loops through events folder and an array of events .js files are stored in eventFiles
1624
const eventFiles = fs.readdirSync('./events').filter(file => file.endsWith('.js'));

0 commit comments

Comments
 (0)