سلام
خب امروز میخایم یه ربات تلگرام خیلی ساده بنویسیم که روی دتا دیپلوی شده باشه و کار کنه..
ربات رو با python-telegram-bot مینویسیم..
با Fast API یه api ساده مینویسیم که ازش به عنوان وبهوکِ رباتمون استفاده کنیم.. بعدش هم لینک apiمون رو به عنوان وبهوکِ ربات ست میکنیم.. به همین راحتی :)))
بعد از اون هر پیامی ک به ربات بره، تلگرام برای apiمون میفرسته!!!
خب بریم سراغ پیاده سازی:
از جایی که در قسمت قبل بودیم، ادامه میدیم..
** البته اولش اینو یه نگاهی بندازید!
فایل main.py رو ادیت میکنیم(از اول مینویسیمش!):
from fastapi import FastAPI, Request from telegram import Update, Bot,InlineKeyboardButton, InlineKeyboardMarkup from telegram.ext import Dispatcher, CommandHandler, CallbackContext, MessageHandler, Filters,CallbackQueryHandler BotToken = "<YOUR-TOKEN-HERE>" def start(update: Update, _: CallbackContext): update.message.reply_text("hiiii , how you doin!?") def get_dispatcher(): bot = Bot(BotToken) dispatcher = Dispatcher(bot=bot, update_queue=None, use_context=True) dispatcher.add_handler(CommandHandler('start', start)) return dispatcher dispatcher = get_dispatcher() app = FastAPI() @app.post("/webhook") async def webhook_handler(req: Request): data = await req.json() update = Update.de_json(data, dispatcher.bot) dispatcher.process_update(update)
مطمعن بشید که فایل requirements.txt این شکلیه:
fastapi python-telegram-bot
کدتون رو دیپلوی کنید..
deta deploy
حتما میدونید چطوری وبهوک ست کنید برای رباتتون، پس لینکِ microی api ی خودتون روی دتا رو به این صورت به عنوان وبهوک ست کنید(توکن و لینک خودتون رو بزارید):
curl --header 'Content-Type: application/json' --data '{"url": "https://hm6qpo.deta.dev/webhook"}' 'https://api.telegram.org/bot<YOUR_BOT_TOKEN>/setWebhook'
حالا اگه رباتتون استارت کنید باید کار کنه :)
تلگرام:
@fastapi_ir