پرش به محتوا
Siavash01سیاوش درویشی
اتوماسیون و یکپارچه‌سازی

TranslatorBot

ربات تلگرامی که فارسی یا انگلیسی بودن متن را تشخیص می‌دهد و ترجمه‌اش را برمی‌گرداند.

سال
۲۰۲۴
گیت‌هاب
Abyys001
نوع
ربات
فناوری‌ها
PythonPyrogramgoogletranslangdetectpython-decouple
TTranslatorBotbot

/start

welcome to **TranslateBot**. paste farsi and i'll give you english. or paste english and i'll give you farsi :D

Where is the nearest train station?

نزدیک‌ترین ایستگاه قطار کجاست؟

امروز هوا خیلی خوب است

The weather is very good today

See you tomorrow at the office.

فردا در دفتر می‌بینمت.

مسئله

ترجمه‌ی سریع فارسی و انگلیسی داخل تلگرام، بدون رفتن به اپ دیگر.

آنچه ساختم

یک ربات تلگرامی کوچک با Pyrogram که بین فارسی و انگلیسی ترجمه می‌کند. کاربر هر متنی را بفرستد، ربات زبان آن را با langdetect تشخیص می‌دهد و با googletrans فارسی را به انگلیسی یا انگلیسی را به فارسی برمی‌گرداند و پاسخ را به‌صورت ریپلای روی همان پیام می‌فرستد.

ساختار ربات بر پایه‌ی پلاگین‌های Pyrogram است (دستور /start و یک هندلر متن)، اطلاعات API را با python-decouple از متغیرهای محیطی می‌خواند و اگر ترجمه با خطا روبه‌رو شود، به زبان خود کاربر پیام تلاش دوباره می‌دهد.

نقش من

نوشتن ربات: راه‌اندازی کلاینت Pyrogram، پلاگین‌ها و منطق تشخیص زبان و ترجمه.

یکپارچه‌سازی‌ها

  • googletrans · langdetectتشخیص زبان و ترجمه

قابلیت‌ها

  1. ۰۱تشخیص خودکار زبان با langdetect
  2. ۰۲ترجمه‌ی فارسی به انگلیسی و انگلیسی به فارسی با googletrans
  3. ۰۳پاسخ به‌صورت ریپلای روی پیام اصلی
  4. ۰۴ساختار پلاگینی Pyrogram (دستور /start و هندلر متن)
  5. ۰۵خواندن اطلاعات API از متغیرهای محیطی با python-decouple
  6. ۰۶پیام خطای متناسب با زبان کاربر هنگام شکست ترجمه

تصاویر

0xSRC · TranslatorBotpython
from pyrogram import Client, filters

from googletrans import Translator
from langdetect import detect, detect_langs

translator = Translator()

fa = [
    "ur",
    "fa",
]

en = [
    "en",
    "fi",
    "nl",
]


@Client.on_message(filters.text & (~filters.command("start")), group=1)
async def translate(client, message):
    if detect(message.text) in fa:
        try:
            translated = translator.translate(message.text)
            await message.reply(translated.text, quote=True)
        except:
            await message.reply("SORRRY :( \nTry again....")
    elif detect(message.text) in en:
        try:
            translated = translator.translate(message.text, dest="fa")
            await message.reply(translated.text, quote=True)
        except:
            await message.reply("متاسفیم:( \nدوباره تلاش کن.....")
واتساپسفارش نرم‌افزار