我肯定会丢失一些东西,因为我相当确定这应该可行,因为我之前在同一机器人的不同命令中使用了相同的方法...
我有一个连接到mysql数据库的机器人。在数据库的一个表中,该表存储了我正在制作的比赛的信息,我存储了每个玩家的Discord ID。从表格中提取这些ID后,指定要检索的用户对象的ID,并尝试使用.get()
(也尝试将.find()
与用户名一起使用),两者均导致“ undefined”。。。我感觉机器人没有找到整个用户集合,因为当我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表并移动卡之前进行计数,然后需要立即再次进行更改以恢复刚刚通过计数卡删除的内容。
我一定只是很笨,正在丢失一些东西,但是我迷失了现在该怎么做...谢谢您的事先帮助。
答案 0 :(得分:0)
在触发client.users
事件之后,您只能使用ready
(和其他discord.js集合)。
因此,您需要将使用client.users
的代码放入
client.on('ready', () => { /* CODE */});
ready
将在client.login('token');
成功后被触发。