I have a trouble. I need make my telegram-bot multi-threading. My bot will help users to buy films and will work with database. I use Webhooks-method for receiving requests from Telegram-server and Stripe(module request). I read a lot about threading module in python and about async functions but I am not sure for all 100% about how to make my bot multi-threading. I will very appreciated for help, because I am stuck on this question. For now I give you main function of my app, if you need more, tell me:
@app.route('/', methods=["POST"])
def process():
print(request.json) # receiving requests (messages) in json format that are sent to the Flask server from the Telegram server and Stripe
if check_if_successful_payment(request) == True:
# Processing a request from Stripe
# chat_id = request.json["data"]["object"]["metadata"]["chat_id"]
stripe.api_key = get_from_env("PAYMENT_TOKEN")
webhook_list = stripe.WebhookEndpoint.list()
chat_id = webhook_list.data[0].metadata.chat_id
send_message(chat_id, "The payment was successful! Enjoy watching the movie!")
print("The payment was successful!")
webhook_id = webhook_list.data[0].id
stripe.WebhookEndpoint.delete(
webhook_id,
)
else:
# Processing a request from Telegram
chat_id = request.json["message"]["chat"]["id"]
send_message(chat_id, check_message(chat_id, request.json["message"]["text"]))
send_pay_button(chat_id=chat_id, text="Test payment",
price_id=check_price_id(request.json["message"]["text"]))
return {"ok": True}
if __name__ == '__main__':
app.run(debug=True)
If your bot works on Webhooks, you can use Aiogram instead of Flask for receiving messages from users. Aiogram has special decorator for simultaneous messages processing from many users - async_task
: https://docs.aiogram.dev/en/latest/_modules/aiogram/dispatcher/dispatcher.html#Dispatcher.async_task