Как отправить сообщение на указанный канал — Discord.js машинописный текст v13

#javascript #typescript #discord #discord.js

Вопрос:

Я недавно начал использовать машинопись, и, как вы все, несомненно, знаете Discord.js недавно перешел на v13. После этого я изо всех сил пытался найти способ отправлять сообщения на указанный канал, используя заданный идентификатор канала. Вот текущий код, который я использую:

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

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

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

Как ни странно, следующий код работает нормально, и он отправляет сообщение «Привет, мир» на канал, но у меня всегда возникает ошибка intellisense, когда я наведу курсор на метод отправки, который указан Property 'send' does not exist on type 'Channel' в коде Visual Studio. Если кто-нибудь знает, почему это происходит, или у кого есть решение этой ошибки, пожалуйста, дайте мне знать. Документация для Discord.js не показывает метод отправки по типу канала, но все равно позволяет ему работать, и я не знаю, как это обойти.

Спасибо за любую помощь.

Ответ №1:

send Метод не зависит от типа Channel . Это зависит от типа TextChannel . client.channels.cache.get возвращает a Channel , так как это тоже может быть голосовой канал! Вам придется добавить as TextChannel , чтобы удалить эту ошибку

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

Комментарии:

1. Большое спасибо! Мне было интересно, почему я не смог найти это в документации, но это имеет смысл