Мне нужно сделать так, чтобы один сервер отвечал сразу и одинаково за большое количество ботов и при этом сильно не нагружался как это происходит при polling. То есть в запросы которые пользователи будут делать в @qwerty1_bot и @qwerty2_bot будут обрабатываться одинаково, весь функционал и база данных, всё одно и тоже, своего рода зеркала. Бот очень большой и изначально работал на асинхронном telebot и содержал код, который отвечал за ответы пользователю примерно таким образом
@bot.message_handler(commands=['start'])
async def send_welcome(message):
await bot.reply_to(message, 'Добро пожаловать в бота!')
потому переделывать под что-то другое вообще не вариант, слишком много времени займёт, потому обратился за помощью к ChatGPT как можно с минимальными изменениями добиться этого и после небольших моих правок скрипт бота выглядел вот так вот:
from flask import Flask, request, abort
import telebot
from telebot.async_telebot import AsyncTeleBot
import asyncio
import ipaddress
app = Flask(__name__)
# Допустимые IP-адреса Telegram
ALLOWED_IP_RANGES = [
ipaddress.ip_network('149.154.160.0/20'),
ipaddress.ip_network('91.108.4.0/22')
]
def is_ip_allowed(ip):
ip = ipaddress.ip_address(ip)
print(any(ip in network for network in ALLOWED_IP_RANGES))
return any(ip in network for network in ALLOWED_IP_RANGES)
async def process_message(bot_token, update):
bot = AsyncTeleBot(bot_token, parse_mode=None)
@bot.message_handler(commands=['start'])
async def send_welcome(message):
await bot.reply_to(message, 'Добро пожаловать в бота!')
print('something sended')
await bot.process_new_updates([telebot.types.Update.de_json(update)])
@app.route('/webhook/<bot_token>', methods=['POST'])
async def webhook(bot_token):
if not is_ip_allowed(request.remote_addr):
abort(403)
if request.headers.get('content-type') == 'application/json':
update = request.get_json()
asyncio.create_task(process_message(bot_token, update))
return '', 200
else:
abort(403)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=443, ssl_context=('webhook_cert.pem', 'webhook_pkey.pem'))
Вроде бы всё хорошо, запрос приходит, мой webhook возвращает успех серверам telegram, something sended появляется в консоли, но... бот мне как пользователю в самом telegram ничего не отвечает. Как быть?
Заранее спасибо!