【问题标题】:Discord.JS function error, "welcome message"Discord.JS 函数错误,“欢迎消息”
【发布时间】:2018-04-03 03:41:48
【问题描述】:

我正在使用“Discord.JS”为 Discord 制作机器人 我正在尝试制作介绍性消息,但收到错误“无法读取未定义的属性 'sendMessage'”

我的欢迎信息代码:

var bot = new Discord.Client();

bot.on("guildMemberAdd", member => {
    let mem = member.guild
    mem.defaultChannel.sendMessage(member.user + " welcome to the server!"); });

有什么帮助吗?

【问题讨论】:

  • 看起来很明显...mem.defaultChannelundefined
  • @AndréDion 这显而易见的,但为什么在这里没有定义呢?

标签: javascript node.js discord.js


【解决方案1】:

我相信正确的方法是通过 ID 或名称获取频道,因为正如 Andre 指出的那样,#general 可以是未定义的。

成员加入和离开的一个简单方法是:

bot.on('guildMemberAdd', member => {
    member.guild.channels.get('channelID').send('**' + member.user.username + '**, has joined the server!'); 
});

bot.on('guildMemberRemove', member => {
    member.guild.channels.get('channelID').send('**' + member.user.username + '**, has left the server');
    //
});

转到用户设置>外观>开发者模式打开开发者模式,然后右键单击频道并单击“复制ID”

【讨论】:

    【解决方案2】:

    Reading about how Discord.js worksdefaultChannel 似乎用词不当,因为 Discord 或 its API 中不存在这样的概念:

    公会#generalTextChannel

    实际上,#general 频道可以重命名和删除,因此defaultChannel 可以是undefined。你需要保护你对sendMessage的电话:

    var bot = new Discord.Client();
    
    bot.on("guildMemberAdd", member => {
        let mem = member.guild;
    
        if (mem.defaultChannel) {
            mem.defaultChannel.sendMessage(member.user + " welcome to the server!"); 
        } else {
            // do something if the #general channel isn't available
        }
    });
    

    【讨论】:

      【解决方案3】:

      如果我没记错的话,guild#defaultChannelchannel#sendMessage 已被弃用。 (与 client#setGame 相同)但是,这可以通过轻松找到频道来绕过!

      var defaultChannel = member.guild.channels.find( "name", "CHANNEL_NAME" );
      

      然后你的代码最终会是这样的:

      const discord = require('discord.js');
      var bot = new discord.Client();
      
      bot.on(`guildMemberAdd`, member => {
          var dC= member.guild.channels.find("name", "CHANNEL_NAME");
          /* Using dC for short. */
      
          if (dC) {
              dC.send(`${member.username}, welcome to the server!`);
          } else {
              member.guild.defaultChannel.send(`${member.username}, welcome to the server!`);
          }
      });
      

      【讨论】:

        【解决方案4】:

        在我的机器人中,我使欢迎消息更加简单。也许这项工作:

         const Discord = require('discord.js');
        
         var bot = new Discord.Client();
        
         bot.on("guildMemberAdd", (member) => {
        
            let channel = bot.channels.get('*CHANNEL_ID*');
        
            channel.send(`Hey ${member.user}, welcome to the server!`); 
        });
        

        【讨论】:

          猜你喜欢
          • 2021-12-24
          • 2021-10-12
          • 2021-01-25
          • 2021-04-11
          • 2021-09-18
          • 2021-09-23
          • 2021-10-09
          • 2021-10-07
          • 2020-09-10
          相关资源
          最近更新 更多