diff --git a/packages/backend/src/apps/discord/dynamic-data/index.ts b/packages/backend/src/apps/discord/dynamic-data/index.ts index fae496fc..e018fb62 100644 --- a/packages/backend/src/apps/discord/dynamic-data/index.ts +++ b/packages/backend/src/apps/discord/dynamic-data/index.ts @@ -1,3 +1,4 @@ import listChannels from './list-channels'; +import listVoiceChannels from './list-voice-channels'; -export default [listChannels]; +export default [listChannels, listVoiceChannels]; diff --git a/packages/backend/src/apps/discord/dynamic-data/list-voice-channels/index.ts b/packages/backend/src/apps/discord/dynamic-data/list-voice-channels/index.ts new file mode 100644 index 00000000..74bad388 --- /dev/null +++ b/packages/backend/src/apps/discord/dynamic-data/list-voice-channels/index.ts @@ -0,0 +1,34 @@ +import { IGlobalVariable, IJSONObject } from '@automatisch/types'; + +export default { + name: 'List voice channels', + key: 'listVoiceChannels', + + async run($: IGlobalVariable) { + const channels: { + data: IJSONObject[]; + error: IJSONObject | null; + } = { + data: [], + error: null, + }; + + const response = await $.http.get( + `/guilds/${$.auth.data.guildId}/channels` + ); + + channels.data = response.data + .filter((channel: IJSONObject) => { + // filter in voice and stage channels only + return channel.type === 2 || channel.type === 13; + }) + .map((channel: IJSONObject) => { + return { + value: channel.id, + name: channel.name, + }; + }); + + return channels; + }, +};