【问题标题】:Discord JS bot crashing after sending a dm messageDiscord JS 机器人在发送 dm 消息后崩溃
【发布时间】:2021-02-20 07:30:57
【问题描述】:

我希望我的机器人向执行命令 !RHelp 的人发送 dm。 为此,我编写了以下代码:

if (message.content.startsWith('!RHelp')){
        client.users.fetch('<User ID>').then((user) => user.send('Hello World'));
        message.reply('I just sent you a DM');}

机器人正在正确执行代码,但在发送消息后,他因以下错误而崩溃:

const member = message.guild.member(user);
                             ^         

TypeError: Cannot read property 'member' of null

我已经尝试过message.author.send('Hello World'); 但这是同样的问题......

我在一个单独的文件 'utiles.js' 中声明用户和成员:

const Discord = require('discord.js');
const Client = new Discord.Client();



module.exports ={
    getUtiles: function (message){
            const user = message.mentions.users.first();
            const member = message.guild.member(user);
            const args = message.content.trim().split(/ +/g);
            const command = args.shift().toLowerCase();
            const usrTag ='<@'+ member + '>'; //get the mentionned user tag
            
            this.user = user;
            this.member = member;
            this.args = args;
            this.usrTag = usrTag;
            
            return user, member, args, usrTag;
    }
}

【问题讨论】:

  • 您的错误消息表明message.guild 的值不包含名为member() 的方法或属性,很可能是因为message.guild 为空或未定义。在您显示的代码中,我们看不到您在何处创建了该变量。
  • @Alex 感谢您的评论,我在问题中添加了 utiles.js。
  • 在此处找到此 sn-p:github.com/AnIdiotsGuide/discordjs-bot-guide/blob/master/… - 您可能需要将 message.guild.member(user) 更改为 message.guild.members.get(user)
  • 另外,看起来 API 最近已经完全改变了,这会破坏旧代码。我不知道您最近多久开始使用机器人,但这可能会对您有所帮助:discordjs.guide/additional-info/changes-in-v12.html
  • @Alex 你发给我的链接 (github.com/AnIdiotsGuide/discordjs-bot-guide/blob/master/...) 是针对旧版本的 discord.js。而且我没有在指南中找到有关发送私人消息的新方法的任何信息。但是感谢您的帮助!????

标签: javascript node.js discord.js


【解决方案1】:

由于您在 DM 中做事,因此没有 message.guild,因此没有成员函数。您需要检查 message.guild 是否为空,然后采取相应措施。目前尚不清楚getUtiles 函数是如何/何时运行的,因此具体的解决方案取决于您。

【讨论】:

    【解决方案2】:

    const member = message.guild.member(user); 更改为const member = message.member,此代码对我有用,因此请将if (command === 'rhelp') { 替换为if (message.content.startsWith('!RHelp')){ 以解决您的问题。

        if (command === 'rhelp') {
        let member = message.member
        member.send("Hello")
         message.reply('I just sent you a DM');
      }
    

    【讨论】:

      猜你喜欢
      • 2020-06-13
      • 2021-08-19
      • 2022-08-11
      • 2019-09-16
      • 2021-01-08
      • 2023-02-10
      • 2019-09-12
      • 2021-02-22
      • 2020-11-23
      相关资源
      最近更新 更多