我希望我的机器人(公共)可以在特定频道和特定服务器中发送消息。但是,我有一个错误......这是我的代码:
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'
答案 0 :(得分:0)
此错误(在您的上下文中)意味着您的变量guiiild
未正确填充,因此在尝试使用未存在的属性(在本例中为send
函数)时出现意外故障。 / p>
您可以将其打包在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>
}
})