Github, Telegram, Python və RedHat OpenShift istifadə edərək sadə tərcüməçi BOT-un yaradılması
Github, Telegram, Python və RedHat OpenShift istifadə edərək sadə tərcüməçi BOT-un yaradılması
Bu məqalədə bir neçə xidməti birləşdirərək kiçik amma funksional bir TelegramBOT yaratmağa çalışacağıq. Başlanğıc üçün aşağıdakı tələblərin ödənməyinə ehtiyac vardır.
1. Telegram hesabınız (Telefon və ya PC üzərindən (https://web.telegram.org))
2. GitHub hesabınız (https://github.com/)
3. RedHat OpenShift Hesabınız (https://openshift.com, Python 3.5 dəstəkli,kod yazarkən buna diqqət edin)
Artıq Telegram istifadəçisi olduğunuzu düşünərək Telegram-ın Bot Manageri olan BotFather ilə danışıb yeni Bot qeydiyyatdan keçirmək lazımdır. Qydiyyatdan keçdikdən sonra BotFather sizə gələcəkdə kodumuzda istifadə edəcəyimiz Bot Token-i göndərəcək. Addımlar aşağıdakı kimidir. Sarı ilə işarələnmiş hissədə sizin Token olacaq.
Tokeni aldıqdan sonra növbəti addım GitHub hesabınızda kodumuzu host edəcəyimiz Repozitoriyanın yaradılmasıdır. Hesabınıza daxil olub aşağıdakı addımlarla yeni Repo yarada bilərsiniz və ya məqalənin sonunda qeyd olunacaq linkdən hal – hazırda yazacağımız kodu fork edərək götürə bilərsiniz.
Repozitoriyanı yaratdıqdan sonra onu Local kompüterimizə clone edək və Bot-un kod hissəsini hazırlayaq.
Bot 3 fayldan ibarət olacaq.
1. App.py – əsas kod
2. Bot_config.py – Köməkçi konfiqurasiyaların saxlanıldığı fayl
3. Requirements.txt – Bot-un işləməsi üçün tələb olunan kitabxanaların siyahısı. Bu fayl-da olan kitabxanalar OpenShift serverimizdə avtomatik yüklənərək qurulacaq.
İlk faylımız requirements.txt olacaq. Bot-un işləməsi üçün bizə Ömər Bayramovun bu məqalədə istifadə etdiyi pyTelegramBotAPI modulu və Google Translate servisindən istifadə etmək üçün googletrans kitabxanalarından istifadə edəcəyik.
İkinci faylımız bot_config.py olacaq. Bu faylda BotFather-dən aldığımız token-ni və istəyinizə uyğun olaraq bot-dan istifadə etməyə icazə verdiyiniz şəxslərin istifadəçi adlarını qeyd edə bilərsiniz.
Üçüncü və sonuncu faylımız isə app.py faylı olacaq. Bu faylda Bot-un kod hissəsini yazacağıq.
from telebot import TeleBot as tb # Telegram API import bot_config from googletrans import Translator #GooGle Translate lib bot = tb(bot_config.token) # API token translator = Translator() class Bthelper: def __init__(self): self.handler = 'en' def set_handler(self,handler): self.handler = handler def get_handler(self): return self.handler bt_help = Bthelper() # handler for cases with '/start" command wahere user gets to know about bot. @bot.message_handler(commands=['start']) def message_start(message): if message.from_user.username in bot_config.known_users: bot.send_message(message.from_user.id,'Salamlar. Hal - hazirda movcud olan komandalar \n /entoaz - Ingilis -> Azerbaycan tercumecisi. \n /aztoen - Azerbaycan -> Ingilis tercumecisi. \n /translate - Istenilen dil -> Ingilis tercumecisi') else: bot.send_message(message.from_user.id,'Bot-dan istifade etmek huququnuz yoxdur.') #bot_config faylinda known_users listine elave edilmelidir # /aztoen @bot.message_handler(commands=['aztoen']) def message_aztoen(message): if message.from_user.username in bot_config.known_users: msg = bot.reply_to(message, "Sizden tercume edilecek sozu gozleyirem...") #Istifadeciye gonderilecek cavab bt_help.set_handler('en') bot.register_next_step_handler(msg,do_trans) #Tercumeci funksiyamiza kecid else: bot.send_message(message.from_user.id,'Bot-dan istifade etmek huququnuz yoxdur.') #bot_config faylinda known_users listine elave edilmelidir # /entoaz @bot.message_handler(commands=['entoaz']) def message_entoaz(message): if message.from_user.username in bot_config.known_users: msg = bot.reply_to(message, "Send me something for translating...") #Istifadeciye gonderilecek cavab bt_help.set_handler('az') bot.register_next_step_handler(msg,do_trans) #Tercumeci funksiyamiza kecid else: bot.send_message(message.from_user.id,'Bot-dan istifade etmek huququnuz yoxdur.') #bot_config faylinda known_users listine elave edilmelidir # /translate @bot.message_handler(commands=['translate']) def message_translate(message): if message.from_user.username in bot_config.known_users: msg = bot.reply_to(message, "Sizden tercume edilecek sozu gozleyirem...") #Istifadeciye gonderilecek cavab bot.register_next_step_handler(msg,do_trans) #Tercumeci funksiyamiza kecid else: bot.send_message(message.from_user.id,'Bot-dan istifade etmek huququnuz yoxdur.') #bot_config faylinda known_users listine elave edilmelidir def do_trans(message): try: handler = bt_help.get_handler() translated = translator.translate(message.text,handler) bot.send_message(message.from_user.id,translated.text) except Exception as e: bot.send_message(message.from_user.id,e) bot.polling(none_stop=True)
Fayllar hazır olduqdan sonra yaratdığımız repo – ya əlavə edərək kodumuzu commit edək.
Commit etdikdən sonra local repomuzda olan fayllarımızı Github repomuza push edə bilərik.
Push etdikdən sonra web üzərindən yaratdığımız repo-ya baxdıqda fayllarımızı görə bilərik.
Kod hissəmiz hazır olduqdan sonra RedHat Openshift hesabımıza daxil olaraq yaratdığımız Bot-u deploy edərək test edə bilərik.
OpenShift hesabınıza daxil olduqdan sonra qarşınıza təklif olunan xidmətlər siyahısı çıxacaq. Onların arasında Python seçib yeni proekt yaratmaq lazımdır.
Birinci addımda ümumi məlumar verilir və qurulacaq proektin Python 3.5 üzərində işləyəcəyi deyilir. Next deyib növbəti səhifəyə keçə bilərsiniz.
İkinci addımda Proektin məlumatları daxil ediləcək. Burada əsas hissələr ulduzla qeyd edilib. Ən əsas xana hissə Git Repository xanasıdır. Burada Gihub hesabınızda yaratdığınız repozitoriyanın keçidini daxil edirsiniz. Mənim halımda bu https://github.com/Komport/TranslatorBOT keçididir.
Məlumatlar daxil edildikdən sonra Create düyməsini sıxaraq proektimizi yaradaq. Proektin uğurlu yaradılması ilə bağlı mesaj aldıqdan sonra pəncərəni bağlaya və ya Continue to the project overview keçidi ilə birbaşa proektə keçə bilərsiniz.
Bununla da github repomuzda yaratdığımız Telegram botunu Redhat OpenShift platformuna deploy etmiş oluruq.
Əgər yazdığınız kodda hər hansı xəta varsa müvafiq dəyişikliyi Github reponuzda edib yenidən Openshift-də build edə bilərsiniz.
Yaratdığımız Bot-u test edək.