【问题标题】:TypeError: Cannot read property 'send' of undefined Discord.js event guildMemberAddTypeError:无法读取未定义 Discord.js 事件 guildMemberAdd 的属性“发送”
【发布时间】:2021-04-03 17:35:06
【问题描述】:

send这个命令有问题,用户登录的时候会写typeError,但是奇怪的是这个命令有效,而且有效时有效,在他发送命令之前,但是一重启就立即生效机器人,他一开始就这么傻。

[代码]

robot.on('guildMemberAdd', (member) => {
  try{
    let image_avatar = member.user.avatarURL()//{format: 'png', dynamic: true, size: 128}
    if(image_avatar == undefined){
      image_avatar = "https://discord.com/assets/dd4dbc0016779df1378e7812eabaa04d.png";
      //https://discord.com/assets/dd4dbc0016779df1378e7812eabaa04d.png
    }
    const block = new Discord.MessageEmbed()
        .setColor('PURPLE')
        .setTitle(`${member.displayName} добро пожаловать на сервер ${member.guild.name}`)
        .setDescription(`Рофлодарова, Дружочек-пирожочек, заходи и выбирай роль в ${robot.channels.cache.get(config.role_channel)}`)
        .setThumbnail(image_avatar)
        member.roles.add(member.guild.roles.cache.get(config.userRole));
        member.guild.channels.cache.get(config.glav_channel).send(member.user, block);
  }catch(err){
    console.log(`[ERROR]: ${err}`)
  }
})

错误问题:

【问题讨论】:

    标签: javascript node.js discord.js


    【解决方案1】:

    如果 config.glav_channel 是有效的频道 ID,但 channels.cache.get(config.glav_channel) 返回 undefined 可能是因为频道尚未缓存。请尝试fetch 频道。它返回一个承诺,所以你需要先解决它:

    robot.on('guildMemberAdd', async (member) => {
      try {
        const image_avatar = member.user.avatarURL() || 'https://discord.com/assets/dd4dbc0016779df1378e7812eabaa04d.png';
        const block = new Discord.MessageEmbed()
          .setColor('PURPLE')
          .setTitle(
            `${member.displayName} добро пожаловать на сервер ${member.guild.name}`,
          )
          .setDescription(
            `Рофлодарова, Дружочек-пирожочек, заходи и выбирай роль в ${robot.channels.cache.get(
              config.role_channel,
            )}`,
          )
          .setThumbnail(image_avatar);
        member.roles.add(member.guild.roles.cache.get(config.userRole));
    
        const channel = await robot.channels.fetch(config.glav_channel);
        channel.send(member.user, block);
      } catch (err) {
        console.log(`[ERROR]: ${err}`);
      }
    });
    

    【讨论】:

    • 上面的代码中已经添加了。 async (member) => { ...const channel = await member...
    • 还有一个问题:[ERROR]: TypeError: member.guild.channels.fetch is not a function
    • 我刚刚更新了我的代码,应该是robot.channels.fetch()
    猜你喜欢
    • 2020-06-17
    • 2021-11-02
    • 2021-04-12
    • 2021-06-27
    • 2021-04-17
    • 1970-01-01
    • 2021-04-28
    • 2021-04-16
    • 2020-06-05
    相关资源
    最近更新 更多