Discord.js Bot 赠品命令:.array() 不是函数

Posted

技术标签:

【中文标题】Discord.js Bot 赠品命令:.array() 不是函数【英文标题】:Discord.js Bot giveaway command : .array() is not a function 【发布时间】:2020-11-06 03:00:02 【问题描述】:

我正在尝试制作一个发送嵌入的 Discord.js 赠品命令,将其保存到变量 embedSent,在 TimeOut 之后使用反应.get() 方法收集反应,使用 array() 将它们转换为数组然后用 .filter() 过滤它们。问题出在 Array() 步骤,我不断收到错误TypeError: peopleReactedBot.array is not a function。 这是我的代码的一部分:

embedSent.react("????");
setTimeout(function () 
    try 
        const peopleReactedBot = embedSent.reactions.cache.get("????").users.fetch();
        const peopleReacted = peopleReactedBot.array().filter(u => u.id !== client.author.id);
        message.channel.send(peopleReacted)
     catch(e) 
        return message.channel.send("An error has occured : `"+e+"`");
    
, time);

我使用 Discord.js v12。

【问题讨论】:

【参考方案1】:

user.fetch() 返回一个 Promise,因此您可能希望切换到异步函数并等待 Promise 完成,如下所示:

setTimeout(async () => 
    try 
        const peopleReactedBot = await embedSent.reactions.cache.get("?").users.fetch();
        const peopleReacted = peopleReactedBot.array().filter(u => u.id !== client.author.id);
        message.channel.send(peopleReacted)
     catch(e) 
        return message.channel.send("An error has occurred : `"+e+"`");
    
, time);

【讨论】:

以上是关于Discord.js Bot 赠品命令:.array() 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

Discord js赠品命令

Discord.js - 随机获取一个有反应的用户

Discord bot 更改前缀命令出错 (discord.js)

Discord.js mod bot ban 命令不起作用

Discord Bot 关于命令

Discord.js 从带有前缀的句子中过滤命令(比如 Hey Bot 给我一块蛋糕)