Repl.it环境下Python Discord机器人谷歌翻译命令异常及可行方案问询
适配Repl.it环境的谷歌翻译功能解决方案
旧版googletrans已停止维护,存在依赖冲突、接口地址过期等问题,无法在Repl.it环境正常安装和运行,可采用以下两种可直接落地的方案:
方案一:使用维护中的第三方翻译库deep-translator
- 安装依赖:在Repl.it的shell中执行命令
pip install deep-translator
如果项目使用requirements.txt管理依赖,直接添加一行deep-translator==1.11.4即可自动安装。 - 调整后的代码:
from deep_translator import GoogleTranslator from deep_translator.constants import GOOGLE_LANGUAGES_TO_CODES @client.command(aliases=['tr']) async def translate(ctx, lang_to, *args): lang_to = lang_to.lower() # 校验语言参数合法性 if lang_to not in GOOGLE_LANGUAGES_TO_CODES and lang_to not in GOOGLE_LANGUAGES_TO_CODES.values(): raise commands.BadArgument("检测到无效语言,请检查拼写是否正确,确认是真实存在的语言") text = ' '.join(args) try: # source设为auto可自动识别源语言 text_translated = GoogleTranslator(source='auto', target=lang_to).translate(text) await ctx.send(text_translated) except Exception as e: await ctx.send(f"翻译失败:{str(e)}")
方案二:直接调用谷歌翻译公开接口(无需额外安装翻译库)
Repl.it环境默认自带requests库,直接调用原生接口即可,兼容性更高:
import requests @client.command(aliases=['tr']) async def translate(ctx, lang_to, *args): lang_to = lang_to.lower() text = ' '.join(args) api_url = "https://translate.googleapis.com/translate_a/single" req_params = { "client": "gtx", "sl": "auto", # 自动识别源语言 "tl": lang_to, "dt": "t", "q": text } resp = requests.get(api_url, params=req_params) if resp.status_code == 200: res_data = resp.json() translated_text = ''.join([item[0] for item in res_data[0]]) await ctx.send(translated_text) else: await ctx.send("翻译请求失败,请稍后重试")
内容的提问来源于stack exchange,提问作者user16524210
相关产品推荐
相关产品推荐

