Sr. Salesforce Dev
Ilkinji telegramma botuňyzy Python bilen ýasamak: ädimme-ädim gollanma
3 minut alar
Telegram botlary durmuşyňyzy aňsatlaşdyrmak üçin güýçli gurallardyr. Bu makala, doly awtomatlaşdyrylan Telegram botyny döretmek üçin aňsat ädimler bilen tanyşdyrýar.
1. Telegramda täze bot dörediň
Bot ýasamak üçin ilkinji ädim Telegramyň öz BotFather-den başlaýar. Botlary döretmäge, dolandyrmaga we pozmaga kömek etmek üçin Telegram tarapyndan döredilen özboluşly bot.
- @BotFather bilen söhbetdeşlige başlaň
- /newbot buýrugyny ulanyň
- Botuňyza at beriň
- Bot adyňyza 'bot' bilen gutarýan at beriň
Edil şonuň ýaly, öz botuňyzy döretdiňiz, @BotFather tarapyndan berlen Linke (ssylka) basyň we botuňyza girip, yazyp bilersiňiz.
2. Boty başlamak üçin kod
Ilki bilen python'da telegram kitaphanasyny gurmaly bolarys.
pip install python-telegram-bot==12.0.0
Indi 'configure.py' ady bilen python faýly döredeliň. We botumyz baradaky maglumatlary saklalyň:
# configure.py
config = {
'name': 'botnameBot',
'token': 'bot token shu yere',
'url': 'https://api.telegram.org/bot'
}
Indi 'main.py' ady bilen python faýly döredeliň. We esasy kitaphanalary import edeli ilki bilen:
from telegram import *
from telegram.ext import *
from telegram.utils.request import Request
from configure import config
import os
token = config['token']
url = config['url']
Boty başlamak we handler' leri hasaba almak üçin, her bot üçin başlangyç /start ýaly buýruklar bolyar:
def main():
req = Request(
connect_timeout=0.5,
read_timeout=1.0
)
bot = Bot(
token=token,
request=req,
base_url=url
)
updater = Updater(
bot=bot,
use_context=True
)
start_handler = CommandHandler("start", start)
dp = updater.dispatcher
dp.add_handler(start_handler)
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
3. CommandHandler
Oýnawaç robotyňyzyň bardygyny göz öňüne getiriň. Sen oňa: "Robot, tans et!" diyip buýruk beryän we tans edip başlaýar. Bu ýerde "tans" beren buýrugyňyza meňzeýär. Telegram botlary dünýäsinde CommandHandler botyň "/start" ýa-da "/tanset" ýazanyňyz ýaly berjek aýratyn buýruklaryňyzy diňlemegine kömek edýär.
def tans_et(update, context):
update.message.reply_text("Tans edyarin:))")
tans_handler = CommandHandler('tanset', tans_et)
dispatcher.add_handler(tans_handler )
4. MessageHandler
Indi buýruklardan başga-da robotyňyz bilen gürleşýärsiňiz, ulanyjy hökmünde bot'a habar (text) ýazýarsyňyz. MessageHandler bot-a umumy habarlary (yazan text'lerinizi) diňlemäge we yzyna jogap bermäge kömek edýär.
def echo(update, context):
# siz näme ýazsaňam, şony yzyna ýazýar (ugradyar)
update.message.reply_text(update.message.text)
echo_handler = MessageHandler(Filters.text, echo)
dispatcher.add_handler(echo_handler)
5. KeyboardButton
Oýnawaç robotyňyzda "Aýdym aýt", "Tans et" ýa-da "Bök" ýaly düwmeleriň (knopka) bardygyny göz öňüne getiriň. Bir düwmä basanyňyzda, robot şol hereketi edýär. Telegramda, KeyboardButton söhbetdeşlikde şeýle basyp bolýan düwmeleri döredýär.
Näme üçin ulanmaly?
Şeylelik bilen, siz her gezek buýruk ýazmak hökman däl; diňe bir düwmä basyň, bot näme etmelidigini biler.
keyboard = [[KeyboardButton("Button1"), KeyboardButton("Button2")]]
markup = ReplyKeyboardMarkup(keyboard)
update.message.reply_text("Text", reply_markup=markup)
6. InlineKeyboardButton
Bulary habaryň içindäki gizlin düwmeler diýip pikir ediň. Robotyňyz size "Aýdym saýlaň: Bagtly ýa-da gynandyryjy" diýen habary görkezýär diýeliň. Edil şol habarda iki düwme bar: "Bagtly" we "Gynandyryjy". Birine basanyňyzda, robot şol aýdymy ýerine ýetirýär. “InlineKeyboardButton” Telegramda şeýle edýär.
keyboard = [[InlineKeyboardButton("Bagtly", callback_data='1'), InlineKeyboardButton("Gynandyryjy", callback_data='2')]]
markup = InlineKeyboardMarkup(keyboard)
update.message.reply_text('Aýdym saýlaň: Bagtly ýa-da gynandyryjy:', reply_markup=markup)
7. CallbackQueryHandler
"Bagtly" we "Gynandyryjy" aýdym düwmelerini ýadyňyzdamy? Birini basanyňyzdan soň näme bolýar? Robot bilmeli we reaksiýa bermeli. CallbackQueryHandler botyň haýsy düwmä basylandygyny we mundan soň näme etmelidigine karar berýär.
def button(update, context):
query = update.callback_query
if query.data == "1":
query.edit_message_text("Siz 'Bagtly' aydym sayladynyz!")
button_handler = CallbackQueryHandler(button)
dispatcher.add_handler(button_handler)
8. CallbackContext
Robotyňyzyň halaýan reňkiňiz ýa-da aýdymyňyz ýaly siz hakda bellikleri saklaýan kiçijik sumkasy bar diýip göz öňüne getiriň. “CallbackContext” “Telegram” boty üçin şol sumka ýalydyr. Botyň sizi has gowy tanamagyna we şoňa görä jogap bermegine kömek etmek üçin söhbet ýa-da ulanyjy hakda zatlary ýada salýar.
Şeylelik bilen, bot geçmişdäki zatlary ýatda saklap we siziň bilen has şahsy gürleşmek üçin ulanyp biler.
def add_data(update, context):
context.user_data['some_data'] = "This is a test!"
def retrieve_data(update, context):
update.message.reply_text(context.user_data.get('some_data', "No data found"))
9. Dokument ugratmak
Python bilen islendik formatda faýllary telegram botyna iberip bilersiňiz.
with open('some_document.txt', 'rb') as doc:
context.bot.send_document(chat_id=update.message.chat_id, document=doc)
Netije:
Python bilen Telegram botyny ýasamak başda çylşyrymly bolup görünmegi mümkin, ýöne ädimme-ädim owrenilse, bu gaty ansat.
Has çuňňur wizual gollanma üçin wideo sapagymy barlamagy ýatdan çykarmaň:
Youtube:
Github: https://github.com/MekanJuma/Telegram-Bot-Tutorial
Happy bot-building! 🤖