Skip to content
Permalink
Browse files

lots of stuff

  • Loading branch information...
gc committed Nov 30, 2018
1 parent 97c2b51 commit 5834623f4aec769d213f230946e0ef7ff0462790
Showing with 702 additions and 363 deletions.
  1. +1 −0 TODO.txt
  2. +1 −1 bot/bwd/clientStorage.schema.json
  3. +1 −1 bot/bwd/guilds.schema.json
  4. +1 −0 bot/bwd/provider/json/guilds/342983479501389826.json
  5. +1 −0 bot/bwd/provider/json/users/157797566833098752.json
  6. +1 −1 bot/bwd/users.schema.json
  7. +11 −6 bot/commands/Configuration/73.js
  8. +4 −8 bot/commands/Configuration/autoupdate.js
  9. +6 −4 bot/commands/Configuration/cmd.js
  10. +10 −12 bot/commands/Configuration/hcimdeaths.js
  11. +6 −6 bot/commands/Configuration/petmessages.js
  12. +2 −2 bot/commands/Configuration/prefix.js
  13. +5 −11 bot/commands/Configuration/setrsn.js
  14. +6 −12 bot/commands/Configuration/streamertweets.js
  15. +7 −12 bot/commands/Configuration/tweets.js
  16. +15 −20 bot/commands/Configuration/twitchnotifications.js
  17. +2 −1 bot/commands/CrystalMathLabs/ranks.js
  18. +0 −1 bot/commands/OSRS_Accounts/clues.js
  19. +4 −4 bot/commands/OSRS_Accounts/diary.js
  20. +1 −1 bot/commands/OSRS_Fun/ayiza.js
  21. +2 −2 bot/commands/OSRS_Fun/casket.js
  22. +5 −3 bot/commands/OSRS_Fun/dice.js
  23. +2 −2 bot/commands/OSRS_Fun/fakeely.js
  24. +2 −2 bot/commands/OSRS_Fun/fakepm.js
  25. +2 −2 bot/commands/OSRS_Fun/fakescythe.js
  26. +1 −1 bot/commands/OSRS_Fun/kieren.js
  27. +43 −43 bot/commands/OSRS_Fun/kill.js
  28. +1 −1 bot/commands/OSRS_Fun/markov.js
  29. +1 −2 bot/commands/OSRS_Fun/raid.js
  30. +2 −2 bot/commands/OSRS_Fun/screens.js
  31. +1 −1 bot/commands/OSRS_Fun/trivia.js
  32. +1 −1 bot/commands/OSRS_Utility/players.js
  33. +1 −1 bot/commands/OSRS_Utility/quest.js
  34. +1 −1 bot/commands/OSRS_Utility/world.js
  35. +1 −1 bot/commands/Owner/bstats.js
  36. +0 −13 bot/commands/Owner/conf.js
  37. +15 −11 bot/commands/Owner/docs.js
  38. +3 −9 bot/commands/{Configuration → Owner}/jmodcomments.js
  39. +0 −18 bot/commands/Owner/ping.js
  40. +0 −13 bot/commands/Owner/userconf.js
  41. +3 −3 bot/commands/Utility/bank.js
  42. +1 −1 bot/commands/Utility/biggify.js
  43. +3 −3 bot/commands/Utility/leaderboard.js
  44. +1 −1 bot/commands/Utility/pay.js
  45. +2 −2 bot/commands/Utility/server.js
  46. +5 −3 bot/commands/Utility/user.js
  47. +0 −29 bot/extendables/checkChatForImage.js
  48. +3 −3 bot/extendables/cleanString.js
  49. +3 −3 bot/extendables/cmlErrorCheck.js
  50. +3 −3 bot/extendables/combatLevel.js
  51. +3 −3 bot/extendables/convertLVLtoXP.js
  52. +22 −0 bot/extendables/fetchImage.js
  53. +3 −3 bot/extendables/getStatsEmbed.js
  54. +8 −8 bot/extendables/getUsername.js
  55. +3 −3 bot/extendables/roll.js
  56. +24 −53 bot/index.js
  57. +14 −0 config/PermissionLevels.js
  58. +6 −0 config/Schemas/ClientSchema.js
  59. +12 −0 config/Schemas/GuildSchema.js
  60. +7 −0 config/Schemas/UserSchema.js
  61. +3 −0 config/Schemas/index.js
  62. +45 −0 config/index.js
  63. +19 −0 config/private.js
  64. 0 data/emojis.js → config/skill-emoji.js
  65. 0 {data → config}/util.js
  66. +16 −8 package-lock.json
  67. +2 −2 package.json
  68. BIN {data → }/resources/images/ayiza.jpg
  69. BIN {data → }/resources/images/chat-bg.png
  70. BIN {data → }/resources/images/coins.png
  71. BIN {data → }/resources/images/kieren.jpg
  72. BIN {data → }/resources/images/pm-bg.png
  73. BIN {data → }/resources/images/qa-background.png
  74. BIN {data → }/resources/images/tob-bg.png
  75. 0 {data → }/resources/markov-sample.txt
  76. BIN {data → }/resources/osrs-font.ttf
  77. +322 −0 resources/trivia-questions.json
  78. 0 {bot → temp}/finalizers/commandStats.js
  79. 0 {bot → temp}/finalizers/counter.js
  80. 0 {bot → temp}/monitors/73.js
  81. 0 {bot → temp}/monitors/petmessages.js
  82. 0 {bot → temp}/providers/rethinkdb.js
@@ -0,0 +1 @@
disable userconf, conf
@@ -1 +1 @@
{"type":"Folder","commandStats":{"type":"any","array":false,"default":null,"min":null,"max":null,"configurable":false},"guildBlacklist":{"type":"string","array":true,"default":[],"min":17,"max":19,"configurable":true},"prices":{"type":"any","array":false,"default":null,"min":null,"max":null,"configurable":false},"schedules":{"type":"any","array":true,"default":[],"min":null,"max":null,"configurable":false},"totalCommandsUsed":{"type":"integer","array":false,"default":null,"min":null,"max":null,"configurable":true},"userBlacklist":{"type":"user","array":true,"default":[],"min":null,"max":null,"configurable":true}}
{"userBlacklist":{"type":"user","default":[],"min":null,"max":null,"array":true,"configurable":true},"guildBlacklist":{"type":"string","default":[],"min":17,"max":19,"array":true,"configurable":true},"schedules":{"type":"any","default":[],"min":null,"max":null,"array":true,"configurable":false}}
@@ -1 +1 @@
{"type":"Folder","jmodComments":{"type":"textchannel","array":false,"default":null,"min":null,"max":null,"configurable":true},"autoupdate":{"type":"textchannel","array":false,"default":null,"min":null,"max":null,"configurable":true},"disabledCommands":{"type":"command","array":true,"default":["porn"],"min":null,"max":null,"configurable":true},"hcimdeaths":{"type":"textchannel","array":false,"default":null,"min":null,"max":null,"configurable":true},"joyReactions":{"type":"textchannel","array":false,"default":null,"min":null,"max":null,"configurable":true},"language":{"type":"language","array":false,"default":"en-US","min":null,"max":null,"configurable":true},"petchannel":{"type":"textchannel","array":false,"default":null,"min":null,"max":null,"configurable":true},"prefix":{"type":"string","array":false,"default":"+","min":null,"max":null,"configurable":true},"streamers":{"type":"string","array":true,"default":[],"min":null,"max":null,"configurable":true},"streamertweets":{"type":"textchannel","array":false,"default":null,"min":null,"max":null,"configurable":true},"totalCommandsUsed":{"type":"integer","array":false,"default":null,"min":null,"max":null,"configurable":true},"tweetchannel":{"type":"textchannel","array":false,"default":null,"min":null,"max":null,"configurable":true},"twitchnotifs":{"type":"textchannel","array":false,"default":null,"min":null,"max":null,"configurable":true}}
{"prefix":{"type":"string","default":"+","min":null,"max":10,"array":false,"configurable":true},"language":{"type":"language","default":"en-US","min":null,"max":null,"array":false,"configurable":true},"disableNaturalPrefix":{"type":"boolean","default":false,"min":null,"max":null,"array":false,"configurable":false},"disabledCommands":{"type":"command","default":[],"min":null,"max":null,"array":true,"configurable":true}}
@@ -0,0 +1 @@
{"id":"342983479501389826","prefix":".","joyReactions":"346679908053024769","disabledCommands":[],"hcimdeaths":null,"tweetchannel":"346679908053024769","twitchnotifs":"357422607982919680","streamers":["faux"]}
@@ -0,0 +1 @@
{"id":"157797566833098752","GP":9800,"RSN":"adsfasd"}
@@ -1 +1 @@
{"type":"Folder","GP":{"type":"integer","array":false,"default":0,"min":null,"max":null,"configurable":true},"autoupdate":{"type":"boolean","array":false,"default":false,"min":null,"max":null,"configurable":true},"RSN":{"type":"string","array":false,"default":null,"min":0,"max":12,"configurable":true},"totalCommandsUsed":{"type":"integer","array":false,"default":null,"min":null,"max":null,"configurable":true}}
{}
@@ -14,18 +14,23 @@ module.exports = class extends Command {
}

async enable(msg) {
if (msg.guild.configs.joyReactions === msg.channel.id) throw `😂 Reactions are already enabled in this channel.`;
if (msg.guild.configs.joyReactions !== null) {
await msg.guild.configs.update('joyReactions', msg.channel, msg.guild);
const joyReactions = msg.guild.settings.get('joyReactions');
if (joyReactions === msg.channel.id) {
throw `😂 Reactions are already enabled in this channel.`;
}
if (joyReactions) {
await msg.guild.settings.update('joyReactions', msg.channel);
return msg.send(`😂 Reactions are already enabled in another channel, but I've switched them to use this channel.`);
}
await msg.guild.configs.update('joyReactions', msg.channel, msg.guild);
await msg.guild.settings.update('joyReactions', msg.channel);
return msg.send(`Enabled 😂 Reactions in this channel.`);
}

async disable(msg) {
if (msg.guild.configs.joyReactions === null) throw "😂 Reactions aren't enabled, so you can't disable them.";
await msg.guild.configs.reset('joyReactions');
if (!msg.guild.settings.get('joyReactions')) {
throw "😂 Reactions aren't enabled, so you can't disable them.";
}
await msg.guild.settings.reset('joyReactions');
return msg.send(`Disabled 😂 Reactions in this channel.`);
}

@@ -10,15 +10,11 @@ module.exports = class extends Command {
}

async run(msg) {
if (!msg.author.configs.RSN) throw 'You must have an RSN set to Autoupdate. Use `+setrsn <username>`';
await msg.author.configs.update('autoupdate', !msg.author.configs.autoupdate, msg.author);
return msg.send(`Turned Auto Updating for your account ${msg.author.configs.autoupdate ? '**on**.' : '**off**.'}`);
}

async init() {
if (!this.client.gateways.users.schema.has('autoupdate')) {
await this.client.gateways.users.schema.add('autoupdate', { type: 'boolean' });
if (!msg.author.settings.get('RSN')) {
throw 'You must have an RSN set to Autoupdate. Use `+setrsn <username>`';
}
await msg.author.settings.update('autoupdate', !msg.author.settings.get('autoupdate'));
return msg.send(`Turned Auto Updating for your account ${msg.author.settings.get('autoupdate') ? '**on**.' : '**off**.'}`);
}

};
@@ -15,14 +15,16 @@ module.exports = class extends Command {
}

async enable(msg, [command]) {
if (!msg.guild.configs.disabledCommands.includes(command.name)) return msg.send("That command isn't disabled.");
await msg.guild.configs.update('disabledCommands', command.name, { action: 'remove' });
if (!msg.guild.settings.get('disabledCommands').includes(command.name)) {
return msg.send("That command isn't disabled.");
}
await msg.guild.settings.update('disabledCommands', command.name, { action: 'remove' });
return msg.send(`Successfully enabled the \`${command.name}\` command.`);
}

async disable(msg, [command]) {
if (msg.guild.configs.disabledCommands.includes(command.name)) return msg.send('That command is already disabled.');
await msg.guild.configs.update('disabledCommands', command.name, { action: 'add' });
if (msg.guild.settings.get('disabledCommands').includes(command.name)) return msg.send('That command is already disabled.');
await msg.guild.settings.update('disabledCommands', command.name, { action: 'add' });
return msg.send(`Successfully disabled the \`${command.name}\` command.`);
}

@@ -14,25 +14,23 @@ module.exports = class extends Command {
}

async enable(msg) {
if (msg.guild.configs.hcimdeaths === msg.channel.id) throw `HCIM Death Tweets are already enabled in this channel.`;
if (msg.guild.configs.hcimdeaths !== null) {
await msg.guild.configs.update('hcimdeaths', msg.channel, msg.guild);
if (msg.guild.settings.hcimdeaths === msg.channel.id) {
throw `HCIM Death Tweets are already enabled in this channel.`;
}
if (msg.guild.settings.hcimdeaths) {
await msg.guild.settings.update('hcimdeaths', msg.channel);
return msg.send(`HCIM Death Tweets are already enabled in another channel, but I've switched them to use this channel.`);
}
await msg.guild.configs.update('hcimdeaths', msg.channel, msg.guild);
await msg.guild.settings.update('hcimdeaths', msg.channel);
return msg.send(`Enabled HCIM Death Tweets in this channel.`);
}

async disable(msg) {
if (msg.guild.configs.hcimdeaths === null) throw "HCIM Death Tweets aren't enabled, so you can't disable them.";
await msg.guild.configs.reset('hcimdeaths');
return msg.send(`Disabled HCIM Death Tweets in this channel.`);
}

async init() {
if (!this.client.gateways.guilds.schema.has('autoupdate')) {
await this.client.gateways.guilds.schema.add('autoupdate', { type: 'textchannel' });
if (!msg.guild.settings.hcimdeaths) {
throw "HCIM Death Tweets aren't enabled, so you can't disable them.";
}
await msg.guild.settings.reset('hcimdeaths');
return msg.send(`Disabled HCIM Death Tweets in this channel.`);
}

};
@@ -14,18 +14,18 @@ module.exports = class extends Command {
}

async enable(msg) {
if (msg.guild.configs.petchannel === msg.channel.id) throw `Pet Messages are already enabled in this channel.`;
if (msg.guild.configs.petchannel !== null) {
await msg.guild.configs.update('petchannel', msg.channel, msg.guild);
if (msg.guild.settings.get('petchannel') === msg.channel.id) throw `Pet Messages are already enabled in this channel.`;
if (msg.guild.settings.get('petchannel') !== null) {
await msg.guild.settings.update('petchannel', msg.channel, msg.guild);
return msg.send(`Pet Messages are already enabled in another channel, but I've switched them to use this channel.`);
}
await msg.guild.configs.update('petchannel', msg.channel, msg.guild);
await msg.guild.settings.update('petchannel', msg.channel, msg.guild);
return msg.send(`Enabled Pet Messages in this channel.`);
}

async disable(msg) {
if (msg.guild.configs.petchannel === null) throw "Pet Messages aren't enabled, so you can't disable them.";
await msg.guild.configs.reset('petchannel');
if (msg.guild.settings.get('petchannel') === null) throw "Pet Messages aren't enabled, so you can't disable them.";
await msg.guild.settings.reset('petchannel');
return msg.send(`Disabled Pet Messages in this channel.`);
}

@@ -12,8 +12,8 @@ module.exports = class extends Command {
}

async run(msg, [prefix]) {
if (!prefix) return msg.send(`The current prefix for your guild is: \`${msg.guild.configs.prefix}\``);
await msg.guild.configs.update('prefix', prefix, msg.guild);
if (!prefix) return msg.send(`The current prefix for your guild is: \`${msg.guild.settings.get('prefix')}\``);
await msg.guild.settings.update('prefix', prefix);
return msg.send(`Changed Command Prefix for ${msg.guild.name} to ${prefix}`);
}

@@ -11,14 +11,14 @@ module.exports = class extends Command {
}

async run(msg, [newRSN]) {
const { RSN } = msg.author.configs;
const RSN = msg.author.settings.get('RSN');
if (!newRSN && RSN) {
return msg.send(`Your current RSN is: \`${msg.author.configs.RSN}\``);
return msg.send(`Your current RSN is: \`${msg.author.settings.get('RSN')}\``);
}

if (!newRSN && !RSN) {
return msg.send(`You don't have an RSN set. You can set one like this: ` +
`\`${msg.guild.prefix}setrsn <username>\``);
`\`${msg.guild.settings.get('prefix')}setrsn <username>\``);
}

newRSN = newRSN.toLowerCase();
@@ -31,18 +31,12 @@ module.exports = class extends Command {
}

if (RSN !== null) {
await msg.author.configs.update('RSN', newRSN, msg.author);
await msg.author.settings.update('RSN', newRSN);
return msg.send(`Changed your RSN from \`${RSN}\` to \`${newRSN}\``);
}

await msg.author.configs.update('RSN', newRSN, msg.author);
await msg.author.settings.update('RSN', newRSN);
return msg.send(`Your RSN has been set to: \`${newRSN}\`.`);
}

async init() {
if (!this.client.gateways.users.schema.has('RSN')) {
await this.client.gateways.users.schema.add('RSN', { type: 'string' });
}
}

};
@@ -14,25 +14,19 @@ module.exports = class extends Command {
}

async enable(msg) {
if (msg.guild.configs.streamertweets === msg.channel.id) throw `Streamer Tweets are already enabled in this channel.`;
if (msg.guild.configs.streamertweets !== null) {
await msg.guild.configs.update('streamertweets', msg.channel, msg.guild);
if (msg.guild.settings.get('streamertweets') === msg.channel.id) throw `Streamer Tweets are already enabled in this channel.`;
if (msg.guild.settings.get('streamertweets') !== null) {
await msg.guild.settings.update('streamertweets', msg.channel, msg.guild);
return msg.send(`Streamer Tweets are already enabled in another channel, but I've switched them to use this channel.`);
}
await msg.guild.configs.update('streamertweets', msg.channel, msg.guild);
await msg.guild.settings.update('streamertweets', msg.channel, msg.guild);
return msg.send(`Enabled Streamer Tweets in this channel.`);
}

async disable(msg) {
if (msg.guild.configs.streamertweets === null) throw "Streamer Tweets aren't enabled, so you can't disable them.";
await msg.guild.configs.reset('streamertweets');
if (msg.guild.settings.get('streamertweets') === null) throw "Streamer Tweets aren't enabled, so you can't disable them.";
await msg.guild.settings.reset('streamertweets');
return msg.send(`Disabled Streamer Tweets in this channel.`);
}

async init() {
if (!this.client.gateways.guilds.schema.has('streamertweets')) {
await this.client.gateways.guilds.schema.add('streamertweets', { type: 'textchannel' });
}
}

};
@@ -14,25 +14,20 @@ module.exports = class extends Command {
}

async enable(msg) {
if (msg.guild.configs.tweetchannel === msg.channel.id) throw `JMod Tweets are already enabled in this channel.`;
if (msg.guild.configs.tweetchannel !== null) {
await msg.guild.configs.update('tweetchannel', msg.channel, msg.guild);
const tweetChannel = msg.guild.settings.get('tweetchannel');
if (tweetChannel === msg.channel.id) throw `JMod Tweets are already enabled in this channel.`;
if (tweetChannel) {
await msg.guild.settings.update('tweetchannel', msg.channel);
return msg.send(`JMod Tweets are already enabled in another channel, but I've switched them to use this channel.`);
}
await msg.guild.configs.update('tweetchannel', msg.channel, msg.guild);
await msg.guild.settings.update('tweetchannel', msg.channel);
return msg.send(`Enabled JMod Tweets in this channel.`);
}

async disable(msg) {
if (msg.guild.configs.tweetchannel === null) throw 'JMod Tweets are already disabled.';
await msg.guild.configs.reset('tweetchannel');
if (!msg.guild.settings.get('tweetchannel')) throw 'JMod Tweets are already disabled.';
await msg.guild.settings.reset('tweetchannel');
return msg.send(`Disabled JMod Tweets in this channel.`);
}

async init() {
if (!this.client.gateways.guilds.schema.has('tweetchannel')) {
await this.client.gateways.guilds.schema.add('tweetchannel', { type: 'textchannel' });
}
}

};
@@ -16,52 +16,47 @@ module.exports = class extends Command {
}

async enable(msg) {
if (msg.guild.configs.twitchnotifs === msg.channel.id) throw `Twitch Notifications are already enabled in this channel.`;
if (msg.guild.configs.twitchnotifs !== null) {
await msg.guild.configs.update('twitchnotifs', msg.channel, msg.guild);
if (msg.guild.settings.get('twitchnotifs') === msg.channel.id) throw `Twitch Notifications are already enabled in this channel.`;
if (msg.guild.settings.get('twitchnotifs') !== null) {
await msg.guild.settings.update('twitchnotifs', msg.channel, msg.guild);
return msg.send(`Twitch Notifications are already enabled in another channel, but I've switched them to use this channel.`);
}
await msg.guild.configs.update('twitchnotifs', msg.channel, msg.guild);
await msg.guild.settings.update('twitchnotifs', msg.channel, msg.guild);
return msg.send(`Enabled Twitch Notifications in this channel.`);
}

async disable(msg) {
if (msg.guild.configs.twitchnotifs === null) return msg.send("Twitch Notifications aren't enabled, so you can't disable them.");
await msg.guild.configs.reset('twitchnotifs');
if (msg.guild.settings.get('twitchnotifs') === null) return msg.send("Twitch Notifications aren't enabled, so you can't disable them.");
await msg.guild.settings.reset('twitchnotifs');
return msg.send(`Disabled Twitch Notifications in this channel.`);
}

async add(msg, [name]) {
if (!name) throw 'Please include which streamer you want to add, like this: `+tn add B0aty`';
if (msg.guild.configs.twitchnotifs === null) throw "You can't add or remove streamers if you have Twitch Notifications disabled.";
if (msg.guild.settings.get('twitchnotifs') === null) throw "You can't add or remove streamers if you have Twitch Notifications disabled.";
if (!this.client.streamers.includes(name.toLowerCase())) throw "That streamer doesn't look like a Old School RuneScape Streamer to me.";
if (msg.guild.configs.streamers.includes(name.toLowerCase())) throw 'Twitch Notifications are already enabled for this streamer.';
await msg.guild.configs.update('streamers', name.toLowerCase(), { action: 'add' });
if (msg.guild.settings.get('streamers').includes(name.toLowerCase())) throw 'Twitch Notifications are already enabled for this streamer.';
await msg.guild.settings.update('streamers', name.toLowerCase(), { action: 'add' });
return msg.send(`Successfully added ${name}. You will receive a message here when they go live.`);
}

async remove(msg, [name]) {
if (!name) throw 'Please include which streamer you want to remove, like this: +tn remove B0aty';
if (msg.guild.configs.twitchnotifs === null) throw "You can't add or remove streamers if you have Twitch Notifications disabled.";
if (msg.guild.settings.get('twitchnotifs') === null) throw "You can't add or remove streamers if you have Twitch Notifications disabled.";
if (!this.client.streamers.includes(name.toLowerCase())) throw "That streamer doesn't look like a Old School RuneScape Streamer to me.";
if (!msg.guild.configs.streamers.includes(name.toLowerCase())) {
if (!msg.guild.settings.get('streamers').includes(name.toLowerCase())) {
throw "Twitch Notifications aren't enabled for this streamer, so you cannot remove them.";
}

await msg.guild.configs.update('streamers', name.toLowerCase(), { action: 'remove' });
await msg.guild.settings.update('streamers', name.toLowerCase(), { action: 'remove' });
return msg.send(`Successfully removed ${name}.`);
}

async list(msg) {
if (msg.guild.configs.twitchnotifs === null) throw 'Twitch Notifications are not enabled in this guild.';
if (msg.guild.configs.streamers.length === 0) throw 'You have Twitch Notifications enabled, but no streamers added.';
return msg.send(msg.guild.configs.streamers.join(', '));
if (msg.guild.settings.get('twitchnotifs') === null) throw 'Twitch Notifications are not enabled in this guild.';
if (msg.guild.settings.get('streamers').length === 0) throw 'You have Twitch Notifications enabled, but no streamers added.';
return msg.send(msg.guild.settings.get('streamers').join(', '));
}

async init() {
if (!this.client.gateways.guilds.schema.has('twitchnotifs')) {
await this.client.gateways.guilds.schema.add('twitchnotifs', { type: 'textchannel' });
}
}

};
@@ -20,7 +20,8 @@ module.exports = class extends Command {
const { emoji } = this.client;

const { err, stats } = await osrs.stats(username);
if (err) return msg.send(err);

if (err) return msg.send('There was an unexpected error in fetching your account.');

for (const skill in stats) {
if (stats[skill].rank !== undefined) stats[skill].rank = stats[skill].rank.toLocaleString();
@@ -18,7 +18,6 @@ module.exports = class extends Command {

const { Minigames } = await osrs.hiscores
.getPlayer(username, 'Normal')
.then(player => player)
.catch(() => { throw this.client.notFound; });

const clues = {
Oops, something went wrong.

0 comments on commit 5834623

Please sign in to comment.
You can’t perform that action at this time.