У цій статті ми розглянемо п'ять популярних фреймворків для роботи з Telegram ботами на Python: pyTelegramBotAPI, Aiogram, python-telegram-bot, telethon та pyrogram. Для кожного з них ми наведемо приклад простої програми, а також розглянемо плюси та мінуси.
1. pyTelegramBotAPI
pyTelegramBotAPI або telebot - це простий та зручний фреймворк для створення Telegram ботів на Python. Він дозволяє швидко розробляти прості боти, але має обмежений функціонал порівняно з іншими фреймворками.
Приклад програми:
import telebot
TOKEN = 'bot_token'
bot = telebot.TeleBot(TOKEN)
@bot.message_handler(commands=['start'])
def send_welcome(message):
bot.reply_to(message, "Привіт! Я твій бот.")
@bot.message_handler(func=lambda message: True)
def echo(message):
bot.reply_to(message, message.text)
bot.polling()
Плюси:
Простота використання
Швидке створення простих ботів
Мінуси:
Обмежений функціонал порівняно з іншими фреймворками
2. Aiogram
Aiogram - асинхронний фреймворк для роботи з Telegram ботами на Python. Aiogram має більший функціонал порівняно з pyTelegramBotAPI, але вимагає більш глибоких знань для початківців.
Приклад програми:
from aiogram import Bot, Dispatcher, types
from aiogram.utils import executor
TOKEN = 'bot_token'
bot = Bot(token=TOKEN)
dp = Dispatcher(bot)
@dp.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
await message.reply("Привіт! Я твій бот.")
@dp.message_handler()
async def echo(message: types.Message):
await message.reply(message.text)
if __name__ == '__main__':
executor.start_polling(dp)
Плюси:
Асинхронність
Більший функціонал порівняно з pyTelegramBotAPI
Мінуси:
Вищий поріг входу для початківців
3. python-telegram-bot
python-telegram-bot - потужний фреймворк для розробки Telegram ботів на Python з широким функціоналом та активною спільнотою. Однак, він не підтримує асинхронність.
Приклад програми:
from telegram import Update
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext
TOKEN = 'bot_token'
def start(update: Update, context: CallbackContext):
update.message.reply_text('Привіт! Я твій бот.')
def echo(update: Update, context: CallbackContext):
update.message.reply_text(update.message.text)
def main():
updater = Updater(TOKEN)
dp = updater.dispatcher
dp.add_handler(CommandHandler("start", start))
dp.add_handler(MessageHandler(Filters.text & ~Filters.command, echo))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
Плюси:
Широкий функціонал
Активна спільнота
Мінуси:
Відсутність асинхронності
4. Telethon
Telethon - асинхронний фреймворк для роботи з повним Telegram API на Python. Telethon дозволяє розробляти складніші проекти, але не спеціалізований для роботи з ботами та має вищий поріг входу для початківців.
Приклад програми:
from telethon import TelegramClient, events
api_id = 'api_id'
api_hash = 'api_hash'
bot_token = 'bot_token'
client = TelegramClient('bot', api_id, api_hash).start(bot_token=bot_token)
@client.on(events.NewMessage(pattern='/start'))
async def start(event):
await event.respond('Привіт! Я твій бот.')
raise events.StopPropagation
@client.on(events.NewMessage)
async def echo(event):
await event.respond(event.text)
client.run_until_disconnected()
Плюси:
Робота з повним Telegram API
Асинхронність
Мінуси:
Вищий поріг входу для початківців
Не спеціалізований для роботи з ботами
5. Pyrogram
Pyrogram - ще один асинхронний фреймворк для роботи з повним Telegram API на Python. Pyrogram також дозволяє розробляти складніші проекти, але не спеціалізований для роботи з ботами та має вищий поріг входу для початківців.
Приклад програми:
from pyrogram import Client, filters
api_id = 'api_id'
api_hash = 'api_hash'
bot_token = 'bot_token'
app = Client("bot", api_id, api_hash, bot_token=bot_token)
@app.on_message(filters.command("start"))
async def start(client, message):
await message.reply_text("Привіт! Я твій бот.")
@app.on_message(filters.text)
async def echo(client, message):
await message.reply_text(message.text)
app.run()
Плюси:
Асинхронність
Робота з повним Telegram API
Мінуси:
Вищий поріг входу для початківців
Не спеціалізований для роботи з ботами
Висновки
Усі вищенаведені фреймворки мають свої переваги та недоліки. Вибір фреймворка залежить від ваших потреб та рівня знань. Для простих ботів можна використовувати pyTelegramBotAPI або python-telegram-bot, для більш складних проектів та асинхронної роботи - aiogram, Telethon або Pyrogram.