开发者问题收集

如何向指定频道发送消息 - Discord.js v13 TypeScript

2021-08-31
2632

我最近开始使用 TypeScript,你们肯定都知道 Discord.js 最近已升级到 v13。在此之后,我一直在努力寻找一种使用给定 Channel ID 向指定频道发送消息的方法。这是我当前使用的代码:

// Define Channel ID
const messageChannelId = 'CHANNEL_ID';

// Define Channel
const messageChannel = client.channels.cache.get(messageChannelId);

// Send Message to Channel
if (messageChannel && messageChannel.type === 'GUILD_TEXT') messageChannel.send('Hello World');

奇怪的是,以下代码运行正常,它会将消息“Hello World”发送到频道,但当我将鼠标悬停在发送方法上时,我总是会遇到智能感知错误,提示 Visual Studio Code 中的 Property 'send' does not exist on type 'Channel' 。如果有人知道为什么会发生这种情况,或者有解决此错误的办法,请告诉我。Discord.js 的文档未显示 Channel 类型上的发送方法,但仍允许它工作,我不知道如何解决这个问题。

感谢您的帮助。

1个回答

send 方法不属于 Channel 类型。它属于 TextChannel 类型。 client.channels.cache.get 返回 Channel ,因为它也可能是语音通道!您必须添加 as TextChannel 才能消除该错误

const { TextChannel } = require('discord.js')
// Define Channel
const messageChannel = client.channels.cache.get(messageChannelId) as TextChannel;
MrMythical
2021-08-31