channel-block-tg/bot.py
Forden 2bbbee4651 Added usage example of errors_handler
Optimized generation of default/inline keyboard
Customizing webhook path has become more flexible
Updated aiogram version to 2.7 (BotAPI 4.7)
2020-04-07 01:44:05 +03:00

43 lines
1.1 KiB
Python

from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.redis import RedisStorage2
from aiohttp import web
from loguru import logger
import filters
import handlers
import middlewares
from data import config
bot = Bot(token=config.BOT_TOKEN, parse_mode=types.ParseMode.HTML)
storage = RedisStorage2(**config.aiogram_redis)
dp = Dispatcher(bot, storage=storage)
# noinspection PyUnusedLocal
async def on_startup(web_app: web.Application):
filters.setup(dp)
middlewares.setup(dp)
handlers.errors.setup(dp)
handlers.user.setup(dp)
await dp.bot.delete_webhook()
await dp.bot.set_webhook(config.WEBHOOK_URL)
async def execute(req: web.Request) -> web.Response:
upds = [types.Update(**(await req.json()))]
Bot.set_current(dp.bot)
Dispatcher.set_current(dp)
try:
await dp.process_updates(upds)
except Exception as e:
logger.error(e)
finally:
return web.Response()
if __name__ == '__main__':
app = web.Application()
app.on_startup.append(on_startup)
app.add_routes([web.post(config.WEBHOOK_PATH, execute)])
web.run_app(app, port=5151, host='localhost')