You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求精简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);
      }
    }
  },
};

关键优化说明

  1. 前缀规则数组化

    • 将原本冗长的startsWith判断列表拆分为长、短前缀数组,代码结构更清晰,后续新增语言前缀只需往对应数组添加元素即可。
  2. 字符串处理逻辑优化

    • 优先检查长前缀(如zh-CN),避免短前缀的误匹配;
    • 使用prefix.length + 1动态截取字符串,适配前缀后带空格的格式,比固定长度更通用。
  3. 消除代码冗余

    • 把重复的MessageEmbed创建逻辑提取为统一代码块,避免三次重复编写相同逻辑。
  4. 修复语法规范问题

    • 给未声明的变量添加let/const关键字,避免全局变量污染,符合JavaScript语法规范。

内容的提问来源于stack exchange,提问作者ya_hla_bl3ial

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 20:05:38