Hi So I've been building a Discord Bot in TypeScript for myself and a group of friends to use. I'm trying to send a message on client ready that's completely independent of any interactions with the bot that the users have (messages, errors, logging in, etc) so I want the message to send as soon as the client is ready.
I've seen some solutions already on sending messages on client ready and scheduling (discord.js send scheduled message) so that is not a problem but the main problem I have with these solutions is that the discord.js type GuildChannels (https://discord.js.org/#/docs/main/stable/class/GuildChannel) does not actually include the send method unless it's of type TextChannel (https://discord.js.org/#/docs/main/stable/class/TextChannel). However, the type that's given by client.channels.get(channelId) returns a GuildChannel (that's possibly of type text).
So an example of my code looks like this.
import { Client } from 'discord.js';
import { BOT_SECRET_TOKEN, FOX_GUILD_ID, FOXBOT_CHANNEL } from './secret.json';
const client = new Client();
client.on('ready', () => {
console.log(`Connected as ${client.user.tag}`);
const foxGuild = client.guilds.get(FOX_GUILD_ID);
if (!foxGuild) {
console.log('Guild not found');
return;
}
const foxbotChannel = foxGuild.channels.get(FOXBOT_CHANNEL);
if (!foxbotChannel) {
console.log('Channel not found');
return;
}
foxbotChannel.message('I am ready for service!');
});
The line
foxbotChannel.message('I am ready for service!');
Will give me this error
src/index.ts(26,17): error TS2339: Property 'message' does not exist on type 'GuildChannel'.
I have also tried importing TextChannel and initiating foxbotChannel like so
foxbotChannel: TextChannel = foxGuild.channels.get(FOXBOT_CHANNEL);
But also get an error saying that the type GuildChannel is missing a bunch of properties.
So my question is, how do I convert GuildChannel to a TextChannel so that I'm able to send messages through that or, how do I find the TextChannel through client?