我使用的是 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()
请帮帮我!
答案 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");
});