Archived
1
0
Fork 0
This repository has been archived on 2024-04-26. You can view files and clone it, but cannot push or open issues or pull requests.
akari-bot/core/bots/aiogram/bot.py

49 lines
1.8 KiB
Python
Raw Normal View History

2021-08-18 13:11:14 +00:00
import asyncio
2021-08-21 07:45:21 +00:00
import logging
2021-08-19 12:17:48 +00:00
import os
2021-08-18 13:11:14 +00:00
2021-08-19 12:17:48 +00:00
from aiogram import types, executor
from core.bots.aiogram.client import dp
2021-08-18 13:11:14 +00:00
from core.bots.aiogram.message import MessageSession, FetchTarget
2021-08-19 12:17:48 +00:00
from core.bots.aiogram.tasks import MessageTaskManager, FinishedTasks
2021-08-18 13:11:14 +00:00
from core.elements import MsgInfo, Session, Module
from core.loader import Modules
from core.parser.message import parser
2021-08-18 13:11:14 +00:00
from core.scheduler import Scheduler
2021-08-21 15:58:07 +00:00
from core.utils import PrivateAssets, init, load_prompt
2021-08-19 12:17:48 +00:00
PrivateAssets.set(os.path.abspath(os.path.dirname(__file__) + '/assets'))
2021-08-21 15:58:07 +00:00
init()
2021-08-20 16:32:46 +00:00
@dp.message_handler()
async def msg_handler(message: types.Message):
2021-08-16 16:07:04 +00:00
all_tsk = MessageTaskManager.get()
user_id = message.from_user.id
if user_id in all_tsk:
2021-08-17 15:35:54 +00:00
FinishedTasks.add_task(user_id, message)
2021-08-16 16:07:04 +00:00
all_tsk[user_id].set()
MessageTaskManager.del_task(user_id)
msg = MessageSession(MsgInfo(targetId=f'Telegram|{message.chat.type}|{message.chat.id}',
2021-08-23 12:44:31 +00:00
senderId=f'Telegram|User|{message.from_user.id}',
targetFrom=f'Telegram|{message.chat.type}',
2021-08-22 14:55:25 +00:00
senderFrom='Telegram|User', senderName=message.from_user.username),
2021-08-18 13:11:14 +00:00
Session(message=message, target=message.chat.id, sender=message.from_user.id))
await parser(msg)
2021-08-18 13:11:14 +00:00
async def on_startup(dispatcher):
gather_list = []
for x in Modules:
if isinstance(Modules[x], Module) and Modules[x].autorun:
gather_list.append(asyncio.ensure_future(Modules[x].function(FetchTarget)))
await asyncio.gather(*gather_list)
Scheduler.start()
2021-08-21 07:45:21 +00:00
logging.getLogger('apscheduler.executors.default').setLevel(logging.WARNING)
2021-08-21 15:58:07 +00:00
await load_prompt(FetchTarget)
2021-08-18 13:11:14 +00:00
if dp:
2021-08-18 13:11:14 +00:00
executor.start_polling(dp, skip_updates=True, on_startup=on_startup)