Node.js Discord Bot:TypeError:无法读取undefined的属性'send'

时间:2017-09-04 20:12:32

标签: javascript node.js discord

我希望我的机器人(公共)可以在特定频道和特定服务器中发送消息。但是,我有一个错误......这是我的代码:

client.on('message', msg => {
  if (msg.content.startsWith('+specifictest')) {
    var channellog = msg.client.channels.get('352496750327496725');
    var guiiild = msg.client.guilds.get('343913599686934539').channellog;
    guiiild.send({embed: new Discord.RichEmbed().setColor("#FFFFFF").setAuthor("Dessin").setDescription(`Demandé par <@${msg.author.id}>`)})
  }
})

而且,我的错误:TypeError:无法读取未定义的属性'send'

3 个答案:

答案 0 :(得分:0)

此错误(在您的上下文中)意味着您的变量guiiild未正确填充,因此在尝试使用未存在的属性(在本例中为send函数)时出现意外故障。 / p>

的try / catch

您可以将其打包在try/catch block

client.on('message', msg => {
  if (msg.content.startsWith('+specifictest')) {
   try{
    var channellog = msg.client.channels.get('352496750327496725');
    var guiiild = msg.client.guilds.get('343913599686934539').channellog;
    guiiild.send({embed: new Discord.RichEmbed().setColor("#FFFFFF").setAuthor("Dessin").setDescription(`Demandé par <@${msg.author.id}>`)})
   }catch(e){console.log("[ERROR]",e)}
  }
})

但如果msg.client.guilds.get('343913599686934539').channellog没有返回包含.send

的内容,它仍然会给您错误

答案 1 :(得分:0)

你可以试试这个:

client.channels.get("ID").send("Your message")

ID 将是您要将邮件发送到的频道的ID。所以在你的情况下,试试:

client.on('message', msg => {
  if (msg.content.startsWith('+specifictest')) {
    client.channels.get("352496750327496725").send({embed: new Discord.RichEmbed().setColor("#FFFFFF").setAuthor("Dessin").setDescription(`Demandé par <@${msg.author.id}>`)})
  }
})

答案 2 :(得分:0)

这可能要晚了,但是 尝试使用await

我认为您使用的是Disord v11,而不是12,我建议您升级到12,但这是您的决定

V11

client.on('message', async (msg) => {
  if (msg.content.startsWith('+specifictest')) {
    const channel = await client.channels.get("352496750327496725")
    channel.send({embed: new Discord.RichEmbed().setColor("#FFFFFF").setAuthor("Dessin").setDescription(`Demandé par <@${msg.author.id}>`)})
 }
})

v12

client.on('message', async(msg) => {
  if (msg.content.startsWith('+specifictest')) {
    const channel = await client.channels.cache.find(x => x.id == "352496750327496725")
    channel.send(new Discord.MessageEmbed().setColor("#FFFFFF").setAuthor("Dessin").setDescription(`Demandé par ${msg.author}`)}) //this is the same as <@ID>
  }
})