Merge remote-tracking branch 'origin/master'

This commit is contained in:
loicbersier 2020-06-08 15:06:15 +02:00
commit 4f5c0ac613
14 changed files with 200 additions and 59 deletions

BIN
asset/ytp/error1.mp4 Normal file

Binary file not shown.

BIN
asset/ytp/error2.mp4 Normal file

Binary file not shown.

View file

@ -100,12 +100,16 @@ class ytpCommand extends Command {
{ {
id: 'link', id: 'link',
type: 'string' type: 'string'
},
{
id: 'max',
type: 'string'
} }
], ],
description: { description: {
content: 'Generate random ytp | --add with a link or attachment to add a video to the pool, only .mp4 work | --pool to see how many vid there is currently in the pool | --force to make the command work outside of nsfw channel BE AWARE THAT IT WON\'T CHANGE THE FINAL RESULT SO NSFW CAN STILL HAPPEN', content: 'Generate random ytp | --add with a link or attachment to add a video to the pool, only .mp4 work | --pool to see how many vid there is currently in the pool | --force to make the command work outside of nsfw channel BE AWARE THAT IT WON\'T CHANGE THE FINAL RESULT SO NSFW CAN STILL HAPPEN',
usage: '', usage: '(OPTIONAL) | [Minimum length of clip] [Max length of clip]',
examples: [''] examples: ['5 10']
} }
}); });
} }
@ -209,7 +213,8 @@ class ytpCommand extends Command {
let options = { let options = {
debug: args.debug, debug: args.debug,
MAX_STREAM_DURATION: args.link ? args.link : Math.floor((Math.random() * 3) + 1), // Random duration of video clip MIN_STREAM_DURATION: args.link ? Math.floor(args.link) : null,
MAX_STREAM_DURATION: args.link && args.max ? args.max : Math.floor((Math.random() * 3) + 1), // Random duration of video clip
sources: './asset/ytp/sources/', sources: './asset/ytp/sources/',
sounds: './asset/ytp/sounds/', sounds: './asset/ytp/sounds/',
music: './asset/ytp/music/', music: './asset/ytp/music/',
@ -254,7 +259,11 @@ class ytpCommand extends Command {
.catch(err => { .catch(err => {
console.error(err); console.error(err);
loadingmsg.delete(); loadingmsg.delete();
return message.reply('Oh no! An error has occured!'); return message.reply({files: [Math.random() < 0.5 ? './asset/ytp/error1.mp4' : './asset/ytp/error2.mp4']})
.catch(err => { // In case it can't send the vid for some reason
console.error(err);
return message.channel.send('Oh no, an error has occured! please try again.');
});
}); });
} }
} }

View file

@ -1,4 +1,5 @@
const { Command } = require('discord-akairo'); const { Command } = require('discord-akairo');
const LogStats = require('../../models/').LogStats;
class ServerCommand extends Command { class ServerCommand extends Command {
constructor() { constructor() {
@ -30,7 +31,10 @@ class ServerCommand extends Command {
.addField('Owner', message.guild.owner, true) .addField('Owner', message.guild.owner, true)
.setTimestamp(); .setTimestamp();
const logStats = await LogStats.findOne({where: {guild: message.guild.id}});
if (logStats) addEmbed.addField('Logging', 'On ✅');
else addEmbed.addField('Logging', 'Off ❌');
message.channel.send({ embed: addEmbed }); message.channel.send({ embed: addEmbed });
} }

View file

@ -38,15 +38,6 @@ class userInfoCommand extends Command {
.setTimestamp(); .setTimestamp();
if (member) {
// Show since when this user have been boosting the current guild
if (member.premiumSince) Embed.addField('Boosting this guild since', member.premiumSince, true);
// Show guild nickname
if (member.nickname) Embed.addField('Nickname', member.nickname, true);
}
Embed.addField('', ''); Embed.addField('', '');
// Show user status // Show user status
@ -69,6 +60,15 @@ class userInfoCommand extends Command {
if (user.presence.clientStatus.web) Embed.addField('Using discord on', '☁️ ' + user.presence.clientStatus.web, true); if (user.presence.clientStatus.web) Embed.addField('Using discord on', '☁️ ' + user.presence.clientStatus.web, true);
} }
if (member) {
// Show since when this user have been boosting the current guild
if (member.premiumSince) Embed.addField('Boosting this guild since', member.premiumSince, true);
// Show guild nickname
if (member.nickname) Embed.addField('Nickname', member.nickname, true);
// Show member roles
if (member.roles) Embed.addField('Roles', `${member.roles.cache.array().join(', ')}`);
}
return message.channel.send({ embed: Embed }); return message.channel.send({ embed: Embed });
} }
} }

View file

@ -4,7 +4,7 @@ const guildBlacklist = require('../../models').guildBlacklist;
class serverblacklistInhibitor extends Inhibitor { class serverblacklistInhibitor extends Inhibitor {
constructor() { constructor() {
super('serverblacklist', { super('serverblacklist', {
reason: 'serverblacklist' reason: 'serverblacklist',
}); });
} }

View file

@ -93,7 +93,7 @@ class commandStartedListener extends Listener {
.setColor('GREEN') .setColor('GREEN')
.setTitle('Daily usage report!') .setTitle('Daily usage report!')
.addField('Number of unique guild', uniqueGuild.length) .addField('Number of unique guild', uniqueGuild.length)
.addField('Number of command exectued', executedCommands, true) .addField('Number of command executed', executedCommands, true)
.addField('Most used command', `${getKeyByValue(commands, max)} (${max} times)`, true ) .addField('Most used command', `${getKeyByValue(commands, max)} (${max} times)`, true )
.addField('Least used command', `${getKeyByValue(commands, min)} (${min} times)`, true) .addField('Least used command', `${getKeyByValue(commands, min)} (${min} times)`, true)
.setFooter(`Bot usage as of ${today}`); .setFooter(`Bot usage as of ${today}`);

View file

@ -22,13 +22,13 @@ class channelDeleteListener extends Listener {
const channel = this.client.channels.resolve(await logStats.get('channel')); const channel = this.client.channels.resolve(await logStats.get('channel'));
let Embed = this.client.util.embed() let Embed = this.client.util.embed()
.setColor('NAVY') .setColor('NAVY')
.setTitle('Channel created!') .setTitle('Channel deleted!')
.setDescription(`${GuildChannel.type} channel ${GuildChannel} got deleted!`) .setDescription(`${GuildChannel.type} channel ${GuildChannel.name} got deleted!`)
.setTimestamp(); .setTimestamp();
if (!deletionLog) return channel.send(Embed); if (!deletionLog) return channel.send(Embed);
Embed.setDescription(`${GuildChannel.type} channel ${GuildChannel} got deleted by ${deletionLog.executor}`); Embed.setDescription(`${GuildChannel.type} channel ${GuildChannel.name} got deleted by ${deletionLog.executor}`);
channel.send(Embed); channel.send(Embed);
} }

View file

@ -11,7 +11,7 @@ class channelUpdateListener extends Listener {
async exec(oldChannel, newChannel) { async exec(oldChannel, newChannel) {
const logStats = await LogStats.findOne({where: {guild: newChannel.guild.id}}); const logStats = await LogStats.findOne({where: {guild: newChannel.guild.id}});
if (oldChannel === newChannel) return;
if (logStats) { if (logStats) {
const fetchedLogs = await newChannel.guild.fetchAuditLogs({ const fetchedLogs = await newChannel.guild.fetchAuditLogs({
limit: 1, limit: 1,

View file

@ -11,7 +11,7 @@ class messageUpdateListener extends Listener {
async exec(oldMessage, newMessage) { async exec(oldMessage, newMessage) {
const logStats = await LogStats.findOne({where: {guild: newMessage.guild.id}}); const logStats = await LogStats.findOne({where: {guild: newMessage.guild.id}});
if (logStats && oldMessage.content !== newMessage.content && !message.author.bot) { if (logStats && oldMessage.content !== newMessage.content && !oldMessage.author.bot) {
const channel = this.client.channels.resolve(await logStats.get('channel')); const channel = this.client.channels.resolve(await logStats.get('channel'));
let Embed = this.client.util.embed() let Embed = this.client.util.embed()
.setColor('NAVY') .setColor('NAVY')

View file

@ -0,0 +1,38 @@
const { Listener } = require('discord-akairo');
const LogStats = require('../../../models/').LogStats;
class roleCreateListener extends Listener {
constructor() {
super('roleCreate', {
emitter: 'client',
event: 'roleCreate'
});
}
async exec(role) {
const guild = role.guild;
const logStats = await LogStats.findOne({where: {guild: guild.id}});
if (logStats) {
const fetchedLogs = await guild.fetchAuditLogs({
limit: 1,
type: 'ROLE_CREATE',
});
const creationLog = fetchedLogs.entries.first();
const channel = this.client.channels.resolve(await logStats.get('channel'));
let Embed = this.client.util.embed()
.setColor('NAVY')
.setTitle('New role')
.setDescription(`${role.name} got created!`)
.setTimestamp();
if (!creationLog) return channel.send(Embed);
Embed.setDescription(`${role.name} got created by ${creationLog.executor}`);
channel.send(Embed);
}
}
}
module.exports = roleCreateListener;

View file

@ -0,0 +1,38 @@
const { Listener } = require('discord-akairo');
const LogStats = require('../../../models/').LogStats;
class roleDeleteListener extends Listener {
constructor() {
super('roleDelete', {
emitter: 'client',
event: 'roleDelete'
});
}
async exec(role) {
const guild = role.guild;
const logStats = await LogStats.findOne({where: {guild: guild.id}});
if (logStats) {
const fetchedLogs = await guild.fetchAuditLogs({
limit: 1,
type: 'ROLE_DELETE',
});
const creationLog = fetchedLogs.entries.first();
const channel = this.client.channels.resolve(await logStats.get('channel'));
let Embed = this.client.util.embed()
.setColor('NAVY')
.setTitle('Role deleted')
.setDescription(`${role.name} got deleted!`)
.setTimestamp();
if (!creationLog) return channel.send(Embed);
Embed.setDescription(`${role.name} got deleted by ${creationLog.executor}`);
channel.send(Embed);
}
}
}
module.exports = roleDeleteListener;

View file

@ -0,0 +1,42 @@
/* TODO
* Show more details about the update like what permissions changed, if a name change occurred ect...
*/
const { Listener } = require('discord-akairo');
const LogStats = require('../../../models/').LogStats;
class roleUpdateListener extends Listener {
constructor() {
super('roleUpdate', {
emitter: 'client',
event: 'roleUpdate'
});
}
async exec(oldRole, newRole) {
if (oldRole === newRole) return;
const guild = oldRole.guild;
const logStats = await LogStats.findOne({where: {guild: guild.id}});
if (logStats) {
const fetchedLogs = await guild.fetchAuditLogs({
limit: 1,
type: 'ROLE_UPDATE',
});
const creationLog = fetchedLogs.entries.first();
const channel = this.client.channels.resolve(await logStats.get('channel'));
let Embed = this.client.util.embed()
.setColor('NAVY')
.setTitle('Role updated')
.setDescription(`${oldRole.name} got updated!`)
.setTimestamp();
if (!creationLog) return channel.send(Embed);
Embed.setDescription(`${oldRole.name} got updated by ${creationLog.executor}`);
channel.send(Embed);
}
}
}
module.exports = roleUpdateListener;

32
package-lock.json generated
View file

@ -71,6 +71,16 @@
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.5.tgz", "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.5.tgz",
"integrity": "sha512-CU1q0UXQUpFNzNB7gufgoisDHP7n+T3tkqTsp3MNUkVJ5+hS3BCvME8uCXAUFlz+6T2FbTCu75A+yQ7HMKqRKw==" "integrity": "sha512-CU1q0UXQUpFNzNB7gufgoisDHP7n+T3tkqTsp3MNUkVJ5+hS3BCvME8uCXAUFlz+6T2FbTCu75A+yQ7HMKqRKw=="
}, },
"@discordjs/form-data": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz",
"integrity": "sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==",
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
}
},
"@discordjs/opus": { "@discordjs/opus": {
"version": "0.3.2", "version": "0.3.2",
"resolved": "https://registry.npmjs.org/@discordjs/opus/-/opus-0.3.2.tgz", "resolved": "https://registry.npmjs.org/@discordjs/opus/-/opus-0.3.2.tgz",
@ -111,9 +121,9 @@
} }
}, },
"minipass": { "minipass": {
"version": "3.1.1", "version": "3.1.3",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz",
"integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==",
"requires": { "requires": {
"yallist": "^4.0.0" "yallist": "^4.0.0"
} }
@ -128,9 +138,9 @@
} }
}, },
"needle": { "needle": {
"version": "2.4.1", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/needle/-/needle-2.4.1.tgz", "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.0.tgz",
"integrity": "sha512-x/gi6ijr4B7fwl6WYL9FwlCvRQKGlUNvnceho8wxkwXqN8jvVmmmATTmZPRRG7b/yC1eode26C2HO9jl78Du9g==", "integrity": "sha512-o/qITSDR0JCyCKEQ1/1bnUXMmznxabbwi/Y4WwJElf+evwJNFNwIDMCCt5IigFVxgeGBJESLohGtIS9gEzo1fA==",
"requires": { "requires": {
"debug": "^3.2.6", "debug": "^3.2.6",
"iconv-lite": "^0.4.4", "iconv-lite": "^0.4.4",
@ -2480,16 +2490,16 @@
} }
}, },
"discord-akairo": { "discord-akairo": {
"version": "github:1Computer1/discord-akairo#10cef7efc7a329cb1e0d96d73ccb4b83bc0afa72", "version": "github:1Computer1/discord-akairo#678ae775c89947fcf77c566e04f9035941c42e0e",
"from": "github:1Computer1/discord-akairo#master" "from": "github:1Computer1/discord-akairo#master"
}, },
"discord.js": { "discord.js": {
"version": "github:discordjs/discord.js#5b9cdc5cd243b1588c285e22b90d92535a30b993", "version": "github:discordjs/discord.js#2583ad5da7db5ab92dfa357909f9c713db0a2981",
"from": "github:discordjs/discord.js#master", "from": "github:discordjs/discord.js#master",
"requires": { "requires": {
"@discordjs/collection": "^0.1.5", "@discordjs/collection": "^0.1.5",
"@discordjs/form-data": "^3.0.1",
"abort-controller": "^3.0.0", "abort-controller": "^3.0.0",
"form-data": "^3.0.0",
"node-fetch": "^2.6.0", "node-fetch": "^2.6.0",
"prism-media": "^1.2.0", "prism-media": "^1.2.0",
"setimmediate": "^1.0.5", "setimmediate": "^1.0.5",
@ -2671,7 +2681,7 @@
} }
}, },
"erlpack": { "erlpack": {
"version": "github:discordapp/erlpack#5d0064f9e106841e1eead711a6451f99b0d289fd", "version": "github:discordapp/erlpack#c514d36ec81a7a61ef90b75df261025ab046574d",
"from": "github:discordapp/erlpack", "from": "github:discordapp/erlpack",
"requires": { "requires": {
"bindings": "^1.5.0", "bindings": "^1.5.0",
@ -8132,7 +8142,7 @@
} }
}, },
"ytpplus-node": { "ytpplus-node": {
"version": "git+https://git@github.com/loicbersier/ytpplus-node.git#a9edb7a9596734d0b518cb32e1581f06ce5f7ad7", "version": "git+https://git@github.com/loicbersier/ytpplus-node.git#cd8c7bb893a16625b6c6150489206498377c1f1a",
"from": "git+https://git@github.com/loicbersier/ytpplus-node.git", "from": "git+https://git@github.com/loicbersier/ytpplus-node.git",
"requires": { "requires": {
"ffmpeg-static": "^2.4.0", "ffmpeg-static": "^2.4.0",