Не могу установить webhook для бота на aiogram + pythonanywhere.com
Написал телеграмм бота и задеплоил на pythonanywhere.com (бесплатный аккаунт). На пулинге код работал. Когда перевел на Webhook, то бот перестал отвечать на команды.
import asyncio
from aiogram import Bot, Dispatcher, types, F, Router
from aiohttp import web
from aiogram.enums import ParseMode
from aiogram.filters.command import Command
from aiogram.types import ChatMemberUpdated, Message
from aiogram.fsm.storage.memory import MemoryStorage
from aiogram.webhook.aiohttp_server import SimpleRequestHandler, setup_application
from aiogram.client.session.aiohttp import AiohttpSession
import aiohttp
на лишние библиотеки не обращайте внимание (удалил часть кода, чтобы оставить только работу webhook)
API_TOKEN = 'апи_токен_бота'
APP_NAME = "single1709"
WEBHOOK_PATH = f'/webhook/{API_TOKEN}'
WEBHOOK_HOST = f'https://{APP_NAME}.pythonanywhere.com'
WEBHOOK_URL = f'{WEBHOOK_HOST}{WEBHOOK_PATH}'
WEB_SERVER_HOST = '127.0.0.1'
WEB_SERVER_PORT = 5001
chat_id = 'id_чата(канала)'
storage = MemoryStorage()
dp = Dispatcher(storage=storage)
@dp.message(Command("start"))
async def cmd_start(message: types.Message):
kb = [
[
types.KeyboardButton(text="жми"),
],
]
keyboard = types.ReplyKeyboardMarkup(
keyboard=kb,
resize_keyboard=True,
input_field_placeholder="Нажмите кнопку"
)
await message.answer("Спасибо, что нажали кнопку", reply_markup=keyboard)
async def on_startup(bot: Bot):
await bot.set_webhook(WEBHOOK_URL,allowed_updates=["message", "inline_query", "chat_member"])
dp.message(cmd_start, commands=['start'])
def main():
session = AiohttpSession(proxy="http://proxy.server:3128")
bot = Bot(token=API_TOKEN,session=session, parse_mode=ParseMode.HTML)
dp.startup.register(on_startup)
app = web.Application()
webhook_requests_handler = SimpleRequestHandler(dispatcher=dp,bot=bot,)
webhook_requests_handler.register(app, path=WEBHOOK_PATH)
setup_application(app, dp, bot=bot)
web.run_app(app, host=WEB_SERVER_HOST, port=WEB_SERVER_PORT)
if __name__ == "__main__":
asyncio.run(main())
Также попробовал проверить работу webhook через postman:
Ответ:
{
"ok": true,
"result": true,
"description": "Webhook was set"
}
https://api.telegram.org/bot'апи_токен_бота'/getWebhookinfo
Ответ:
{
"ok": true,
"result": {
"url": "https://single1709.pythonanywhere.com/webhook/",
"has_custom_certificate": false,
"pending_update_count": 24,
"last_error_date": 1698172283,
"last_error_message": "Wrong response from the webhook: 404 NOT FOUND",
"max_connections": 40,
"ip_address": тут мой ip,
"allowed_updates": [
"message",
"inline_query",
"chat_member"
]
}
}