#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. Большое спасибо! Мне было интересно, почему я не смог найти это в документации, но это имеет смысл