为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用不和谐.JS的DM一些用户?

如何使用不和谐.JS的DM一些用户?

至尊宝的传说 2022-09-23 10:01:31

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


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


按照“不和谐.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}!`);

      }

    }

  }


查看完整描述

3 回答

?
千巷猫影

TA贡献1465条经验 获得超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`);

                }


            }

        }

    }


查看完整回答
反对 回复 6天前
?
HUH函数

TA贡献1492条经验 获得超1个赞

发生错误的原因是 不存在或为 null。也许试试.
我真的不能再帮你了,因为你没有告诉我们你想做什么。userbot.users.cache.get("YOURIDHERE").send("hi")

查看完整回答
反对 回复 6天前
?
慕少森

TA贡献1669条经验 获得超9个赞

好吧,问题是用户是未定义的,就像内部和错误说的那样,

let user = bot.users.cache.get('useralertID')

您在此处使用的是字符串而不是变量useralertID

无论如何,你应该检查用户是否存在,因为你是从间接的东西中提取id,不确定是什么。Tags


查看完整回答
反对 回复 6天前
  • 3 回答
  • 0 关注
  • 10 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信