Image

Python ile yazılmış bir Telegram çeviri botunun performansını test etmek için, önceden yapılandırılmış telegram bot sunucusu kullandık. Bu bot, metni Rusçadan İngilizceye ve diğer dillerden Rusçaya çevirebilir, bu sırada giriş dili otomatik olarak belirlenecektir.

Kuruluma geçelim:

source my-tel-bot/bin/activate
pip3 install googletrans==3.1.0a0 -bu özel kütüphane sürümünü yüklemek önemlidir
pip3 install pyTelegramBotAPI
pip3 install asyncio
pip3 install aiohttp

Demo botumuzu mevcut olanla değiştirelim:

/root/my-tel-bot/bot.py

from googletrans import Translator
from telebot.async_telebot import AsyncTeleBot
import asyncio
from telebot.types import InlineQuery, InputTextMessageContent
from telebot import types

bot = AsyncTeleBot("BotFather’dan alınan anahtar", parse_mode=None)

# /start komutunu işleme
@bot.message_handler(commands=['start'])
async def send_welcome(message):
await bot.reply_to(message,'------\n'
+ 'Merhaba, '
+ message.from_user.first_name
+ ' \nBen Rusçadan İngilizceye çeviri yaparım \nVe diğer dillerden Rusçaya çeviri yaparım '
+'\n------')

# /help komutunu işleme
@bot.message_handler(commands=['help'])
async def send_welcome(message):
await bot.reply_to(message,'------\n'
+ 'Metni yazın ve gönder tuşuna basın\n'
+ 'Ben dilini tespit ederim\n'
+ 'Eğer çevrilmediyse, tekrar deneyin\n'
+ 'Google Translate kullanıyorum'
+'\n------')

# Mesaj metni işleme, eğer giriş Rusça ise İngilizceye çeviri,
# başka bir dilse Rusçaya çeviri yapılır.
@bot.message_handler()
async def user_text(message):
translator = Translator()

# Giriş dilini tespit etme
lang = translator.detect(message.text)
lang = lang.lang

# Eğer giriş Rusça ise, varsayılan olarak İngilizceye çevir.
# Başka bir dil istiyorsanız, değiştirebilirsiniz.
if lang == 'ru':
send = translator.translate(message.text)
await bot.reply_to(message, '------\n'+ send.text +'\n------')

# Aksi takdirde, başka bir dili Rusçaya çevir {dest='ru'}
else:
send = translator.translate(message.text, dest='ru')
await bot.reply_to(message, '------\n'+ send.text +'\n------')

# Başlıklarla resimleri işleme
@bot.message_handler(content_types=['photo'])
async def handle_image(message):
translator = Translator()

# Resim mesajını işleme
chat_id = message.chat.id
photo = message.photo[-1].file_id
caption = message.caption

# Giriş dilini tespit etme
lang = translator.detect(caption)
lang = lang.lang

# Eğer başlık Rusçaysa, varsayılan olarak İngilizceye çevir.
if lang == 'ru':
send = translator.translate(caption)

# Aksi takdirde, başka bir dili Rusçaya çevir {dest='ru'}
else:
send = translator.translate(caption, dest='ru')
await bot.send_photo(chat_id, photo, caption=send.text)

# Online istekleri işleme. Inline modunun bot ayarlarında @BotFather’dan etkinleştirilmesi gerekmektedir.
@bot.inline_handler(lambda query: True)
async def inline_query(query):
results = []
translator = Translator()
text = query.query.strip()

# Eğer istek boşsa, işlem yapılmaz.
if not text:
return

# Giriş dilini tespit etme
lang = translator.detect(text)
lang = lang.lang

# Eğer giriş Rusça ise, varsayılan olarak İngilizceye çevir.
if lang == 'ru':
send = translator.translate(text)
results.append(types.InlineQueryResultArticle(
id='1', title=send.text, input_message_content=types.InputTextMessageContent(
message_text=send.text)))

# Aksi takdirde, başka bir dili Rusçaya çevir {dest='ru'}
else:
send = translator.translate(text, dest='ru')
results.append(types.InlineQueryResultArticle(
id='1', title=send.text, input_message_content=types.InputTextMessageContent(
message_text=send.text)))

await bot.answer_inline_query(query.id, results)

# Başlatma ve hata durumunda yeniden deneme.
asyncio.run(bot.infinity_polling())

İşlem tamam, scriptte anahtar token’inizi belirtmeyi unutmayın ve servisi yeniden başlatın:

service my-tel-bot restart



No Comments Yet