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

我遇到了有关对特定用户进行 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}!`);

      }

    }

  }


至尊宝的传说
浏览 71回答 3
3回答

千巷猫影

客户端.users&nbsp;其唯一的缓存用户由客户端。因此,如果重新启动机器人,则此集合将为空。需要向机器人发送消息或将消息发送到机器人可以处理此消息以缓存在此集合中的通道。按照你的方式,如果你在公会上运行这个命令,或者如果这个用户是你的公会的成员,你可以使用或尝试通过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')) {}&nbsp; &nbsp; for (i = 1; i <= s; i++) {&nbsp; &nbsp; &nbsp; &nbsp; const tag = await Tags.findOne({&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; where: {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; key: i&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; &nbsp; &nbsp; if (tag) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var date = tag.get('description');&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let useralert = (tag.get("usernameid")).toString();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let useralertID = useralert.replace(/[<@>]/g, '');&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let deadday = parseInt(date.slice(0, 2));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let deadmonth = parseInt(date.slice(3, 5));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let dayn = deadday - day;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let monthn = deadmonth - month;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console.log(dayn.toString() + ' ' + monthn.toString() + ' ' + useralertID);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (((dayn <= 2) && (monthn == 0)) || (monthn < 0)) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let user = message.guild.members.cache.get(useralertID);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (user) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; user.send('Works!').then(() => {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return message.channel.send(`Sent msg to ${user.username}!`);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }).catch(() => {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return message.channel.send(`${user.username} not allow to send DM message!`);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; })&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return message.channel.send(`the ${useralertID} not guild Member, can\`t send DM to him`);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }

HUH函数

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

慕少森

好吧,问题是用户是未定义的,就像内部和错误说的那样,let user = bot.users.cache.get('useralertID')您在此处使用的是字符串而不是变量useralertID无论如何,你应该检查用户是否存在,因为你是从间接的东西中提取id,不确定是什么。Tags
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript