3 回答
TA贡献1829条经验 获得超7个赞
客户端.users 其唯一的缓存用户由客户端。因此,如果重新启动机器人,则此集合将为空。需要向机器人发送消息或将消息发送到机器人可以处理此消息以缓存在此集合中的通道。按照你的方式,如果你在公会上运行这个命令,或者如果这个用户是你的公会的成员,你可以使用或尝试通过ID获得公会,然后在这个公会中通过他的ID获取用户。guild.members.cache.get('ID HERE')
一些例子:
var i;
var d = new Date;
var month = d.getMonth() + 1;
var day = d.getDate();
const s = await Tags.count();
if (message.member.hasPermission('KICK_MEMBERS')) {
}
for (i = 1; i <= s; i++) {
const tag = await Tags.findOne({
where: {
key: i
}
});
if (tag) {
var date = tag.get('description');
let useralert = (tag.get("usernameid")).toString();
let useralertID = useralert.replace(/[<@>]/g, '');
let deadday = parseInt(date.slice(0, 2));
let deadmonth = parseInt(date.slice(3, 5));
let dayn = deadday - day;
let monthn = deadmonth - month;
console.log(dayn.toString() + ' ' + monthn.toString() + ' ' + useralertID);
if (((dayn <= 2) && (monthn == 0)) || (monthn < 0)) {
let user = message.guild.members.cache.get(useralertID);
if (user) {
user.send('Works!').then(() => {
return message.channel.send(`Sent msg to ${user.username}!`);
}).catch(() => {
return message.channel.send(`${user.username} not allow to send DM message!`);
})
} else {
return message.channel.send(`the ${useralertID} not guild Member, can\`t send DM to him`);
}
}
}
}
TA贡献1836条经验 获得超4个赞
发生错误的原因是 不存在或为 null。也许试试.
我真的不能再帮你了,因为你没有告诉我们你想做什么。user
bot.users.cache.get("YOURIDHERE").send("hi")
TA贡献2019条经验 获得超9个赞
好吧,问题是用户是未定义的,就像内部和错误说的那样,
let user = bot.users.cache.get('useralertID')
您在此处使用的是字符串而不是变量useralertID
无论如何,你应该检查用户是否存在,因为你是从间接的东西中提取id,不确定是什么。Tags
添加回答
举报