我试着做一个经济系统。在程序结束时,你应该收到关于某人给你钱的DM。但是当他试图DM某人时,他不能。
错误:
/home/container/node_modules/@discordjs/rest/dist/index.js:787
throw new Error("Expected token to be set for this request, but none was present");
^
Error: Expected token to be set for this request, but none was present
at RequestManager.resolveRequest (/home/container/node_modules/@discordjs/rest/dist/index.js:787:15)
at RequestManager.queueRequest (/home/container/node_modules/@discordjs/rest/dist/index.js:759:46)
at REST.raw (/home/container/node_modules/@discordjs/rest/dist/index.js:914:32)
at REST.request (/home/container/node_modules/@discordjs/rest/dist/index.js:910:33)
at REST.post (/home/container/node_modules/@discordjs/rest/dist/index.js:901:17)
at UserManager.createDM (/home/container/node_modules/discord.js/src/managers/UserManager.js:60:41)
at UserManager.send (/home/container/node_modules/discord.js/src/managers/UserManager.js:112:24)
at Query.<anonymous> (/home/container/commands/send.js:100:44)
at Query.<anonymous> (/home/container/node_modules/mysql/lib/Connection.js:526:10)
at Query._callback (/home/container/node_modules/mysql/lib/Connection.js:488:16)
我的代码:
//Importovani discord.js balicku do kodu
const { Client, GatewayIntentBits, Discord, Partials, EmbedBuilder, SlashCommandBuilder, PermissionFlagsBits, message } = require("discord.js");
const client = new Client({
intents: [GatewayIntentBits.Guilds],
partials: [Partials.Channel],
});
var db = require("../nastaveni/db.js");
module.exports = {
//Data comanndu
name: "send",
description: "Zašle někomu peníze z tvého účtu.",
data: new SlashCommandBuilder()
.setName("send")
.setDescription("Zašle někomu peníze z tvého účtu.")
.addStringOption((option) => option.setName("pridat").setDescription("Kolik chceš poslat!").setRequired(true))
//Kdo to je
.addStringOption((option) => option.setName("cislouctu").setDescription("Číslo účtu pro poslání").setRequired(true))
.addStringOption((option) => option.setName("poznamka").setDescription("Poznámka k transakci!"))
.addStringOption((option) => option.setName("zuctu").setDescription("Pokud posíláte z vedlejšího účtu napište číslo vedlejšího účtu!")),
//Spusteni scriptu pri interakci
async execute(interaction) {
var pridat = parseInt(interaction.options.getString("pridat"));
const cislouctu = interaction.options.getString("cislouctu");
const poznamka = interaction.options.getString("poznamka");
const zuctu = interaction.options.getString("zuctu");
const trchid = "967327241648373820";
if (poznamka === null) {
const poznamka = "*není*";
}
if (zuctu === null) {
db.query("SELECT penize,cislouctu FROM charaktery WHERE discord = " + interaction.user.id, function (err, result) {
if (err) {
console.log(err);
interaction.reply({ content: "Něco se pokailo na naší straně! Kontaktujte podporu. ERR_DAT_1", emphemeral: true });
return;
}
const zuctu = result[0].cislouctu;
var castka = parseInt(result[0].penize) - pridat;
if (castka < 0) {
interaction.reply({ content: "Je nám líto ale nemáte dostatek financí pro provedení této transakce!", emphemeral: true });
return;
}
db.query("UPDATE charaktery SET penize = " + castka + " WHERE discord = " + interaction.user.id, function (err) {
if (err) {
console.log(err);
interaction.reply({ content: "Něco se pokailo na naší straně! Kontaktujte podporu. ERR_DAT_2", emphemeral: true });
return;
}
db.query("SELECT * FROM charaktery WHERE cislouctu = " + cislouctu, function (err, result) {
if (err) {
console.log(err);
interaction.reply({ content: "Něco se pokailo na naší straně! Kontaktujte podporu. ERR_DAT_3", emphemeral: true });
return;
}
if (result[0] === undefined) {
db.query("SELECT zustatek,discordpristup FROM ucty WHERE cislouctu = " + cislouctu, function (err, result2) {
if (err) {
console.log(err);
interaction.reply({ content: "Něco se pokailo na naší straně! Kontaktujte podporu. ERR_DAT_11", emphemeral: true });
return;
}
const discordid2 = result2[0].discordpristup;
var zustatek2 = parseInt(result2[0].zustatek);
var novyzustatek2 = zustatek2 + pridat;
db.query("UPDATE ucty SET zustatek = " + novyzustatek2 + " WHERE cislouctu = " + cislouctu, function (err) {
if (err) {
console.log(err);
interaction.reply({ content: "Něco se pokailo na naší straně! Kontaktujte podporu. ERR_DAT_4", emphemeral: true });
return;
}
const newEmbed = new EmbedBuilder()
.setColor("#4f4f4f")
.setTitle("NOVÁ PLATBA PŘIJATA")
.addFields({ name: "ČÁSTKA - " + pridat + "Kč", value: "**Z účtu: **" + zuctu + "\nPoznámka: " + poznamka + "\nČas: " + Date.now });
try {
client.users.send(discordid2, newEmbed);
} catch (e) {
interaction.guild.channels.cache.find((ch) => (ch.id = trchid));
}
interaction.reply({ content: "Transakce proběhla vpořádku! Váš aktuální zůstatek: **" + castka + "**Kč", emphemeral: true });
});
});
} else {
const discordid2 = result[0].discord;
var zustatek2 = parsteInt(result[0].penize);
var novyzustatek2 = zustatek2 + pridat;
db.query("UPDATE charaktery SET penize = " + novyzustatek2 + " WHERE discord = " + discordid2, function (err) {
if (err) {
console.log(err);
interaction.reply({ content: "Něco se pokailo na naší straně! Kontaktujte podporu. ERR_DAT_10", emphemeral: true });
return;
}
const newEmbed = new EmbedBuilder()
.setColor("#4f4f4f")
.setTitle("NOVÁ PLATBA PŘIJATA")
.addFields({ name: "ČÁSTKA - " + pridat + "Kč", value: "**Z účtu: **" + zuctu + "\nPoznámka: " + poznamka + "\nČas: " + Date.now });
try {
client.users.send(discordid2, newEmbed);
} catch (e) {
interaction.guild.channels.cache.find((ch) => (ch.id = trchid));
}
interaction.reply({ content: "Transakce proběhla vpořádku! Váš aktuální zůstatek: **" + castka + "**Kč", emphemeral: true });
});
}
});
});
});
} else {
db.query("SELECT zustatek,discordpristup FROM ucty WHERE cislouctu = " + zuctu, function (err, result) {
if (err) {
console.log(err);
interaction.reply({ content: "Něco se pokailo na naší straně! Kontaktujte podporu. ERR_DAT_5", emphemeral: true });
return;
}
if (!result[0].discordpristup === interaction.user.id) {
interaction.reply({ content: "Tento účet vám nepatří!", emphemeral: true });
return;
}
var castka = parseInt(result[0].penize) - pridat;
if (castka < 0) {
interaction.reply({ content: "Je nám líto ale nemáte dostatek financí pro provedení této transakce!", emphemeral: true });
return;
}
db.query("UPDATE ucty SET zustatek = " + castka + " WHERE cislouctu = " + zuctu, function (err) {
if (err) {
console.log(err);
interaction.reply({ content: "Něco se pokailo na naší straně! Kontaktujte podporu. ERR_DAT_6", emphemeral: true });
return;
}
db.query("SELECT penize,discord FROM charaktery WHERE cislouctu = " + cislouctu, function (err, result) {
if (err) {
console.log(err);
interaction.reply({ content: "Něco se pokailo na naší straně! Kontaktujte podporu. ERR_DAT_7", emphemeral: true });
return;
} else if (result === undefined) {
db.query("SELECT zustatek,discordpristup FROM ucty WHERE cislouctu = " + cislouctu, function (err, result) {
const discordid2 = result[0].discordpristup;
var zustatek2 = parsteInt(result[0].zustatek);
var novyzustatek2 = zustatek2 + pridat;
db.query("UPDATE ucty SET zustatek = " + novyzustatek2 + " WHERE cislouctu = " + cislouctu, function (err) {
if (err) {
console.log(err);
interaction.reply({ content: "Něco se pokailo na naší straně! Kontaktujte podporu. ERR_DAT_8", emphemeral: true });
return;
}
const newEmbed = new EmbedBuilder()
.setColor("#4f4f4f")
.setTitle("NOVÁ PLATBA PŘIJATA")
.addFields({ name: "ČÁSTKA - " + pridat + "Kč", value: "**Z účtu: **" + zuctu + "\nPoznámka: " + poznamka + "\nČas: " + Date.now });
try {
client.users.send(discordid2, newEmbed);
} catch (e) {
interaction.guild.channels.cache.find((ch) => (ch.id = trchid));
}
interaction.reply({ content: "Transakce proběhla vpořádku! Váš aktuální zůstatek: **" + castka + "**Kč", emphemeral: true });
return;
});
});
} else {
const discordid2 = result[0].discord;
var zustatek2 = parsteInt(result[0].penize);
var novyzustatek2 = zustatek2 + pridat;
db.query("UPDATE charaktery SET penize = " + novyzustatek2 + "WHERE discord = " + discordid2, function (err) {
if (err) {
console.log(err);
interaction.reply({ content: "Něco se pokailo na naší straně! Kontaktujte podporu. ERR_DAT_9", emphemeral: true });
return;
}
const newEmbed = new EmbedBuilder()
.setColor("#4f4f4f")
.setTitle("NOVÁ PLATBA PŘIJATA")
.addFields({ name: "ČÁSTKA - " + pridat + "Kč", value: "**Z účtu: **" + zuctu + "\nPoznámka: " + poznamka + "\nČas: " + Date.now });
try {
client.users.send(discordid2, newEmbed);
} catch (e) {
interaction.guild.channels.cache.find((ch) => (ch.id = trchid));
}
interaction.reply({ content: "Transakce proběhla vpořádku! Váš aktuální zůstatek: **" + castka + "**Kč", emphemeral: true });
});
}
});
});
});
}
},
};
我试着捕捉错误并将其发送到另一个通道,但这也不起作用。最好是当它可以做DM。但如果没有办法做到这一点,我会很高兴,如果我可以捕捉错误并发送消息到另一个通道。
1条答案
按热度按时间hgtggwj01#
你不需要在每个命令中初始化一个新的客户端。大多数discord.js结构都扩展了
Base
,这意味着客户端在client
属性下可用。在你的例子中,它是interaction.client
。下面是导入的一个清理后的变体:
之后,确保将代码中所有地方的
client
替换为interaction.client
。示例: