discord.js的bot.on('ready')回调内获取频道ID及cache报错如何解决
问题解决方案
错误原因
报错核心是属性名拼写错误:discord.js 中客户端实例的频道集合属性为复数形式 bot.channels,你代码中使用的单数 bot.channel 是不存在的属性,取值为 undefined,因此访问其cache属性时触发报错。
修正后的代码
bot.on('ready', () => { console.log(`${bot.user.tag} successfully logged in!`) bot.user.setActivity('%help', {type: "LISTENING"}) function sendTimedMessage() { // 直接用get方法按ID查询频道,比find遍历效率更高 const channel = bot.channels.cache.get('替换为你实际的频道ID'); if (!channel) return; channel.send('替换为你要发送的消息内容'); } // 时间单位为毫秒,1000即1秒,频繁发送容易触发Discord风控,建议调大间隔 setInterval(sendTimedMessage, 5000); })
额外注意事项
- 注意替换代码中的
替换为你实际的频道ID、替换为你要发送的消息内容为实际值 - 若频道仍获取失败,请确认bot已经加入对应频道所在的服务器,且拥有该频道的「查看频道」「发送消息」权限
- 不要设置过短的发送间隔,短时间高频发送消息会触发Discord的速率限制,严重时会导致账号被限制使用
内容的提问来源于stack exchange,提问作者Hendin
相关产品推荐
相关产品推荐

