【问题标题】:Discord: Get channel by ID returns undefined / nullDiscord:通过 ID 获取频道返回 undefined / null
【发布时间】:2021-09-09 09:03:44
【问题描述】:

我正在设置一个 cron 作业来运行一个机器人命令,该命令在每天的某个时间解锁/锁定一个频道。尝试获取通道返回 undefined 或 null,这取决于我的处理方式。 机器人已添加到 discord 服务器并在线

require('dotenv').config();
const Discord = require("discord.js");
const client = new Discord.Client();

client.login(process.env.TOKEN);

const chan = client.channels.cache.get("858211703946084352");
console.log(chan);
const channel = client.channels.fetch("858211703946084352").then(res => {
    console.log(res);
});
console.log(channel);

当我在控制台中运行它时,我得到了

undefined
Promise { <pending> }
null

我查看了许多示例和解决方案,但似乎没有一个可以解决我的问题


编辑:

bot 拥有管理员权限。

我使用了“右键单击频道并复制 ID”技术,该技术与我使用开发工具检查包含频道名称的元素时得到的 ID 相匹配

服务器中有一个 MEE6 机器人,所以我知道机器人可以发送消息

编辑2:

为了好玩和利益,我删除了应用程序并重新制作了它,同样的问题

我尝试使用 MEE6 机器人发送到的频道,同样的问题

【问题讨论】:

  • 该频道所在的服务器中的机器人是否存在?如果是,机器人是否有权查看频道?
  • 是的,它有管理员权限

标签: discord discord.js channel


【解决方案1】:

尝试在就绪事件中运行此代码

client.on('ready', () => {
    const chan = client.channels.cache.get("858211703946084352");
    console.log(chan);
});

【讨论】:

  • 问题是没有准备好的事件,一旦我添加了它,我就能够获得频道。此外,如果您使用fetch,您将无法访问数据字段,即“chan.name”。您必须使用 cache.get 才能访问数据字段
猜你喜欢
  • 1970-01-01
  • 2021-02-06
  • 2021-03-06
  • 2020-11-26
  • 2022-09-25
  • 2020-08-10
  • 2015-08-12
  • 1970-01-01
  • 2020-09-10
相关资源
最近更新 更多