【问题标题】:discord.js find returning undefineddiscord.js 发现返回未定义
【发布时间】:2021-01-02 12:26:37
【问题描述】:

我正在尝试向我的机器人添加一个小功能,以便在机器人在线时通知人们。

我做了以下事情:

//BOT connexion actions
client.on("ready", function () {
    console.log("BOT connected");
    client.channels.cache.find(channel => channel.name === 'ID').send("text");
});

我什至尝试使用我拥有的 const,因为所有机器人消息都在特定频道中返回,但它仍然不起作用

const channel01 = client.channels.cache.find(channel => channel.id === "ID");
...
client.channel01.send("text");

当然,ID就是具体的频道ID。

简而言之,我得到的错误是:(node:22000) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'send' of undefined

我不确定这里出了什么问题,因为 .send 在命令输入时得到了正确处理。

感谢您的帮助!

【问题讨论】:

    标签: discord.js sendmessage


    【解决方案1】:

    这里有一个小解决你的问题:

    在您的第一个函数中,您尝试按名称查找频道,尽管您似乎尝试查找 id。 如果您尝试通过频道名称获取频道:

    const channelObject = client.channels.cache.find(ch => ch.name === 'channel name');
    

    否则,如果您想通过 ID 找到它,您可以使用:

    const channelObject = client.channels.fetch('Channel ID');
    

    从那里,我们可以简单地输入:

    channelObject.send('text')
    

    当机器人上线时,我们会收到一点通知!

    【讨论】:

    • 谢谢!现在它告诉我:“(节点:22916)UnhandledPromiseRejectionWarning:TypeError:channelObject.send不是函数”如何让我发疯。它似乎也弄乱了我的令牌,因为当我有这两行时,我有一个额外的错误说明“(节点:9376)UnhandledPromiseRejectionWarning:DiscordjsError:请求使用令牌,但客户端无法使用令牌。”一旦我将它们评论出来,它就消失了......
    【解决方案2】:

    如果您已经有频道 ID,可以试试这个。

    client.channels.fetch('ID').then(chan => {
        chan.send('The bot is now online!');
    });
    

    至于为什么您的代码无法正常工作,您需要使用 ID 来检查名称“general”等,这相当于。 Does "12383929184" equal "general"?

    【讨论】:

      猜你喜欢
      • 2021-05-26
      • 2021-02-27
      • 2021-04-02
      • 2020-04-22
      • 2017-07-08
      • 2021-05-14
      • 2020-08-07
      • 2021-06-20
      • 2021-06-28
      相关资源
      最近更新 更多