|
1 |
| -# TODO |
2 |
| -# WARNING! IT COMMENTED FULLY SINCE INSTALL PACKAGES FROM THIS MODULE WILL |
3 |
| -# BROKE ALL FUCKING Moon, NOT JUST THIS MODULE |
4 |
| -# THIS MODULE IS INCOMPATIBLE WITH LAST Moon VERSION |
5 |
| -# SINCE IT USE OUTDATED PACKAGE WITH BROKEN DEPENDENCIES |
6 |
| -# IT NEEDS TO BE REWRITEN |
7 |
| - |
8 |
| -from utils.scripts import format_small_module_help, import_library |
9 |
| -from utils.misc import modules_help, prefix |
10 |
| -from pyrogram import Client, filters |
| 1 | +import json |
11 | 2 |
|
12 |
| -googletrans = import_library("googletrans", "googletrans-py") |
13 |
| -from googletrans import Translator |
| 3 | +import requests |
| 4 | + |
| 5 | +from pyrogram import Client, filters |
14 | 6 |
|
15 |
| -trl = Translator() |
| 7 | +from utils.misc import modules_help, prefix |
| 8 | +from utils.scripts import format_small_module_help |
16 | 9 |
|
17 | 10 |
|
18 | 11 | @Client.on_message(filters.command(["trans", "tr"], prefix) & filters.me)
|
19 | 12 | async def translatedl(_client, message):
|
20 | 13 | try:
|
| 14 | + # Parse command arguments |
21 | 15 | if len(message.command) > 1:
|
22 |
| - dtarget = message.text.split(None, 2)[1] |
| 16 | + dtarget = message.command[1] |
23 | 17 | else:
|
24 | 18 | dtarget = "en"
|
| 19 | + |
25 | 20 | if len(message.command) > 2:
|
26 | 21 | dtext = message.text.split(None, 2)[2]
|
27 | 22 | elif message.reply_to_message:
|
28 | 23 | dtext = message.reply_to_message.text
|
29 | 24 | else:
|
30 |
| - message.edit_text(format_small_module_help("translator")) |
| 25 | + await message.edit_text(format_small_module_help("translator")) |
| 26 | + return |
| 27 | + |
31 | 28 | await message.edit_text("<b>Translating</b>")
|
32 |
| - dtekstr = trl.translate(dtext, dest=dtarget) |
| 29 | + |
| 30 | + # Use the Google Translate API endpoint |
| 31 | + url = "https://clients5.google.com/translate_a/t" |
| 32 | + params = { |
| 33 | + "client": "dict-chrome-ex", |
| 34 | + "sl": "auto", |
| 35 | + "tl": dtarget, |
| 36 | + "q": dtext |
| 37 | + } |
| 38 | + |
| 39 | + response = requests.get(url, params=params) |
| 40 | + |
| 41 | + if response.status_code != 200: |
| 42 | + await message.edit_text(f"<b>Error:</b> API returned status code {response.status_code}") |
| 43 | + return |
| 44 | + |
| 45 | + # Parse the JSON response |
| 46 | + data = json.loads(response.text) |
| 47 | + |
| 48 | + # Based on actual response format [["translated_text", "detected_language"]] |
| 49 | + if isinstance(data, list) and len(data) > 0 and isinstance(data[0], list) and len(data[0]) > 0: |
| 50 | + translated_text = data[0][0] |
| 51 | + # Check if language detection is included |
| 52 | + source_lang = data[0][1] if len(data[0]) > 1 else "auto" |
| 53 | + else: |
| 54 | + translated_text = "Translation failed" |
| 55 | + source_lang = "unknown" |
| 56 | + |
33 | 57 | await message.edit_text(
|
34 |
| - f"<b>Translated</b> to <code>{dtarget}</code> :\n\n" |
35 |
| - + "{}".format(dtekstr.text) |
| 58 | + f"<b>Translated</b> from <code>{ |
| 59 | + source_lang}</code> to <code>{dtarget}</code>:\n\n" |
| 60 | + + "{}".format(translated_text) |
36 | 61 | )
|
37 |
| - except ValueError as err: |
38 |
| - await message.edit("Error: <code>{}</code>".format(str(err))) |
| 62 | + |
| 63 | + except Exception as err: |
| 64 | + await message.edit_text(f"<b>Error:</b> <code>{str(err)}</code>") |
39 | 65 | return
|
40 | 66 |
|
41 | 67 |
|
42 | 68 | modules_help["translator"] = {
|
43 |
| - "tr": "[lang]* [text/reply]* translate message", |
44 |
| - "trans": "[lang]* [text/reply]* translate message \n If lang not given it'll use default(en)", |
| 69 | + "tr": "[lang] [text/reply] translate message", |
| 70 | + "trans": "[lang] [text/reply] translate message \n\nIf lang not given it'll use default(en)", |
45 | 71 | }
|
0 commit comments