在特定频道中发送消息 - 不起作用

时间:2021-07-23 01:33:09

标签: javascript node.js discord.js

我使用的是 discord.js 12,并且尝试了以下操作:

client.channels.cache.find(x => x.id == "id").send('message')

client.channels.cache.find(x => x.name == "channel-name").send('message')

...and...

client.channels.cache.get('id').send('message')

并且所有这些都返回一个错误,指出“无法读取未定义的属性“发送”。

现在,我知道这通常意味着频道的 ID 是错误的。但是,我已经复制了它并重吃了五次。这是正确的 ID,我向你保证。

我已经使用这个系统几个月了,现在它不能工作了。

注意:我在文件中定义了以下内容:

const Discord = require('discord.js')
const client = new Discord.Client()

请帮帮我!

2 个答案:

答案 0 :(得分:1)

您要么没有缓存该频道,要么它不存在。如果它不存在,我无法帮助你。它返回 undefined 因为它没有在缓存中看到它。您可以使用简单的 fetch() 方法轻松缓存频道。

await client.channels.fetch();
client.channels.cache.get(…).send(…)

您也可以使用 API 直接获取频道

(await client.channels.fetch('id')).send(…)

如果您收到一条错误,指出 await 仅在异步函数中有效,请将侦听器更改为如下所示:

client.on(event, async (variable) => {
//code here
//notice it says 'async' before 'variable'
})
//'event' can be any event, variable is the object provided (message events provide message objects)

答案 1 :(得分:0)

试试

const channel = await client.channels.fetch(<id>);

await channel.send('hi')

这应该有效。

你也可以试试这个

client.channels.fetch(channelID).then(channel => {
  channel.send("hi");
});