gpt4 book ai didi

javascript - 如何使用 Discord.JS DM 某些用户?

转载 作者:行者123 更新时间:2023-12-03 22:19:29 25 4
gpt4 key购买 nike

我遇到了有关 DM 特定用户的问题。

我的机器人中的这个命令基本上将今天的日期与分配的日期进行比较,如果他的截止日期临近或已经过期,它应该通知用户这个分配。因此,我使用带有用户 ID 的 useralert 字段,然后将其转换为数字 ID ( useralertID )。当 if 语句为真时,应将 if 语句消息发送给具有此 ID 的用户。

按照“Discord.js 指南”的说明,我定义了一个用户 let user = bot.users.cache.get('useralertID'); 并向该用户 user.send('Works!'); 发送了一条消息。

不幸的是,它没有向用户发送消息,而是输出一个未定义的值或 UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'send' of undefined

我无法弄清楚这个问题,所以任何建议都会非常有帮助!

这是代码。提前致谢!

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 = bot.users.cache.get('useralertID');
user.send('Works!');
return message.channel.send(`Sent msg to ${user.username}!`);
}
}
}

最佳答案

client.users 是客户端唯一的 缓存 用户。因此,如果您重新启动机器人,此集合将为空。
您需要向您的机器人发送消息或将消息发送到机器人可以处理此消息以缓存在此集合中的 channel 。你的方式,如果你在公会上运行这个命令,或者如果这个用户是你公会的成员,你可以使用 guild.members.cache.get('ID HERE') 或尝试通过 id 获取公会,然后在这个公会中通过他的 ID 获取用户。

一些例子:


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`);
}

}
}
}

关于javascript - 如何使用 Discord.JS DM 某些用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62255884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com