discord. js - преобразовать GuildChannel в TextChannel - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь получить определенный канал по идентификатору или упоминанию. Всякий раз, когда я извлекаю канал из списка каналов гильдии, он имеет форму GuildChannel, который не может напрямую отправлять сообщения с использованием .send (message). Я вкратце просмотрел документацию, чтобы узнать, как преобразовать Guild Channel в один из TextChannel | DMChannel | NewsChannel, но безрезультатно.

Любая помощь приветствуется, спасибо.

1 Ответ

4 голосов
/ 14 июля 2020

Если вы пытаетесь сделать это на основе отправленного сообщения, вы должны иметь возможность использовать.

message.guild.channels.cache.get("CHANNEL_ID").send("message");

При доступе к каналу из кеша хорошо знать, что тип канала, который вы получаете, является GuildChannel, поскольку библиотека не знает, какой канал вы получаете. TextChannel, VoiceChannel и NewsChannel все наследуются от GuildChannel, поэтому intellisense и Typescript не распознают методы и свойства, указанные в c типе канала, и такие свойства, как send(). Если вы действительно получаете TextChannel, тогда метод send будет доступен.

Если вы используете Typescript и получаете сообщение об ошибке Property 'send' does not exist on type 'GuildChannel'.ts(2339). Вы можете исправить это, сначала проверив тип канала и убедившись, что это текстовый канал.

Источник: https://github.com/discordjs/discord.js/issues/3622#issuecomment -565550605

...