node.js - Discord 机器人无法通过 ID 获取用户集合

标签 node.js discord discord.js

我一定错过了一些东西,因为我相当确定这应该有效,因为我之前在同一个机器人的不同命令中使用过相同的方法......

我有一个连接到 mysql 数据库的机器人。在数据库中存储我正在制作的游戏的比赛信息的表中,我存储了每个玩家的 Discord ID。从表中提取这些 ID,指定我想要检索的用户对象,并尝试使用 .get()(也尝试将 .find() 与用户名一起使用),两者都会导致“未定义”...我有一种感觉,机器人找不到整个用户集合,因为当我 console.log(client.users) 时,我得到 Collection [Map] {} 所以,看起来是空的?我还输入了 ID 本身而不是变量,但仍然找不到它。所以,我有一种感觉,机器人由于某种原因无法获取用户集合。

在下面的代码中:

playerIDArray = 我在比赛开始时存储的玩家 ID,从 mysql 表中提取它们。以数组格式存储(“玩家1的ID”作为索引0,“玩家2的ID”作为索引1,“玩家3的ID”作为索引2,等等)

playerIndex =playerIDArray 中目标玩家的索引,在以下代码运行之前的较早步骤中找到,我知道它会返回我所期望的内容。

const Discord = require('discord.js');
const client = new Discord.Client();
const mysql = require("mysql2/promise");
...
...
var targetUserID = playerIDArray[playerIndex]
var targetUser = client.users.get(targetUserID)
console.log(targetUser)
每次我运行这个,我都会得到“未定义”,我一生都无法弄清楚为什么......我只是想检索用户组,这样我就可以向该用户发送一条消息,让他们有机会在我修改mysql表并移动卡片之前进行反击,然后需要立即再次更改以恢复刚刚通过计数器卡删除的内容。

我一定是愚蠢的,错过了一些东西,但我不知道现在该尝试什么...提前感谢您的帮助。

最佳答案

您只能在 ready 事件触发后使用 client.users (和其他 discord.js 集合)。

所以你需要将使用client.users的代码放入 client.on('ready', () => {/* 代码 */});

ready 将在成功 client.login('token'); 后被触发。

关于node.js - Discord 机器人无法通过 ID 获取用户集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57337704/

相关文章:

javascript - 使用 vanilla javascript 将 HTML 表导出为 CSV

discord - 发送自发的临时不和谐消息

Java Discord Bot - 获取角色成员?

javascript - 不和谐 : Using a command to get Data from Array

javascript - Promisify Node tls.connect方法

node.js - 如何在没有环境变量的情况下启用 NODE_DEBUG?

javascript - EcmaScript 6 中的 Yield 优先级

javascript - Discord.js embedMsg 未定义?

javascript - 使用 Discord.js 时出现 "Error: Cannot find module"

javascript - Discord.js 计数器和存储