请求精简Discord翻译Bot代码(去除ISO语言码)
优化Discord翻译Bot代码:移除ISO语言码前缀
优化后的完整代码
const { Client, Message, MessageEmbed } = require("discord.js") const translate = require('@iamtraction/google-translate') module.exports = { name: "ترجم", description: `يترجم اللغه فقط أستعمل !translate "الكلمه/الجمله يلي بدك تترجمها"`, aliases: ["translate"], run: async (client, message, args) => { try { const query = args.join(" ") const lang = args[0] if (!query) throw new Error('Please specify a text to translate'); const translated = await translate(query, { to: lang }); let fullTranslated = translated.text; console.log("fulltranslate: " + fullTranslated); // 定义需要移除的语言前缀规则 const longLangPrefixes = ["zh-CN", "zh-TW"]; const shortLangPrefixes = ["ar", "en", "yi", "cy", "vi", "ur", "uk", "tr", "th", "sv", "sw", "es", "sl", "sk", "sr", "ru", "ro", "pt", "pl", "fa", "no", "mt", "ms", "mk", "lt", "lv", "de"]; let cleanedText = fullTranslated; // 先检查长前缀(避免被短前缀误匹配) for (const prefix of longLangPrefixes) { if (fullTranslated.startsWith(prefix)) { cleanedText = fullTranslated.substring(prefix.length + 1); break; } } // 长前缀未匹配到,检查短前缀 if (cleanedText === fullTranslated) { for (const prefix of shortLangPrefixes) { if (fullTranslated.startsWith(prefix)) { cleanedText = fullTranslated.substring(prefix.length + 1); break; } } } // 兜底处理:直接替换ar前缀 if (cleanedText === fullTranslated) { cleanedText = fullTranslated.replace("ar", ""); } // 统一生成Embed并回复 const translateEmbed = new MessageEmbed() .setColor('RANDOM') .setTitle('Translate | ترجمة') .setDescription(cleanedText); console.log("بدون: " + cleanedText); message.reply({ embeds: [translateEmbed] }); } catch (err) { if (message) { message.reply('Translation failed: ' + err.message); } } }, };
关键优化说明
前缀规则数组化
- 将原本冗长的
startsWith判断列表拆分为长、短前缀数组,代码结构更清晰,后续新增语言前缀只需往对应数组添加元素即可。
- 将原本冗长的
字符串处理逻辑优化
- 优先检查长前缀(如
zh-CN),避免短前缀的误匹配; - 使用
prefix.length + 1动态截取字符串,适配前缀后带空格的格式,比固定长度更通用。
- 优先检查长前缀(如
消除代码冗余
- 把重复的
MessageEmbed创建逻辑提取为统一代码块,避免三次重复编写相同逻辑。
- 把重复的
修复语法规范问题
- 给未声明的变量添加
let/const关键字,避免全局变量污染,符合JavaScript语法规范。
- 给未声明的变量添加
内容的提问来源于stack exchange,提问作者ya_hla_bl3ial
相关产品推荐
相关产品推荐

