From 6110dd876e59d3b1cf9d4019e02fe472a8949d78 Mon Sep 17 00:00:00 2001 From: Yuzu Date: Wed, 29 Jun 2022 18:59:06 +0700 Subject: [PATCH] Support voice text channel --- src/discord/MusicPlayer/Join.ts | 6 ++++-- src/providers/Discord.ts | 2 +- src/providers/DiscordMusicPlayer.ts | 7 ++++--- src/utils/DiscordMessage.ts | 11 ++++++++--- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/discord/MusicPlayer/Join.ts b/src/discord/MusicPlayer/Join.ts index 75fd345..e5ff954 100644 --- a/src/discord/MusicPlayer/Join.ts +++ b/src/discord/MusicPlayer/Join.ts @@ -12,7 +12,9 @@ import { TextChannel, VoiceBasedChannel, PermissionsBitField, - ButtonStyle + ButtonStyle, + BaseGuildTextChannel, + BaseGuildVoiceChannel } from 'discord.js'; import { I18n } from 'i18n'; @@ -130,7 +132,7 @@ export async function joinVoiceChannelProcedure( if (!member || !channel || !guild) return; if (channel instanceof DMChannel) return; - if (!(channel instanceof TextChannel)) return; + if (!(channel instanceof BaseGuildTextChannel || channel instanceof BaseGuildVoiceChannel)) return; const memberVoiceChannel = member.voice.channel; //isMessage ? member.voice.channel : DiscordProvider.client.guilds.cache.get(guild.id)!.members.cache.get((data as Interaction).user.id)?.voice.channel; if (!memberVoiceChannel) return; diff --git a/src/providers/Discord.ts b/src/providers/Discord.ts index e2db41f..68a9a29 100644 --- a/src/providers/Discord.ts +++ b/src/providers/Discord.ts @@ -261,7 +261,7 @@ class Discord { // Handling mentions this.client.on('messageCreate', async (message: Message) => { // TODO: Handle DMs commands soon - if (!(message.channel instanceof TextChannel)) return; + if (!(message.channel instanceof BaseGuildTextChannel || message.channel instanceof BaseGuildVoiceChannel)) return; if (message.author.bot) return; if (typeof message.guild?.id === 'undefined') return; diff --git a/src/providers/DiscordMusicPlayer.ts b/src/providers/DiscordMusicPlayer.ts index 112ed0c..f834aa6 100644 --- a/src/providers/DiscordMusicPlayer.ts +++ b/src/providers/DiscordMusicPlayer.ts @@ -5,7 +5,8 @@ import { StageChannel, Guild, PermissionsBitField, - BaseGuildVoiceChannel + BaseGuildVoiceChannel, + BaseGuildTextChannel } from 'discord.js'; import { AudioPlayer, @@ -83,7 +84,7 @@ export enum DiscordMusicPlayerLoopMode { export class DiscordMusicPlayerInstance { public queue: Queue; public player: AudioPlayer; - public textChannel?: TextChannel; + public textChannel?: BaseGuildTextChannel | BaseGuildVoiceChannel; public voiceChannel: VoiceChannel | StageChannel; public voiceConnection?: VoiceConnection; public previousTrack?: ValidTracks; @@ -151,7 +152,7 @@ export class DiscordMusicPlayerInstance { return true; } - public joinVoiceChannel(voiceChannel: VoiceChannel | StageChannel, textChannel?: TextChannel) { + public joinVoiceChannel(voiceChannel: VoiceChannel | StageChannel, textChannel?: BaseGuildTextChannel | BaseGuildVoiceChannel) { const permissions = voiceChannel.permissionsFor(DiscordProvider.client.user!); if (!permissions || !voiceChannel.joinable || !permissions.has(PermissionsBitField.Flags.Connect)) diff --git a/src/utils/DiscordMessage.ts b/src/utils/DiscordMessage.ts index 9977d6d..c469628 100644 --- a/src/utils/DiscordMessage.ts +++ b/src/utils/DiscordMessage.ts @@ -12,7 +12,9 @@ import { ColorResolvable, Interaction, InteractionReplyOptions, - BaseInteraction + BaseInteraction, + BaseGuildVoiceChannel, + VoiceChannel } from 'discord.js'; import App from '..'; @@ -130,14 +132,17 @@ export function makeProcessingEmbed(data: EmbedDataPresets) { } export async function sendMessage( - channel: TextChannel | DMChannel | BaseGuildTextChannel | GuildTextBasedChannel | PartialDMChannel, + channel: TextChannel | DMChannel | BaseGuildTextChannel | GuildTextBasedChannel | PartialDMChannel | BaseGuildTextChannel | BaseGuildVoiceChannel, user: User | undefined, options: string | MessagePayload | MessageOptions ) { let message; try { - message = await channel.send(options); + if(channel instanceof BaseGuildVoiceChannel) + message = await (channel as VoiceChannel).send(options); + else + message = await channel.send(options); } catch (error) { if (typeof user === 'undefined') { return Logger.error(