每当新用户加入服务器(公会)时,我想向“欢迎”文本频道发送问候语。
我面临的问题是,当我找到想要的频道时,我会收到GuildChannel类型的频道。
因为GuildChannel没有send()功能,所以我无法发送消息。但我找不到找到TextChannel的方法,所以我被困在这里了。
如何到达TextChannel以便能够使用send()消息?下面是我现在使用的代码:

// Get the log channel (change to your liking)
const logChannel = guild.channels.find(123456);
if (!logChannel) return;

// A real basic message with the information we need.
logChannel.send('Hello there!'); // Property 'send' does not exist on type 'GuildChannel'

我使用的是Discord.js的11.3.0版本

最佳答案

多亏了这个,我找到了解决问题的办法。
我需要使用GitHub issue来缩小正确的类型。
我现在的代码是:

// Get the log channel
const logChannel = member.guild.channels.find(channel => channel.id == 123456);

if (!logChannel) return;

// Using a type guard to narrow down the correct type
if (!((logChannel): logChannel is TextChannel => logChannel.type === 'text')(logChannel)) return;

logChannel.send(`Hello there! ${member} joined the server.`);

09-19 08:46