mirror of
https://github.com/Wessel/yorushika.git
synced 2026-06-08 14:18:31 +02:00
rebrand and a lot of other things!
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -3,3 +3,4 @@ src/tmp
|
|||||||
node_modules/
|
node_modules/
|
||||||
src/application.yml
|
src/application.yml
|
||||||
.vscode/
|
.vscode/
|
||||||
|
src/assets/util/
|
||||||
20
TODO.md
20
TODO.md
@@ -3,7 +3,6 @@
|
|||||||
- [x] = In progress
|
- [x] = In progress
|
||||||
|
|
||||||
- [ ] Global
|
- [ ] Global
|
||||||
- [ ] Clean code / refractor
|
|
||||||
- [ ] Clean locales
|
- [ ] Clean locales
|
||||||
- [ ] Information
|
- [ ] Information
|
||||||
- [ ] Commands
|
- [ ] Commands
|
||||||
@@ -11,15 +10,9 @@
|
|||||||
- [x] Utility
|
- [x] Utility
|
||||||
- [x] Commands
|
- [x] Commands
|
||||||
- [x] Tesseract (Donator)
|
- [x] Tesseract (Donator)
|
||||||
- [x] Tags
|
- [ ] Tags
|
||||||
- [x] Commands
|
- [ ] Commands
|
||||||
- [x] Use
|
|
||||||
- [x] List
|
|
||||||
- [ ] Edit
|
- [ ] Edit
|
||||||
- [x] Info
|
|
||||||
- [x] Create
|
|
||||||
- [ ] Delete
|
|
||||||
- [x] Source
|
|
||||||
- [ ] Transfer
|
- [ ] Transfer
|
||||||
- [ ] Moderation
|
- [ ] Moderation
|
||||||
- [ ] Logging
|
- [ ] Logging
|
||||||
@@ -41,7 +34,16 @@
|
|||||||
- [ ] Infractions
|
- [ ] Infractions
|
||||||
|
|
||||||
## Finished (for now):
|
## Finished (for now):
|
||||||
|
- [x] Tags
|
||||||
|
- [x] Commands
|
||||||
|
- [x] Use
|
||||||
|
- [x] List
|
||||||
|
- [x] Info
|
||||||
|
- [x] Create
|
||||||
|
- [x] Delete
|
||||||
|
- [x] Source
|
||||||
- [x] Global
|
- [x] Global
|
||||||
|
- [x] Clean code / refractor
|
||||||
- [x] Commands
|
- [x] Commands
|
||||||
- [x] user lookup
|
- [x] user lookup
|
||||||
- [x] guild lookup
|
- [x] guild lookup
|
||||||
@@ -2,6 +2,10 @@ error : 0xff0000 # Red
|
|||||||
cooldown: 0x7289DA # Blurple
|
cooldown: 0x7289DA # Blurple
|
||||||
votelock: 0xF7AE69
|
votelock: 0xF7AE69
|
||||||
|
|
||||||
|
logs:
|
||||||
|
message:
|
||||||
|
delete: 0x7289DA # Blurple
|
||||||
|
|
||||||
core :
|
core :
|
||||||
locale: 0x7289DA # Blurple
|
locale: 0x7289DA # Blurple
|
||||||
prefix: 0x7289DA # Blurple
|
prefix: 0x7289DA # Blurple
|
||||||
|
|||||||
@@ -5,6 +5,21 @@ cooldown : <:stopwatch:542477522147868672> # On cooldown
|
|||||||
owner_only: <:exclamation:542368036255039509> # Only owners
|
owner_only: <:exclamation:542368036255039509> # Only owners
|
||||||
guild_only: <:exclamation:542368036255039509> # Only guilds
|
guild_only: <:exclamation:542368036255039509> # Only guilds
|
||||||
|
|
||||||
|
logs:
|
||||||
|
ready: <:spacewump:542723940997529641>
|
||||||
|
|
||||||
|
message_delete:
|
||||||
|
0 : <:sad:500719642403405824>
|
||||||
|
1 : <:exclamation:542368036255039509>
|
||||||
|
2 : <:stopwatch:542477522147868672>
|
||||||
|
3 : <a:DiscordLove:554926128394141708>
|
||||||
|
4 : <:alert:542367222279176202>
|
||||||
|
5 : <:alert:542367222279176202>
|
||||||
|
|
||||||
|
shard:
|
||||||
|
ready: '<:create_webhook:542716503674454016>'
|
||||||
|
resume: '<:update_webhook:542716504089690124>'
|
||||||
|
disconnect: '<:remove_webhook:542716503624253461>'
|
||||||
|
|
||||||
core :
|
core :
|
||||||
locale:
|
locale:
|
||||||
@@ -65,14 +80,6 @@ tags:
|
|||||||
1 : <:ok_hand:497396122416054287>
|
1 : <:ok_hand:497396122416054287>
|
||||||
2 : <:wumpus_love:506200781549076482>
|
2 : <:wumpus_love:506200781549076482>
|
||||||
|
|
||||||
logs :
|
|
||||||
ready: '<:spacewump:542723940997529641>'
|
|
||||||
|
|
||||||
shard :
|
|
||||||
ready : '<:create_webhook:542716503674454016>'
|
|
||||||
resume : '<:update_webhook:542716504089690124>'
|
|
||||||
disconnect: '<:remove_webhook:542716503624253461>'
|
|
||||||
|
|
||||||
util :
|
util :
|
||||||
ping :
|
ping :
|
||||||
0 : <:bored:500719642164199425> # Pinging
|
0 : <:bored:500719642164199425> # Pinging
|
||||||
|
|||||||
45
src/assets/i18n/en_us/badwords.yml
Normal file
45
src/assets/i18n/en_us/badwords.yml
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# This is an array of inappropriate language, please delete or add any inappropriate language that exist in your country
|
||||||
|
# (All should be lower case)
|
||||||
|
# for example, dutch:
|
||||||
|
#
|
||||||
|
# [English]
|
||||||
|
# - anal
|
||||||
|
# - dick
|
||||||
|
# - twat
|
||||||
|
#
|
||||||
|
# [Dutch]
|
||||||
|
# - anaal
|
||||||
|
# - penis
|
||||||
|
|
||||||
|
- anal
|
||||||
|
- anus
|
||||||
|
- ballsack
|
||||||
|
- blowjob
|
||||||
|
- blow job
|
||||||
|
- boner
|
||||||
|
- clitoris
|
||||||
|
- cock
|
||||||
|
- cunt
|
||||||
|
- dick
|
||||||
|
- dildo
|
||||||
|
- dyke
|
||||||
|
- fag
|
||||||
|
- fuck
|
||||||
|
- jizz
|
||||||
|
- labia
|
||||||
|
- muff
|
||||||
|
- nigger
|
||||||
|
- nigga
|
||||||
|
- penis
|
||||||
|
- piss
|
||||||
|
- pussy
|
||||||
|
- scrotum
|
||||||
|
- sex
|
||||||
|
- shit
|
||||||
|
- slut
|
||||||
|
- smegma
|
||||||
|
- spunk
|
||||||
|
- twat
|
||||||
|
- vagina
|
||||||
|
- wank
|
||||||
|
- whore
|
||||||
22
src/assets/i18n/en_us/logs.yml
Normal file
22
src/assets/i18n/en_us/logs.yml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
translation_code: 'en_us'
|
||||||
|
|
||||||
|
message:
|
||||||
|
delete: '`[{date@now}]` {emoji} A message by {e.user!s} (`{e.user.id}`) was deleted from **{e.channel!s}**:'
|
||||||
|
|
||||||
|
member:
|
||||||
|
add:
|
||||||
|
main: '`[{date@now}]` {emoji} {e.user!s} (`{e.user.id}`) joined, user created at **{e.user.created@exact}** **(**{e.user.created@precise} ago**)**'
|
||||||
|
notes:
|
||||||
|
- 'Username **may** contain inappropriate language'
|
||||||
|
- 'User created less than a day ago'
|
||||||
|
- 'User has no custom avatar'
|
||||||
|
- 'User is banned from discord.services ({e.ban.reason})'
|
||||||
|
- 'User is banned from ksoft.si ({e.ban.reason})'
|
||||||
|
|
||||||
|
connection:
|
||||||
|
ready: '`[{date@now}] / {process.hash}]` {emoji} Master client on Wump (`v{global.version}`) connected'
|
||||||
|
|
||||||
|
shard :
|
||||||
|
ready : '`[{date@now}] / {process.hash}]` {emoji} Shard `#{e.shard.id}` connected to Wump (`v{global.version}`)'
|
||||||
|
resume : '`[{date@now}] / {process.hash}]` {emoji} Shard `#{e.shard.id}` resumed to Wump (`v{global.version}`)'
|
||||||
|
disconnect: '`[{date@now}] / {process.hash}]` {emoji} Shard `#{e.shard.id}` disconnected from Wump (`v{global.version}`)'
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
connection:
|
|
||||||
ready : '`[$[date:now] / $[process:hash]]` $[emoji#0] Master client on Wump (`v$[wump:version]`) connected'
|
|
||||||
shard :
|
|
||||||
ready : '`[$[date:now] / $[process:hash]]` $[emoji#0] Shard `#$[shard:id]` connected to Wump (`v$[wump:version]`)'
|
|
||||||
resume : '`[$[date:now] / $[process:hash]]` $[emoji#0] Shard `#$[shard:id]` resumed to Wump (`v$[wump:version]`)'
|
|
||||||
disconnect: '`[$[date:now] / $[process:hash]]` $[emoji#0] Shard `#$[shard:id]` disconnected from Wump (`v$[wump:version]`)'
|
|
||||||
@@ -81,6 +81,12 @@ util:
|
|||||||
embed: 'Embed Body'
|
embed: 'Embed Body'
|
||||||
footer: 'Sniped by $[author:tag] ($[author:id])'
|
footer: 'Sniped by $[author:tag] ($[author:id])'
|
||||||
|
|
||||||
|
monstercat:
|
||||||
|
result: |-
|
||||||
|
**Track Title**: $[track:name]
|
||||||
|
**Duration**: $[track:duration]s
|
||||||
|
**Artists Title**: $[track:artist]
|
||||||
|
**Beats per Minute**: $[track:bpm]
|
||||||
info:
|
info:
|
||||||
stats:
|
stats:
|
||||||
fetching: '$[emoji#0] Fetching statistics, this may take some time...'
|
fetching: '$[emoji#0] Fetching statistics, this may take some time...'
|
||||||
|
|||||||
30
src/assets/i18n/nl/badwords.yml
Normal file
30
src/assets/i18n/nl/badwords.yml
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# This is an array of inappropriate language, please delete or add any inappropriate language that exist in your country
|
||||||
|
# (All should be lower case)
|
||||||
|
# for example, dutch:
|
||||||
|
#
|
||||||
|
# [English]
|
||||||
|
# - anal
|
||||||
|
# - dick
|
||||||
|
# - twat
|
||||||
|
#
|
||||||
|
# [Dutch]
|
||||||
|
# - anaal
|
||||||
|
# - penis
|
||||||
|
|
||||||
|
- anaal
|
||||||
|
- anus
|
||||||
|
- balzak
|
||||||
|
- blowjob
|
||||||
|
- blow job
|
||||||
|
- clitoris
|
||||||
|
- cunt
|
||||||
|
- dildo
|
||||||
|
- neuk
|
||||||
|
- sperma
|
||||||
|
- neger
|
||||||
|
- negr
|
||||||
|
- penis
|
||||||
|
- vagina
|
||||||
|
- slet
|
||||||
|
- smegma
|
||||||
|
- hoer
|
||||||
21
src/assets/i18n/nl/logs.yml
Normal file
21
src/assets/i18n/nl/logs.yml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
translation_code: 'nl'
|
||||||
|
|
||||||
|
message:
|
||||||
|
delete: '`[{date@now}]` {emoji} Een bericht van {e.user!s} (`{e.user.id}`) was was verwijderd van **{e.channel!s}**:'
|
||||||
|
|
||||||
|
member:
|
||||||
|
add:
|
||||||
|
main: '`[{date@now}]` {emoji} {e.user!s} (`{e.user.id}`) is toegetreden, gebruiker aangemaakt op **{e.user.created@exact}** **(**{e.user.created@precise} ago**)**'
|
||||||
|
notes:
|
||||||
|
- 'Gebruikersnaam **kan** ongepast taalgebruik bevatten'
|
||||||
|
- 'Gebruiker is minder dan een dag geleden gemaakt'
|
||||||
|
- 'Gebruiker heeft geen aangepaste profielfoto'
|
||||||
|
- 'Gebruiker is verbannen van discord.services ({e.ban.reason})'
|
||||||
|
- 'Gebruiker is verbannen van ksoft.si ({e.ban.reason})'
|
||||||
|
|
||||||
|
connection:
|
||||||
|
ready : '`[$[date:now] / $[process:hash]]` $[emoji#0] Meester client op Wump (`v$[wump:version]`) is verbonden'
|
||||||
|
shard :
|
||||||
|
ready : '`[$[date:now] / $[process:hash]]` $[emoji#0] Shard `#$[shard:id]` is verbonden naar Wump (`v$[wump:version]`)'
|
||||||
|
resume : '`[$[date:now] / $[process:hash]]` $[emoji#0] Shard `#$[shard:id]` is hervat naar Wump (`v$[wump:version]`)'
|
||||||
|
disconnect: '`[$[date:now] / $[process:hash]]` $[emoji#0] Shard `#$[shard:id]` is losgekoppeld van Wump (`v$[wump:version]`)'
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
connection:
|
|
||||||
ready : '`[$[date:now] / $[process:hash]]` $[emoji#0] Meester client op Wump (`v$[wump:version]`) is verbonden'
|
|
||||||
shard :
|
|
||||||
ready : '`[$[date:now] / $[process:hash]]` $[emoji#0] Shard `#$[shard:id]` is verbonden naar Wump (`v$[wump:version]`)'
|
|
||||||
resume : '`[$[date:now] / $[process:hash]]` $[emoji#0] Shard `#$[shard:id]` is hervat naar Wump (`v$[wump:version]`)'
|
|
||||||
disconnect: '`[$[date:now] / $[process:hash]]` $[emoji#0] Shard `#$[shard:id]` is losgekoppeld van Wump (`v$[wump:version]`)'
|
|
||||||
BIN
src/assets/img/emoji/DiscordLove.gif
Normal file
BIN
src/assets/img/emoji/DiscordLove.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 219 KiB |
@@ -1,3 +1,4 @@
|
|||||||
|
// @TODO: refractor
|
||||||
const { DiscordCommand } = require('../../../core');
|
const { DiscordCommand } = require('../../../core');
|
||||||
|
|
||||||
module.exports = class Locale extends DiscordCommand {
|
module.exports = class Locale extends DiscordCommand {
|
||||||
|
|||||||
@@ -1,14 +1,12 @@
|
|||||||
const { DiscordCommand } = require('../../../core');
|
const { DiscordCommand } = require('../../../core');
|
||||||
|
|
||||||
const larg = require('larg');
|
|
||||||
|
|
||||||
module.exports = class Prefix extends DiscordCommand {
|
module.exports = class Prefix extends DiscordCommand {
|
||||||
constructor(bot) {
|
constructor(bot) {
|
||||||
super(bot, {
|
super(bot, {
|
||||||
name : 'prefix',
|
name : 'prefix',
|
||||||
syntax : 'prefix <..prefix:string> <-u|-g>',
|
syntax : 'prefix <...prefix:str> <-u|-g>',
|
||||||
aliases : [],
|
aliases : [],
|
||||||
argument : [ '<...prefix:string>', '-<u|g>' ],
|
argument : [ '<...prefix:string>', '-<(u|g)>' ],
|
||||||
description: 'Change your prefix',
|
description: 'Change your prefix',
|
||||||
|
|
||||||
hidden : false,
|
hidden : false,
|
||||||
@@ -22,25 +20,27 @@ module.exports = class Prefix extends DiscordCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async execute(msg, args, user, guild) {
|
async execute(msg, args, user, guild) {
|
||||||
if (!user || user === null) user = await this.bot.m.connection.collection('dUsers').findOne({ userId: msg.author.id });
|
if (!user || user === null) {
|
||||||
if (!guild || guild === null) guild = await this.bot.m.connection.collection('dGuilds').findOne({ guildId: msg.channel.guild.id });
|
user = await this.bot.m.connection.collection('dUsers').findOne({ userId: msg.author.id });
|
||||||
|
}
|
||||||
|
if (!guild || guild === null) {
|
||||||
|
guild = await this.bot.m.connection.collection('dGuilds').findOne({ guildId: msg.channel.guild.id });
|
||||||
|
}
|
||||||
|
|
||||||
// Delete all empty elements in `args`
|
|
||||||
args = args.filter((v) => {
|
args = args.filter((v) => {
|
||||||
return v.length >= 1;
|
return v.length >= 1;
|
||||||
});
|
});
|
||||||
// Avoid an `undefined` prefix
|
|
||||||
if (!user || !user.prefix) {
|
if (!user || !user.prefix) {
|
||||||
user.prefix = this.bot.conf.discord.prefix;
|
user.prefix = this.bot.conf.discord.prefix;
|
||||||
}
|
}
|
||||||
if (!user || !guild.prefix) {
|
if (!guild || !guild.prefix) {
|
||||||
guild.prefix = this.bot.conf.discord.prefix;
|
guild.prefix = this.bot.conf.discord.prefix;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.join(' ').endsWith('-u') || args.join(' ').endsWith('--user')) {
|
if (args.join(' ').endsWith('-u') || args.join(' ').endsWith('--user')) {
|
||||||
/* User prefix */
|
|
||||||
let prefix = args.splice(0, 1).join(' ').slice(0, 32).toLowerCase();
|
let prefix = args.splice(0, 1).join(' ').slice(0, 32).toLowerCase();
|
||||||
// Checks
|
|
||||||
if (prefix.length <= 0) prefix = this.bot.conf.discord.prefix;
|
if (prefix.length <= 0) prefix = this.bot.conf.discord.prefix;
|
||||||
if (user.prefix === prefix) {
|
if (user.prefix === prefix) {
|
||||||
return msg.channel.createMessage(this.localize(msg.author.locale['core']['prefix']['dupe'], { uPrefix: user.prefix }));
|
return msg.channel.createMessage(this.localize(msg.author.locale['core']['prefix']['dupe'], { uPrefix: user.prefix }));
|
||||||
|
|||||||
@@ -41,14 +41,14 @@ module.exports = class Eval extends DiscordCommand {
|
|||||||
errored = true;
|
errored = true;
|
||||||
} finally {
|
} finally {
|
||||||
if (silent) return message.edit(this._localize(msg.author.locale.developer.eval.silent));
|
if (silent) return message.edit(this._localize(msg.author.locale.developer.eval.silent));
|
||||||
result = this.bot.util.escapeMarkdown(this.bot.util.shorten(this._sanitize(String(result)), true, 1850));
|
result = this.bot.util.escapeMarkdown(this._sanitize(String(result)), true);
|
||||||
|
|
||||||
if (raw) return msg.channel.createMessage(`\`\`\`js\n${result}\`\`\``);
|
if (raw) return msg.channel.createMessage(`\`\`\`js\n${result}\`\`\``);
|
||||||
message.edit({
|
message.edit({
|
||||||
content: '',
|
content: '',
|
||||||
embed: {
|
embed: {
|
||||||
color: errored ? this.bot.col.developer.eval.failure : this.bot.col.developer.eval.success,
|
color: errored ? this.bot.col.developer.eval.failure : this.bot.col.developer.eval.success,
|
||||||
description: this._localize(msg.author.locale.developer.eval.result.join('\n'), { resultType: errored ? msg.author.locale.developer.eval.types[1] : msg.author.locale.developer.eval.types[0], resultMessage: result || '{}' })
|
description: this._localize(msg.author.locale.developer.eval.result.join('\n'), { resultType: errored ? msg.author.locale.developer.eval.types[1] : msg.author.locale.developer.eval.types[0], resultMessage: this.bot.util.shorten(result, 1850) || '{}' })
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -22,10 +22,10 @@ module.exports = class Exec extends DiscordCommand {
|
|||||||
|
|
||||||
async execute(msg, args) {
|
async execute(msg, args) {
|
||||||
let result = '$';
|
let result = '$';
|
||||||
|
let errored = false;
|
||||||
|
|
||||||
const raw = args.join(' ').trim().endsWith('--raw') ? args.pop() : false;
|
const raw = args.join(' ').trim().endsWith('--raw') ? args.pop() : false;
|
||||||
const silent = args.join(' ').trim().endsWith('--silent') || args.join(' ').trim().endsWith('-s') ? args.pop() : false;
|
const silent = args.join(' ').trim().endsWith('--silent') || args.join(' ').trim().endsWith('-s') ? args.pop() : false;
|
||||||
const errored = false;
|
|
||||||
|
|
||||||
if (args.length <= 0) return msg.channel.createMessage(this._localize(msg.author.locale.developer.exec.args));
|
if (args.length <= 0) return msg.channel.createMessage(this._localize(msg.author.locale.developer.exec.args));
|
||||||
|
|
||||||
|
|||||||
@@ -3,19 +3,19 @@ const { DiscordCommand } = require('../../../core/');
|
|||||||
module.exports = class Snipe extends DiscordCommand {
|
module.exports = class Snipe extends DiscordCommand {
|
||||||
constructor(bot) {
|
constructor(bot) {
|
||||||
super(bot, {
|
super(bot, {
|
||||||
name : 'snipe',
|
name: 'snipe',
|
||||||
syntax : 'snipe',
|
syntax: 'snipe',
|
||||||
aliases : [],
|
aliases: [],
|
||||||
argument : [],
|
argument: [],
|
||||||
description: 'Re-post a deleted message',
|
description: 'Re-post a deleted message',
|
||||||
|
|
||||||
hidden : false,
|
hidden: false,
|
||||||
enabled : true,
|
enabled: true,
|
||||||
cooldown : 1000,
|
cooldown: 1000,
|
||||||
category : 'Utility',
|
category: 'Utility',
|
||||||
ownerOnly : false,
|
ownerOnly: false,
|
||||||
guildOnly : true,
|
guildOnly: true,
|
||||||
permissions: [ 'embedLinks' ]
|
permissions: ['embedLinks']
|
||||||
});
|
});
|
||||||
|
|
||||||
this.static = {
|
this.static = {
|
||||||
@@ -62,7 +62,8 @@ module.exports = class Snipe extends DiscordCommand {
|
|||||||
name: 'Embed body',
|
name: 'Embed body',
|
||||||
value: message.embeds[0].description
|
value: message.embeds[0].description
|
||||||
});
|
});
|
||||||
} else {{
|
} else {
|
||||||
|
{
|
||||||
structure.description = message.content;
|
structure.description = message.content;
|
||||||
structure.fields.push({
|
structure.fields.push({
|
||||||
name: msg.author.locale.util.snipe.embed,
|
name: msg.author.locale.util.snipe.embed,
|
||||||
@@ -71,10 +72,12 @@ module.exports = class Snipe extends DiscordCommand {
|
|||||||
name: '.',
|
name: '.',
|
||||||
value: message.embeds[0].description.substring(this.mutable.EMBED_FIELD_LIMIT, this.mutable.EMBED_FIELD_LIMIT * 2)
|
value: message.embeds[0].description.substring(this.mutable.EMBED_FIELD_LIMIT, this.mutable.EMBED_FIELD_LIMIT * 2)
|
||||||
});
|
});
|
||||||
}}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (message.content !== '' ) {
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (message.content.length >= 1) {
|
||||||
structure.description = message.content;
|
structure.description = message.content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,9 @@ module.exports = class WumpEvent {
|
|||||||
constructor(bot, opts = {}) {
|
constructor(bot, opts = {}) {
|
||||||
this.bot = bot;
|
this.bot = bot;
|
||||||
this.extData = Object.assign({ name: null }, opts);
|
this.extData = Object.assign({ name: null }, opts);
|
||||||
|
|
||||||
|
this.static = {};
|
||||||
|
this.mutable = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
emit(...args) {}
|
emit(...args) {}
|
||||||
|
|||||||
@@ -7,6 +7,10 @@ const conf = safeLoad(readFileSync('application.yml', { encoding: 'utf8' }));
|
|||||||
|
|
||||||
const guild = new Schema({
|
const guild = new Schema({
|
||||||
guildId: { type: String, default: undefined },
|
guildId: { type: String, default: undefined },
|
||||||
|
logger : {
|
||||||
|
channel: { type: String, default: '0' },
|
||||||
|
disabled: []
|
||||||
|
},
|
||||||
prefix : { type: String, default: conf.discord.prefix },
|
prefix : { type: String, default: conf.discord.prefix },
|
||||||
locale : { type: String, default: conf.discord.locale }
|
locale : { type: String, default: conf.discord.locale }
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -75,10 +75,10 @@ module.exports = class CommandRegistry {
|
|||||||
if (doc === null) {
|
if (doc === null) {
|
||||||
guild = new this.bot.schema.guild({ guildId: msg.channel.guild.id });
|
guild = new this.bot.schema.guild({ guildId: msg.channel.guild.id });
|
||||||
guild.save((err) => { if (err) process.handleError(err); });
|
guild.save((err) => { if (err) process.handleError(err); });
|
||||||
gCache.push({ 'guildId': msg.channel.guild.id, 'prefix': guild.prefix, 'entryAge': Date.now() });
|
gCache.push({ 'guildId': msg.channel.guild.id, 'prefix': guild.prefix, 'locale': guild.locale, 'entryAge': Date.now() });
|
||||||
} else {
|
} else {
|
||||||
guild = await this.bot.m.connection.collection('dGuilds').findOne({ guildId: msg.channel.guild.id });
|
guild = await this.bot.m.connection.collection('dGuilds').findOne({ guildId: msg.channel.guild.id });
|
||||||
gCache.push({ 'guildId': msg.channel.guild.id, 'prefix': guild.prefix, 'entryAge': Date.now() });
|
gCache.push({ 'guildId': msg.channel.guild.id, 'prefix': guild.prefix, 'locale': guild.locale, 'logger': guild.logger, 'entryAge': Date.now() });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else guild = gCache.filter((v) => v['guildId'] === msg.channel.guild.id )[0];
|
} else guild = gCache.filter((v) => v['guildId'] === msg.channel.guild.id )[0];
|
||||||
|
|||||||
@@ -21,6 +21,17 @@ module.exports = class LocaleRegistry {
|
|||||||
this.bot.locales.set(l['translation']['code'].toLowerCase(), l);
|
this.bot.locales.set(l['translation']['code'].toLowerCase(), l);
|
||||||
this.bot.localeDic.push(l['translation']['code']);
|
this.bot.localeDic.push(l['translation']['code']);
|
||||||
this.bot.localeMap.push(`${l['translation']['flag']} \`${l['translation']['code']}\` **:** ${l['translation']['orig']} (*${l['translation']['full']}*) \`[${l['translation']['progress']}%]\` {***${l['translation']['translator']['discord'][0]['name']}#${l['translation']['translator']['discord'][0]['discrim']}***}`);
|
this.bot.localeMap.push(`${l['translation']['flag']} \`${l['translation']['code']}\` **:** ${l['translation']['orig']} (*${l['translation']['full']}*) \`[${l['translation']['progress']}%]\` {***${l['translation']['translator']['discord'][0]['name']}#${l['translation']['translator']['discord'][0]['discrim']}***}`);
|
||||||
|
} else if (f.startsWith('logs')) {
|
||||||
|
this.bot.locales.set(`${l['translation_code'].toLowerCase()}:LOGS`, l);
|
||||||
|
} else if (f.startsWith('badwords')) {
|
||||||
|
if (!this.bot.locales.has('badwords')) {
|
||||||
|
this.bot.locales.set('badwords', l);
|
||||||
|
} else {
|
||||||
|
l.forEach((v) => {
|
||||||
|
this.bot.locales.get('badwords').push(v);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
|
|||||||
155
src/events/Discord/guildMemberAdd.js
Normal file
155
src/events/Discord/guildMemberAdd.js
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
const { DiscordEvent } = require('../../core');
|
||||||
|
|
||||||
|
const moment = require('moment'); require('../../util/moment/diff');
|
||||||
|
const { get } = require('wumpfetch');
|
||||||
|
const { yellow } = require('../../util/colors');
|
||||||
|
|
||||||
|
module.exports = class GuildMemberAdd extends DiscordEvent {
|
||||||
|
constructor(bot) {
|
||||||
|
super(bot, { name: 'guildMemberAdd' });
|
||||||
|
|
||||||
|
this.static = {
|
||||||
|
BASE_URL: [
|
||||||
|
'https://discord.services',
|
||||||
|
'https://api.ksoft.si'
|
||||||
|
],
|
||||||
|
REQ_DATA: [
|
||||||
|
{
|
||||||
|
parse: 'json',
|
||||||
|
headers: {
|
||||||
|
'User-Agent': this.bot.ua
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
parse: 'json',
|
||||||
|
headers: {
|
||||||
|
'User-Agent': this.bot.ua,
|
||||||
|
'Authorization': this.bot.conf.api.ksoft
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
Object.freeze(this);
|
||||||
|
Object.freeze(this.static);
|
||||||
|
}
|
||||||
|
|
||||||
|
async emit(guild, member) {
|
||||||
|
/*----------[ Logging ]---------- */
|
||||||
|
let entry = {};
|
||||||
|
let cache = this.bot.cache.has('guilds') ? this.bot.cache.get('guilds') : this.bot.cache.set('guilds', []) && this.bot.cache.get('guilds');
|
||||||
|
|
||||||
|
|
||||||
|
if (!this._checkArray('guildId', guild.id, cache)) {
|
||||||
|
this.bot.m.connection.collection('dGuilds').findOne({ guildId: guild.id }, async (err, doc) => {
|
||||||
|
if (err) {
|
||||||
|
process.handleError(err, 'IndexError', yellow('Database'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (doc === null) {
|
||||||
|
entry = new this.bot.schema.guild({ guildId: guild.id });
|
||||||
|
entry.save((err) => {
|
||||||
|
if (err) process.handleError(err, 'InsertError', yellow('Database'));
|
||||||
|
});
|
||||||
|
|
||||||
|
cache.push({
|
||||||
|
'prefix': entry.prefix,
|
||||||
|
'logger': entry.logger,
|
||||||
|
'locale': entry.locale,
|
||||||
|
'guildId': guild.id,
|
||||||
|
'entryAge': Date.now()
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
entry = await this.bot.m.connection.collection('dGuilds').findOne({ guildId: guild.id });
|
||||||
|
|
||||||
|
cache.push({
|
||||||
|
'prefix': entry.prefix,
|
||||||
|
'logger': entry.logger,
|
||||||
|
'locale': entry.locale,
|
||||||
|
'guildId': guild.id,
|
||||||
|
'entryAge': Date.now()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
entry = cache.filter((v) => v.guildId === guild.id)[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (entry && entry.logger && entry.logger.channel !== '0' && !entry.logger.disabled.includes(this.extData.name)) {
|
||||||
|
try {
|
||||||
|
const strings = this.bot.locales.has(`${entry.locale}:LOGS`) ? this.bot.locales.get(`${entry.locale}:LOGS`) : this.bot.locales.get(`${this.bot.conf.discord.locale}:LOGS`);
|
||||||
|
const prohibited = new RegExp((this.bot.locales.get('badwords') || []).join('|'), 'gi');
|
||||||
|
|
||||||
|
member.bans = {
|
||||||
|
'ksoft.si': this.bot.conf.api.ksoft ? await get(`${this.static.BASE_URL[0]}/bans/info/?user=${member.id}`, this.static.REQ_DATA[1]).send() : undefined,
|
||||||
|
'discord.services': await get(`${this.static.BASE_URL[0]}/api/ban/${member.id}`, this.static.REQ_DATA[0]).send()
|
||||||
|
};
|
||||||
|
|
||||||
|
member.c = moment.preciseDiff(new Date(), new Date(member.createdAt), true);
|
||||||
|
let notes = [];
|
||||||
|
|
||||||
|
if (prohibited.test(member.username)) {
|
||||||
|
notes.push(`${this.bot.emote('logs', 'message_delete', '1')} ${strings.member.add.notes[0]}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (member.c.days <= 0 && member.c.months <= 0 && member.c.years <= 0) {
|
||||||
|
notes.push(`${this.bot.emote('logs', 'message_delete', '2')} ${strings.member.add.notes[1]}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!member.avatar) {
|
||||||
|
notes.push(`${this.bot.emote('logs', 'message_delete', '3')} ${strings.member.add.notes[2]}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (member.bans['discord.services'] && member.bans['discord.services'].body.msg !== 'No ban found') {
|
||||||
|
notes.push(`${this.bot.emote('logs', 'message_delete', '4')} ${strings.member.add.notes[3].replace(/{e\.ban\.reason}/, member.bans['discord.services'].body.reason || 'Unknown')}`);
|
||||||
|
}
|
||||||
|
if (member.bans['ksoft.si'] && !member.bans['ksoft.si'].body.code) {
|
||||||
|
notes.push(`${this.bot.emote('logs', 'message_delete', '5')} ${strings.member.add.notes[5].replace(/{e\.ban\.reason}/, member.bans['ksoft.si'].body.reason || 'Unknown')}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.bot.createMessage(entry.logger.channel, {
|
||||||
|
content: this._localize(strings.member.add.main, member),
|
||||||
|
embed: {
|
||||||
|
description: notes.length >= 1 ? notes.join('\n') : undefined
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (ex) {
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_checkArray(field, needle, array) {
|
||||||
|
if (array instanceof Array) {
|
||||||
|
return array.some((v) => {
|
||||||
|
return v[field] === needle;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_localize(msg, extData) {
|
||||||
|
if (extData) {
|
||||||
|
extData.creation = {
|
||||||
|
date: moment(extData.createdAt).format('YYYY[/]MM[/]DD HH[:]mm'),
|
||||||
|
precise: [
|
||||||
|
extData.c.years >= 1 ? `${extData.c.years} years` : undefined,
|
||||||
|
extData.c.months >= 1 ? `${extData.c.months} months` : undefined,
|
||||||
|
extData.c.days >= 1 ? `${extData.c.days} days` : undefined,
|
||||||
|
extData.c.days <= 0 && extData.c.months <= 0 && extData.c.years <= 0 ? 'Less than a day' : undefined
|
||||||
|
].join(' ').trim()
|
||||||
|
};
|
||||||
|
|
||||||
|
msg = msg
|
||||||
|
.replace(/{e\.user!s}/g, `${extData.username}#${extData.discriminator}`)
|
||||||
|
.replace(/{e\.user\.id}/g, extData.id)
|
||||||
|
.replace(/{e\.user\.created@exact}/g, extData.creation.date)
|
||||||
|
.replace(/{e\.user\.created@precise}/g, extData.creation.precise);
|
||||||
|
}
|
||||||
|
|
||||||
|
return msg
|
||||||
|
.replace(/{emoji}/g, this.bot.emote('logs', 'message_delete', '0'))
|
||||||
|
.replace(/{date@now}/g, moment(new Date).format(`HH[:]mm[:]ss[.]SS`));
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -1,12 +1,154 @@
|
|||||||
const { DiscordEvent } = require('../../core');
|
const { DiscordEvent } = require('../../core');
|
||||||
|
|
||||||
|
const moment = require('moment');
|
||||||
|
const { yellow } = require('../../util/colors');
|
||||||
module.exports = class MessageDelete extends DiscordEvent {
|
module.exports = class MessageDelete extends DiscordEvent {
|
||||||
constructor(bot) {
|
constructor(bot) {
|
||||||
super(bot, { name: 'messageDelete' });
|
super(bot, { name: 'messageDelete' });
|
||||||
|
|
||||||
|
this.static = {
|
||||||
|
EMBED_FIELD_LIMIT: 1024
|
||||||
|
};
|
||||||
|
|
||||||
|
Object.freeze(this);
|
||||||
|
Object.freeze(this.static);
|
||||||
}
|
}
|
||||||
|
|
||||||
emit(msg) {
|
emit(msg) {
|
||||||
if (!msg.channel.guild || !msg.author || !this.bot.ready) return;
|
if (!msg.channel.guild || !msg.author || !this.bot.ready) return;
|
||||||
this.bot.cache.set(`${msg.channel.id}:SNIPE`, msg);
|
this.bot.cache.set(`${msg.channel.id}:SNIPE`, msg);
|
||||||
|
|
||||||
|
if (msg.author.id === this.bot.user.id) return;
|
||||||
|
|
||||||
|
let guild = {};
|
||||||
|
let cache = this.bot.cache.has('guilds') ? this.bot.cache.get('guilds') : this.bot.cache.set('guilds', []) && this.bot.cache.get('guilds');
|
||||||
|
|
||||||
|
if (!this._checkArray('guildId', msg.channel.guild.id, cache)) {
|
||||||
|
this.bot.m.connection.collection('dGuilds').findOne({ guildId: msg.channel.guild.id }, async (err, doc) => {
|
||||||
|
if (err) {
|
||||||
|
process.handleError(err, 'IndexError', yellow('Database'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (doc === null) {
|
||||||
|
guild = new this.bot.schema.guild({ guildId: msg.channel.guild.id });
|
||||||
|
guild.save((err) => {
|
||||||
|
if (err) process.handleError(err, 'InsertError', yellow('Database'));
|
||||||
|
});
|
||||||
|
|
||||||
|
cache.push({
|
||||||
|
'prefix': guild.prefix,
|
||||||
|
'logger': guild.logger,
|
||||||
|
'locale': guild.locale,
|
||||||
|
'guildId': msg.channel.guild.id,
|
||||||
|
'entryAge': Date.now()
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
guild = await this.bot.m.connection.collection('dGuilds').findOne({ guildId: msg.channel.guild.id });
|
||||||
|
|
||||||
|
cache.push({
|
||||||
|
'prefix': guild.prefix,
|
||||||
|
'logger': guild.logger,
|
||||||
|
'locale': guild.locale,
|
||||||
|
'guildId': msg.channel.guild.id,
|
||||||
|
'entryAge': Date.now()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
guild = cache.filter((v) => v.guildId === msg.channel.guild.id)[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (guild && guild.logger && guild.logger.channel !== '0' && msg.channel.id !== guild.logger.channel && !guild.logger.disabled.includes(this.extData.name)) {
|
||||||
|
try {
|
||||||
|
const strings = this.bot.locales.has(`${guild.locale}:LOGS`) ? this.bot.locales.get(`${guild.locale}:LOGS`) : this.bot.locales.get(`${this.bot.conf.discord.locale}:LOGS`);
|
||||||
|
|
||||||
|
let structure = {
|
||||||
|
author: {
|
||||||
|
name: `${msg.author.username}#${msg.author.discriminator} (${msg.author.id})`,
|
||||||
|
icon_url: msg.author.avatar ? msg.author.avatarURL : msg.author.defaultAvatarURL
|
||||||
|
},
|
||||||
|
color: this.bot.col.logs.message.delete,
|
||||||
|
fields: [],
|
||||||
|
timestamp: new Date(msg.timestamp).toISOString()
|
||||||
|
};
|
||||||
|
|
||||||
|
if (msg.embeds.length > 0) {
|
||||||
|
if ('url' in msg.embeds[0]) structure.url = msg.embeds[0].url;
|
||||||
|
if ('type' in msg.embeds[0]) structure.type = msg.embeds[0].type;
|
||||||
|
if ('title' in msg.embeds[0]) structure.title = msg.embeds[0].title;
|
||||||
|
if ('image' in msg.embeds[0]) structure.image = msg.embeds[0].image;
|
||||||
|
if ('video' in msg.embeds[0]) structure.video = msg.embeds[0].video;
|
||||||
|
if ('fields' in msg.embeds[0]) structure.fields = msg.embeds[0].fields;
|
||||||
|
if ('provider' in msg.embeds[0]) structure.provider = msg.embeds[0].provider;
|
||||||
|
if ('thumbnail' in msg.embeds[0]) structure.thumbnail = msg.embeds[0].thumbnail;
|
||||||
|
if ('description' in msg.embeds[0]) {
|
||||||
|
if (msg.content === '') {
|
||||||
|
structure.description = msg.embeds[0].description;
|
||||||
|
} else {
|
||||||
|
if (msg.embeds[0].description.length <= this.static.EMBED_FIELD_LIMIT) {
|
||||||
|
structure.description = msg.content;
|
||||||
|
structure.fields.push({
|
||||||
|
name: 'Embed body',
|
||||||
|
value: msg.embeds[0].description
|
||||||
|
});
|
||||||
|
} else if (msg.embeds[0].description.length >= this.static.EMBED_FIELD_LIMIT) {
|
||||||
|
structure.description = msg.content;
|
||||||
|
structure.fields.push({
|
||||||
|
name: msg.author.locale.util.snipe.embed,
|
||||||
|
value: msg.embeds[0].description.substring(0, this.static.EMBED_FIELD_LIMIT)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '.',
|
||||||
|
value: msg.embeds[0].description.substring(this.static.EMBED_FIELD_LIMIT, this.static.EMBED_FIELD_LIMIT * 2)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (msg.content.length >= 1) {
|
||||||
|
structure.description = msg.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!('image' in structure) && msg.attachments.length > 0) {
|
||||||
|
structure.image = {
|
||||||
|
url: msg.attachments[0].url,
|
||||||
|
width: msg.attachments[0].width,
|
||||||
|
height: msg.attachments[0].height,
|
||||||
|
proxy_url: msg.attachments[0].proxy_url
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
this.bot.createMessage(guild.logger.channel, {
|
||||||
|
content: this._localize(strings.message.delete, msg),
|
||||||
|
embed: structure
|
||||||
|
});
|
||||||
|
} catch (ex) {
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_checkArray(field, needle, array) {
|
||||||
|
if (array instanceof Array) {
|
||||||
|
return array.some((v) => {
|
||||||
|
return v[field] === needle;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_localize(msg, extData) {
|
||||||
|
if (extData) {
|
||||||
|
msg = msg
|
||||||
|
.replace(/{e\.user!s}/, `${extData.author.username}#${extData.author.discriminator}`)
|
||||||
|
.replace(/{e\.user\.id}/, extData.author.id)
|
||||||
|
.replace(/{e\.channel!s}/, `#${extData.channel.name}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return msg
|
||||||
|
.replace(/{emoji}/, this.bot.emote('logs', 'message', 'delete'))
|
||||||
|
.replace(/{date@now}/, moment(new Date).format(`HH[:]mm[:]ss`));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -1,40 +1,40 @@
|
|||||||
const { DiscordEvent } = require('../../core');
|
const { DiscordEvent } = require('../../core');
|
||||||
|
|
||||||
const moment = require('moment');
|
const moment = require('moment');
|
||||||
const { safeLoad } = require('js-yaml');
|
|
||||||
const { green, cyan } = require('../../util/colors');
|
const { green, cyan } = require('../../util/colors');
|
||||||
const { join: pJoin } = require('path');
|
|
||||||
const { readFileSync } = require('fs');
|
|
||||||
|
|
||||||
module.exports = class Ready extends DiscordEvent {
|
module.exports = class Ready extends DiscordEvent {
|
||||||
constructor(bot) {
|
constructor(bot) {
|
||||||
super(bot, { name: 'ready' });
|
super(bot, { name: 'ready' });
|
||||||
|
|
||||||
this.strings = safeLoad(readFileSync(pJoin(__dirname, '..', '..', 'assets', 'i18n', bot.conf['discord']['locale'], 'logs_simple.yml'), { encoding: 'utf8' }));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
emit() {
|
emit() {
|
||||||
this.bot.print(1, `${cyan( 'Discord' )} >> All websockets connected to ${green(`${this.bot.user.username}#${this.bot.user.discriminator}`)}`);
|
this.bot.print(1, `${cyan( 'Discord' )} >> All websockets connected to ${green(`${this.bot.user.username}#${this.bot.user.discriminator}`)}`);
|
||||||
|
|
||||||
if (this.bot.conf['discord']['playing']) {
|
if (this.bot.conf.discord.playing) {
|
||||||
this.bot.editStatus({
|
this.bot.editStatus({
|
||||||
url : this.bot.conf['discord']['playing']['url'] || null,
|
url : this.bot.conf.discord.playing.url || null,
|
||||||
type : this.bot.conf['discord']['playing']['type'] || 3,
|
type : this.bot.conf.discord.playing.type || 3,
|
||||||
name : this.bot.conf['discord']['playing']['name'] || 'Wump',
|
name : this.bot.conf.discord.playing.name || 'Wump',
|
||||||
status : this.bot.conf['discord']['playing']['status'] || 'online'
|
status : this.bot.conf.discord.playing.status || 'online'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
this.bot.hook.send({ content: this.localize(this.strings['connection']['ready']) });
|
this.bot.hook.send({ content: this.localize(this.bot.locales.get('en_us:LOGS').connection.ready) });
|
||||||
|
|
||||||
// Cache flushing if entry isn't used within `flushTime` minutes
|
// Cache flushing if entry isn't used within `flushTime` milliseconds
|
||||||
const flushTime = 1800000;
|
const flushTime = (30 * 60) * 1000;
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
const uCache = this.bot.cache.get('users') || [];
|
const uCache = this.bot.cache.get('users') || [];
|
||||||
const gCache = this.bot.cache.get('guilds') || [];
|
const gCache = this.bot.cache.get('guilds') || [];
|
||||||
const vCache = this.bot.cache.get('voters') || [];
|
const vCache = this.bot.cache.get('voters') || [];
|
||||||
|
|
||||||
gCache.forEach((v, _) => (new Date(v.entryAge) <= new Date(new Date() - flushTime)) ? gCache.splice(_, 1) : undefined);
|
gCache.forEach((v, _) => {
|
||||||
|
if (new Date(v.entryAge) <= new Date(new Date() - flushTime)) {
|
||||||
|
gCache.splice(_, 1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
uCache.forEach((v, _) => {
|
uCache.forEach((v, _) => {
|
||||||
if (new Date(v.entryAge) <= new Date(new Date() - flushTime)) {
|
if (new Date(v.entryAge) <= new Date(new Date() - flushTime)) {
|
||||||
vCache.forEach((n, _) => n === v.userId ? vCache.splice(_, 1) : undefined);
|
vCache.forEach((n, _) => n === v.userId ? vCache.splice(_, 1) : undefined);
|
||||||
@@ -45,12 +45,16 @@ module.exports = class Ready extends DiscordEvent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
localize(msg) {
|
localize(msg) {
|
||||||
if (!msg) return '';
|
try {
|
||||||
|
if (!msg) throw 'INVALID_STRING';
|
||||||
|
|
||||||
return msg
|
return msg
|
||||||
.replace(/\$\[wump:version]/g, `${this.bot.pkg.version} ${this.bot.conf['nightly'] ? 'NIGHTLY' : 'DISTRIBUTIONs'}`)
|
.replace(/{global\.version}/, `${this.bot.pkg.version} ${this.bot.conf.nightly ? 'NIGHTLY' : 'DISTRIBUTION'}`)
|
||||||
.replace(/\$\[process:hash]/g, process.hash)
|
.replace(/{process\.hash}/, process.hash)
|
||||||
.replace(/\$\[date:now]/g, moment(Date.now()).format('HH[:]mm[:]ss'))
|
.replace(/{date@now}/, moment(Date.now()).format('HH[:]mm[:]ss'))
|
||||||
.replace(/\$\[emoji#0]/g, this.bot.emote('logs', 'ready'));
|
.replace(/{emoji}/, this.bot.emote('logs', 'shard', 'disconnect'));
|
||||||
|
} catch (ex) {
|
||||||
|
return `LOCALIZE_ERROR:${ex.code}`;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
// YYYY[y] M[M] DD[d] H[h] m[m] ${startTime > 1000 ? 's[.]SS[s]' : 's[s] SS[ms]'}
|
|
||||||
@@ -1,28 +1,31 @@
|
|||||||
const { DiscordEvent } = require('../../core');
|
const { DiscordEvent } = require('../../core');
|
||||||
|
|
||||||
const moment = require('moment');
|
const moment = require('moment');
|
||||||
const { safeLoad } = require('js-yaml');
|
|
||||||
const { join: pJoin } = require('path');
|
|
||||||
const { readFileSync } = require('fs');
|
|
||||||
|
|
||||||
module.exports = class shardDisconnect extends DiscordEvent {
|
module.exports = class shardDisconnect extends DiscordEvent {
|
||||||
constructor(bot) {
|
constructor(bot) {
|
||||||
super(bot, { name: 'shardDisconnect' });
|
super(bot, { name: 'shardDisconnect' });
|
||||||
|
|
||||||
this.strings = safeLoad(readFileSync(pJoin(__dirname, '..', '..', 'assets', 'i18n', bot.conf['discord']['locale'], 'logs_simple.yml'), { encoding: 'utf8' }));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
emit(err, id) {
|
emit(err, shard) {
|
||||||
this.bot.hook.send({ content: this.localize(this.strings['connection']['shard']['disconnect'], { shard: id }) });
|
this.bot.hook.send({ content: this.localize(this.bot.locales.get('en_us:LOGS').connection.shard.disconnect, shard) });
|
||||||
}
|
}
|
||||||
|
|
||||||
localize(msg, extData = {}) {
|
localize(msg, extData = {}) {
|
||||||
if (!msg) return '';
|
try {
|
||||||
|
if (!msg) throw 'INVALID_STRING';
|
||||||
|
|
||||||
|
if (extData) {
|
||||||
|
msg = msg.replace(/{e\.shard\.id}/, extData);
|
||||||
|
}
|
||||||
|
|
||||||
return msg
|
return msg
|
||||||
.replace(/\$\[shard:id]/g, extData.shard)
|
.replace(/{global\.version}/, `${this.bot.pkg.version} ${this.bot.conf.nightly ? 'NIGHTLY' : 'DISTRIBUTION'}`)
|
||||||
.replace(/\$\[wump:version]/g, `${this.bot.pkg.version} ${this.bot.conf['nightly'] ? 'NIGHTLY' : 'DISTRIBUTION'}`)
|
.replace(/{process\.hash}/, process.hash)
|
||||||
.replace(/\$\[process:hash]/g, process.hash)
|
.replace(/{date@now}/, moment(Date.now()).format('HH[:]mm[:]ss'))
|
||||||
.replace(/\$\[date:now]/g, moment(Date.now()).format('HH[:]mm[:]ss'))
|
.replace(/{emoji}/, this.bot.emote('logs', 'shard', 'disconnect'));
|
||||||
.replace(/\$\[emoji#0]/g, this.bot.emote('logs', 'shard', 'disconnect'));
|
} catch (ex) {
|
||||||
|
return `LOCALIZE_ERROR:${ex.code}`;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -1,28 +1,31 @@
|
|||||||
const { DiscordEvent } = require('../../core');
|
const { DiscordEvent } = require('../../core');
|
||||||
|
|
||||||
const moment = require('moment');
|
const moment = require('moment');
|
||||||
const { safeLoad } = require('js-yaml');
|
|
||||||
const { join: pJoin } = require('path');
|
|
||||||
const { readFileSync } = require('fs');
|
|
||||||
|
|
||||||
module.exports = class ShardReady extends DiscordEvent {
|
module.exports = class ShardReady extends DiscordEvent {
|
||||||
constructor(bot) {
|
constructor(bot) {
|
||||||
super(bot, { name: 'shardReady' });
|
super(bot, { name: 'shardReady' });
|
||||||
|
|
||||||
this.strings = safeLoad(readFileSync(pJoin(__dirname, '..', '..', 'assets', 'i18n', bot.conf['discord']['locale'], 'logs_simple.yml'), { encoding: 'utf8' }));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
emit(id) {
|
emit(shard) {
|
||||||
this.bot.hook.send({ content: this.localize(this.strings['connection']['shard']['ready'], { shard: id }) });
|
this.bot.hook.send({ content: this.localize(this.bot.locales.get('en_us:LOGS').connection.shard.ready, shard) });
|
||||||
}
|
}
|
||||||
|
|
||||||
localize(msg, extData = {}) {
|
localize(msg, extData = {}) {
|
||||||
if (!msg) return '';
|
try {
|
||||||
|
if (!msg) throw 'INVALID_STRING';
|
||||||
|
|
||||||
|
if (extData) {
|
||||||
|
msg = msg.replace(/{e\.shard\.id}/, extData);
|
||||||
|
}
|
||||||
|
|
||||||
return msg
|
return msg
|
||||||
.replace(/\$\[shard:id]/g, extData.shard)
|
.replace(/{global\.version}/, `${this.bot.pkg.version} ${this.bot.conf.nightly ? 'NIGHTLY' : 'DISTRIBUTION'}`)
|
||||||
.replace(/\$\[wump:version]/g, `${this.bot.pkg.version} ${this.bot.conf['nightly'] ? 'NIGHTLY' : 'DISTRIBUTION'}`)
|
.replace(/{process\.hash}/, process.hash)
|
||||||
.replace(/\$\[process:hash]/g, process.hash)
|
.replace(/{date@now}/, moment(Date.now()).format('HH[:]mm[:]ss'))
|
||||||
.replace(/\$\[date:now]/g, moment(Date.now()).format('HH[:]mm[:]ss'))
|
.replace(/{emoji}/, this.bot.emote('logs', 'shard', 'disconnect'));
|
||||||
.replace(/\$\[emoji#0]/g, this.bot.emote('logs', 'shard', 'ready'));
|
} catch (ex) {
|
||||||
|
return `LOCALIZE_ERROR:${ex.code}`;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -1,28 +1,31 @@
|
|||||||
const { DiscordEvent } = require('../../core');
|
const { DiscordEvent } = require('../../core');
|
||||||
|
|
||||||
const moment = require('moment');
|
const moment = require('moment');
|
||||||
const { safeLoad } = require('js-yaml');
|
|
||||||
const { join: pJoin } = require('path');
|
|
||||||
const { readFileSync } = require('fs');
|
|
||||||
|
|
||||||
module.exports = class ShardResume extends DiscordEvent {
|
module.exports = class ShardResume extends DiscordEvent {
|
||||||
constructor(bot) {
|
constructor(bot) {
|
||||||
super(bot, { name: 'shardResume' });
|
super(bot, { name: 'shardResume' });
|
||||||
|
|
||||||
this.strings = safeLoad(readFileSync(pJoin(__dirname, '..', '..', 'assets', 'i18n', bot.conf['discord']['locale'], 'logs_simple.yml'), { encoding: 'utf8' }));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
emit(id) {
|
emit(shard) {
|
||||||
this.bot.hook.send({ content: this.localize(this.strings['connection']['shard']['resume'], { shard: id }) });
|
this.bot.hook.send({ content: this.localize(this.bot.locales.get('en_us:LOGS').connection.shard.resume, shard) });
|
||||||
}
|
}
|
||||||
|
|
||||||
localize(msg, extData = {}) {
|
localize(msg, extData = {}) {
|
||||||
if (!msg) return '';
|
try {
|
||||||
|
if (!msg) throw 'INVALID_STRING';
|
||||||
|
|
||||||
|
if (extData) {
|
||||||
|
msg = msg.replace(/{e\.shard\.id}/, extData);
|
||||||
|
}
|
||||||
|
|
||||||
return msg
|
return msg
|
||||||
.replace(/\$\[shard:id]/g, extData.shard)
|
.replace(/{global\.version}/, `${this.bot.pkg.version} ${this.bot.conf.nightly ? 'NIGHTLY' : 'DISTRIBUTION'}`)
|
||||||
.replace(/\$\[wump:version]/g, `${this.bot.pkg.version} ${this.bot.conf['nightly'] ? 'NIGHTLY' : 'DISTRIBUTION'}`)
|
.replace(/{process\.hash}/, process.hash)
|
||||||
.replace(/\$\[process:hash]/g, process.hash)
|
.replace(/{date@now}/, moment(Date.now()).format('HH[:]mm[:]ss'))
|
||||||
.replace(/\$\[date:now]/g, moment(Date.now()).format('HH[:]mm[:]ss'))
|
.replace(/{emoji}/, this.bot.emote('logs', 'shard', 'disconnect'));
|
||||||
.replace(/\$\[emoji#0]/g, this.bot.emote('logs', 'shard', 'resume'));
|
} catch (ex) {
|
||||||
|
return `LOCALIZE_ERROR:${ex.code}`;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -85,7 +85,7 @@ if (conf['discord']['enabled']) {
|
|||||||
autoreconnect: true
|
autoreconnect: true
|
||||||
},
|
},
|
||||||
|
|
||||||
ua : `${pkg.displayName}/${pkg.version}/${conf['nightly'] ? 'nightly' : 'distribution'}`,
|
ua : `${pkg.displayName}/${conf['nightly'] ? 'nightly' : 'distribution'} (https://github.com/PassTheWessel/wump)`,
|
||||||
db : mongoose,
|
db : mongoose,
|
||||||
pkg : pkg,
|
pkg : pkg,
|
||||||
colors: col,
|
colors: col,
|
||||||
|
|||||||
Reference in New Issue
Block a user