channel-block-tg/bot.py
2020-04-06 00:12:41 +03:00

40 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
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)
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('/webhook/{token}', execute)])
web.run_app(app, port=5151, host='localhost')