有什么方法可以让我的机器人同时支持不和谐的斜杠命令和我的机器人前缀而没有任何头痛
现在我的机器人使用前缀 ;或者在公会中设置任何前缀,我的命令处理程序是
const foldersPath = path.join(__dirname, "commands");
try {
const commandFolders = fs.readdirSync(foldersPath);
client.commands = new Map();
// Loop through command folders and files to populate client.commands
for (const folder of commandFolders) {
const commandsPath = path.join(foldersPath, folder);
try {
const commandFiles = fs.readdirSync(commandsPath).filter((file) => file.endsWith(".js"));
for (const file of commandFiles) {
const filePath = path.join(commandsPath, file);
try {
const command = require(filePath);
// Set a new item in the Collection with the key as the command name and the value as the exported module
if ("data" in command && "execute" in command) {
client.commands.set(command.data.name, command);
// Add aliases to the command collection
if (command.data.aliases && Array.isArray(command.data.aliases)) {
command.data.aliases.forEach((alias) => {
client.commands.set(alias, command);
});
}
} else {
console.log(`[WARNING] The command at ${filePath} is missing a required "data" or "execute" property.`);
}
} catch (err) {
console.error(`[ERROR] Failed to load command from file: ${filePath}`, err);
}
}
} catch (err) {
console.error(`[ERROR] Failed to read commands in folder: ${commandsPath}`, err);
}
}
} catch (err) {
console.error(`[ERROR] Failed to read command folders from: ${foldersPath}`, err);
}
真的很混乱和垃圾,但它有效,我想知道我是否可以以某种方式编辑它,使每个命令也有斜杠命令支持
没有快捷方式可以将消息命令直接转换为斜杠命令。做到这一点的唯一方法是创建自己的算法。
将前缀命令集成到斜杠命令中时,还必须将消息命令接收到的选项传输到斜杠。您需要在每个消息命令的数据中记录诸如选项是否必需以及它们是什么类型(角色、用户、字符串、数字等)等信息。
另外,不要忘记将您在前缀命令中设置的权限转移到斜杠命令。
除此之外,如果您按如下方式构建消息命令,那么执行我所说的操作会更容易。
const command = {
name: "kick",
permissions: PermissionsBitField.Flags.KickMembers,
options: [
{ name: "user", "type": "user", isRequired: true },
{ name: "reason", "type": "string", isRequired: false }
],
execute: (message) => {
// Your code
}
}
export default command
如果您不想处理这些,您可以浏览 Github 上的模板并克隆具有您想要的功能的存储库。
最近的示例模板:https://github.com/labcord/Ruvia