我正在尝试使用 embed 编写返回码,但它总是出现错误。
我是这些 JavaScript 方面的新手,需要帮助。
这是我的代码:
const math = require("mathjs");
const Discord = require("discord.js");
module.exports = {
name: "Hesap Makinesi",
aliases: ["hesapla", "hm"],
description: "Hesaplama yapar (matematik)",
async run(client, message, args) {
const roleColor =
message.guild.me.displayHexColor === "#000000"
? "#ffffff"
: message.guild.me.displayHexColor;
if (!args[0])
return (embed = new Discord.MessageEmbed()
.setTitle("Hesaplanamadı!")
.setAuthor("HATA BELİRLENDİ!")
.setThumbnail(
"https://upload.wikimedia.org/wikipedia/commons/f/f7/Generic_error_message.png"
)
.addField(
`\`?\` Lütfen **geçerli** bir soru giriniz.\n
\`➥\` **Toplama işlemi için:** " + " işaretini kullanın.\n
\`➥\` **Çıkarma işlemi için:** " - " işaretini kullanın.\n
\`➥\` **Çarpma işlemi için:** " * " işaretini kullanın.\n
\`➥\` **Bölme işlemi için:** " / " işaretini kullanın.
`
)
.setColor(roleColor));
let resp;
try {
resp = math.evaluate(args.join(" "));
} catch (e) {
return (embed = new Discord.MessageEmbed()
.setTitle("Hesaplanamadı!")
.setAuthor("HATA BELİRLENDİ!")
.setThumbnail(
"https://upload.wikimedia.org/wikipedia/commons/f/f7/Generic_error_message.png"
)
.addField(
`\`?\` Lütfen **geçerli** bir soru giriniz.\n
\`➥\` **Toplama işlemi için:** " + " işaretini kullanın.\n
\`➥\` **Çıkarma işlemi için:** " - " işaretini kullanın.\n
\`➥\` **Çarpma işlemi için:** " * " işaretini kullanın.\n
\`➥\` **Bölme işlemi için:** " / " işaretini kullanın.
`
)
.setColor(roleColor));
}
const embed = new Discord.MessageEmbed()
.setTitle("Hesaplandı!")
.setAuthor("Hesap Makinesi")
.setThumbnail(
"https://upload.wikimedia.org/wikipedia/tr/thumb/8/85/Apple_Hesap_makinesi_Calculator-icon.png/240px-Apple_Hesap_makinesi_Calculator-icon.png"
)
.addField("Soru", `\`\`\`css\n${args.join(" ")}\`\`\``)
.addField("Cevap", `\`\`\`css\n${resp}\`\`\``)
.setColor(roleColor);
message.channel.send(embed);
},
};
这是我的错误:
<块引用>ReferenceError: 初始化前无法访问“嵌入” 在 Object.run (C:\Users*\Desktop\Codding*\commands\Eglence\calculate.js:18:35) 在客户端。 (C:\Users*\Desktop\Codding*\index.js:74:25) 在 Client.emit (node:events:390:22)
答案 0 :(得分:0)
如错误所述,embed
在初始化之前被调用。这很可能是编码混乱的结果。与其简单地在 return
语句中塞入一个对象,我建议您先声明 embed
,为其分配一个变量,然后是 return message.channel.send(embed);
。
Ex - 原始代码:
if (!args[0])
return (embed = new Discord.MessageEmbed()
.setTitle("Hesaplanamadı!")
.setAuthor("HATA BELİRLENDİ!")
.setThumbnail(
"https://upload.wikimedia.org/wikipedia/commons/f/f7/Generic_error_message.png"
)
.addField(
`\`?\` Lütfen **geçerli** bir soru giriniz.\n
\`➥\` **Toplama işlemi için:** " + " işaretini kullanın.\n
\`➥\` **Çıkarma işlemi için:** " - " işaretini kullanın.\n
\`➥\` **Çarpma işlemi için:** " * " işaretini kullanın.\n
\`➥\` **Bölme işlemi için:** " / " işaretini kullanın.
`
)
.setColor(roleColor));
例如 - 新代码:
//create the embed first
let errorEmbed = new Discord.MessageEmbed()
.setTitle("Hesaplanamadı!")
.setAuthor("HATA BELİRLENDİ!")
.setThumbnail(
"https://upload.wikimedia.org/wikipedia/commons/f/f7/Generic_error_message.png"
)
.addField(
`\`?\` Lütfen **geçerli** bir soru giriniz.\n
\`➥\` **Toplama işlemi için:** " + " işaretini kullanın.\n
\`➥\` **Çıkarma işlemi için:** " - " işaretini kullanın.`,
`\`➥\` **Çarpma işlemi için:** " * " işaretini kullanın.\n
\`➥\` **Bölme işlemi için:** " / " işaretini kullanın.
`
)
.setColor(roleColor);
if (!args[0]) {
//then simply call it in your if statement
return message.channel.send(errorEmbed);
}
注意:我将其命名为 errorEmbed
,因为我注意到您将根据两个条件发送 embed
,并且每次您都再次创建嵌入。因此,我认为如果您只创建一次 errorEmbed
而不是两次可能会更好。
整个代码 - 这只会修复您的嵌入而不是发送问题,这正是您所要求的:
const math = require("math.js");
const Discord = require("discord.js");
module.exports = {
name: "hm", //Hesap Makinesi
aliases: ["hesapla", "hm"],
description: "Hesaplama yapar (matematik)",
async execute(client, message, args) {
const roleColor =
message.guild.me.displayHexColor === "#000000"
? "#ffffff"
: message.guild.me.displayHexColor;
let errorEmbed = new Discord.MessageEmbed()
.setTitle("Hesaplanamadı!")
.setAuthor("HATA BELİRLENDİ!")
.setThumbnail(
"https://upload.wikimedia.org/wikipedia/commons/f/f7/Generic_error_message.png"
)
.addField(
`\`?\` Lütfen **geçerli** bir soru giriniz.\n
\`➥\` **Toplama işlemi için:** " + " işaretini kullanın.\n
\`➥\` **Çıkarma işlemi için:** " - " işaretini kullanın.`,
`\`➥\` **Çarpma işlemi için:** " * " işaretini kullanın.\n
\`➥\` **Bölme işlemi için:** " / " işaretini kullanın.
`
)
.setColor(roleColor);
if (!args[0]) {
return message.channel.send(errorEmbed);
}
let resp;
try {
resp = math.evaluate(args.join(" "));
} catch (e) {
return message.channel.send(errorEmbed);
}
const embed = new Discord.MessageEmbed()
.setTitle("Hesaplandı!")
.setAuthor("Hesap Makinesi")
.setThumbnail(
"https://upload.wikimedia.org/wikipedia/tr/thumb/8/85/Apple_Hesap_makinesi_Calculator-icon.png/240px-Apple_Hesap_makinesi_Calculator-icon.png"
)
.addField("Soru", `\`\`\`css\n${args.join(" ")}\`\`\``)
.addField("Cevap", `\`\`\`css\n${resp}\`\`\``)
.setColor(roleColor);
message.channel.send(embed);
},
};