π΄ ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ Π±ΠΎΡΠ΅ python: ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ
Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ Π±ΠΎΡΠ΅ Π½Π° Python, Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ python-telegram-bot. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ:
ΠΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΡΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΈ callback Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ Π±ΠΎΡΠ΅ Python?
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ Π±ΠΎΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python.
1. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ python-telegram-bot
ΠΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ python-telegram-bot, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ API Π’Π΅Π»Π΅Π³ΡΠ°ΠΌΠ° Π² Π½Π°ΡΠ΅ΠΌ Python ΠΊΠΎΠ΄Π΅. ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅:
pip install python-telegram-bot
2. ΠΠΌΠΏΠΎΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ python-telegram-bot, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π² Π½Π°ΡΠ΅ΠΌ Python ΠΊΠΎΠ΄Π΅:
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import Updater, CommandHandler, CallbackQueryHandler
3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ Π±ΠΎΡΠ΅. ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΡ InlineKeyboardButton
ΠΈ InlineKeyboardMarkup
ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ python-telegram-bot.
ΠΡΠΈΠΌΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ:
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ
button1 = InlineKeyboardButton("ΠΠ½ΠΎΠΏΠΊΠ° 1", callback_data='button1')
button2 = InlineKeyboardButton("ΠΠ½ΠΎΠΏΠΊΠ° 2", callback_data='button2')
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ Π΄Π»Ρ ΠΊΠ½ΠΎΠΏΠΎΠΊ
reply_markup = InlineKeyboardMarkup([[button1, button2]])
4. ΠΡΠΏΡΠ°Π²ΠΊΠ° ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΈΡ
Π² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ send_message
ΠΎΠ±ΡΠ΅ΠΊΡΠ° Update
.
ΠΡΠΈΠΌΠ΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ:
update.message.reply_text('ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ:', reply_markup=reply_markup)
5. ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π°ΠΆΠ°ΡΠΈΠΉ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ
ΠΠ»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΉ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ (callbacks). ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΈ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° CallbackQueryHandler
ΠΎΠ±ΡΠ΅ΠΊΡΠ° Updater
.
ΠΡΠΈΠΌΠ΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΉ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ:
# ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°
def button_callback(update, context):
query = update.callback_query
if query.data == 'button1':
# ΠΠ΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ 1
query.answer(text='ΠΡ Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡ 1')
elif query.data == 'button2':
# ΠΠ΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ 2
query.answer(text='ΠΡ Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡ 2')
# Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°
updater.dispatcher.add_handler(CallbackQueryHandler(button_callback))
6. ΠΠ°ΠΏΡΡΠΊ Π±ΠΎΡΠ°
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π°Ρ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ Π±ΠΎΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Updater
ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° start_polling
.
ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ° Π±ΠΎΡΠ°:
updater.start_polling()
updater.idle()
ΠΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠ°ΡΠΊΠ°Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ Π±ΠΎΡΠ΅ Π½Π° Python. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π½Π°ΠΆΠ°ΡΠΈΠΉ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π²Π°ΡΠΈΠΌΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡΠΌΠΈ.
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠ° ΡΡΠ°ΡΡΡ ΠΏΠΎΠΌΠΎΠ³Π»Π° Π²Π°ΠΌ ΠΎΡΠ²ΠΎΠΈΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ Π±ΠΎΡΠ΅ Python. Π£Π΄Π°ΡΠΈ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ!