aboutsummaryrefslogtreecommitdiff
path: root/src/commands/utilities
diff options
context:
space:
mode:
authorIRONM00N <64110067+IRONM00N@users.noreply.github.com>2021-08-16 16:09:38 -0400
committerIRONM00N <64110067+IRONM00N@users.noreply.github.com>2021-08-16 16:09:38 -0400
commitd431ad00754f3f250103deedea495b9bcee73fc0 (patch)
treefcc6af12a544338b913c2eb2c07f1c620af74e5a /src/commands/utilities
parent59604d7455e144333eec4160857a29fafc5f39ee (diff)
downloadtanzanite-d431ad00754f3f250103deedea495b9bcee73fc0.tar.gz
tanzanite-d431ad00754f3f250103deedea495b9bcee73fc0.tar.bz2
tanzanite-d431ad00754f3f250103deedea495b9bcee73fc0.zip
super secret
Diffstat (limited to 'src/commands/utilities')
-rw-r--r--src/commands/utilities/activity.ts113
-rw-r--r--src/commands/utilities/youtube.ts59
2 files changed, 113 insertions, 59 deletions
diff --git a/src/commands/utilities/activity.ts b/src/commands/utilities/activity.ts
new file mode 100644
index 0000000..0962fff
--- /dev/null
+++ b/src/commands/utilities/activity.ts
@@ -0,0 +1,113 @@
+import { VoiceChannel } from 'discord.js';
+import { BushCommand, BushMessage, BushSlashMessage } from '../../lib';
+
+const activityMap = {
+ 'Poker Night': '755827207812677713',
+ 'Betrayal.io': '773336526917861400',
+ 'Fishington.io': '814288819477020702',
+ 'YouTube Together': '755600276941176913',
+ 'Chess in the Park': '832012774040141894'
+};
+
+function map(phase) {
+ if (['yt', 'youtube'].includes(phase)) return activityMap['YouTube Together'];
+ else if (['chess', 'park'].includes(phase)) return activityMap['Chess in the Park'];
+ else if (['poker'].includes(phase)) return activityMap['Poker Night'];
+ else if (['fish', 'fishing', 'fishington'].includes(phase)) return activityMap['Fishington.io'];
+ else if (['betrayal'].includes(phase)) return activityMap['Betrayal.io'];
+ else return undefined;
+}
+
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
+const activityTypeCaster = (_message: BushMessage, phrase: string) => {
+ if (!phrase) return null;
+ const mappedPhrase = map(phrase);
+ if (mappedPhrase) return mappedPhrase;
+ return null;
+};
+
+export default class YouTubeCommand extends BushCommand {
+ constructor() {
+ super('activity', {
+ aliases: ['activity', 'yt', 'youtube', 'chess', 'park', 'poker', 'fish', 'fishing', 'fishington', 'betrayal'],
+ category: 'utilities',
+ description: {
+ content: 'Allows you to play discord activities in voice channels.',
+ usage: [
+ 'activity <channel> <`yt`|`youtube`|`chess`|`park`|`poker`|`fish`|`fishing`|`fishington`|`betrayal`>',
+ 'yt <channel>' // you do not need to specify the activity if you use its alias.
+ ],
+ examples: ['yt 785281831788216364', 'activity 785281831788216364 yt']
+ },
+ args: [
+ {
+ id: 'channel',
+ type: 'voiceChannel',
+ prompt: {
+ start: 'What channel would you like to use?',
+ retry: '{error} Choose a valid voice channel'
+ }
+ },
+ {
+ id: 'activity',
+ match: 'rest',
+ customType: activityTypeCaster
+ }
+ ],
+ slash: true,
+ slashOptions: [
+ {
+ name: 'channel',
+ description: 'What channel would you like to use?',
+ type: 'CHANNEL',
+ required: true
+ },
+ {
+ name: 'activity',
+ description: 'What activity would you like to play?',
+ type: 'STRING',
+ required: true,
+ choices: [
+ { name: 'Poker Night', value: '755827207812677713' },
+ { name: 'Betrayal.io', value: '773336526917861400' },
+ { name: 'Fishington.io', value: '814288819477020702' },
+ { name: 'YouTube Together', value: '755600276941176913' },
+ { name: 'Chess in the Park', value: '832012774040141894' }
+ ]
+ }
+ ],
+ clientPermissions: ['SEND_MESSAGES'],
+ userPermissions: ['SEND_MESSAGES']
+ });
+ }
+
+ public override async exec(
+ message: BushMessage | BushSlashMessage,
+ args: { channel: VoiceChannel; activity: string }
+ ): Promise<unknown> {
+ if (!args.channel?.id || args.channel?.type != 'GUILD_VOICE')
+ return await message.util.reply(`${util.emojis.error} Choose a valid voice channel`);
+
+ let target_application_id: string;
+ if (message.util.isSlash) target_application_id = args.activity;
+ else target_application_id = target_application_id = args.activity;
+
+ // @ts-ignore: jank typings
+ // prettier-ignore
+ const invite = await this.client.api.channels(args.channel.id)
+ .invites.post({
+ data: {
+ validate: null,
+ max_age: 604800,
+ max_uses: 0,
+ target_type: 2,
+ target_application_id,
+ temporary: false
+ }
+ })
+ .catch(() => false);
+ if (!invite || !invite.code)
+ return await message.util.reply(`${this.client.util.emojis.error} An error occurred while generating your invite.`);
+ else return await message.util.send(`https://discord.gg/${invite.code}`);
+ }
+}
diff --git a/src/commands/utilities/youtube.ts b/src/commands/utilities/youtube.ts
deleted file mode 100644
index 0198173..0000000
--- a/src/commands/utilities/youtube.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-import { VoiceChannel } from 'discord.js';
-import { BushCommand, BushMessage, BushSlashMessage } from '../../lib';
-
-export default class YouTubeCommand extends BushCommand {
- constructor() {
- super('youtube', {
- aliases: ['youtube', 'yt'],
- category: 'utilities',
- description: {
- content: "Allows the user to have access to discord's in-app YouTube experiment.",
- usage: 'yt <channel>',
- examples: ['yt 785281831788216364']
- },
- args: [
- {
- id: 'channel',
- type: 'voiceChannel',
- prompt: {
- start: 'What channel would you like to use?',
- retry: '{error} Choose a valid voice channel'
- }
- }
- ],
- slash: true,
- slashOptions: [
- {
- name: 'channel',
- description: 'What channel would you like to use?',
- type: 'CHANNEL',
- required: true
- }
- ],
- clientPermissions: ['SEND_MESSAGES'],
- userPermissions: ['SEND_MESSAGES']
- });
- }
-
- public override async exec(message: BushMessage | BushSlashMessage, args: { channel: VoiceChannel }): Promise<unknown> {
- if (!args.channel?.id || args.channel?.type != 'GUILD_VOICE')
- return await message.util.reply(`${util.emojis.error} Choose a valid voice channel`);
-
- // @ts-ignore: jank typings
- // prettier-ignore
- const invite = await this.client.api.channels(args.channel.id).invites.post({
- data: {
- validate: null,
- max_age: 604800,
- max_uses: 0,
- target_type: 2,
- target_application_id: '755600276941176913',
- temporary: false
- }
- })
- .catch(() => {});
- if (!invite || !invite.code)
- return await message.util.reply(`${this.client.util.emojis.error} An error occurred while generating your invite.`);
- else return await message.util.send(`https://discord.gg/${invite.code}`);
- }
-}