我肯定遗漏了什么,因为我相当肯定这应该能工作,因为我以前在同一个机器人的不同命令中使用过这个相同的方法。。。
我有一个连接到mysql数据库的机器人。在数据库中的一个表中,存储了我正在制作的游戏的一场比赛的信息,我存储了每个玩家的不和ID。从表中提取这些ID,指定我希望为哪个ID检索user对象,并尝试使用.get()
(也尝试使用带有用户名的.find()
),结果都是“未定义”。。。我有一种感觉,bot没有找到整个用户集合,因为当我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',()=>{/*code*/});
client.login('token')成功后,将激发
。ready
;