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/aiocqhttp/bot.py

58 lines
2.2 KiB
Python
Raw Normal View History

2021-10-08 11:54:27 +00:00
import asyncio
import logging
import os
from core.bots.aiocqhttp.client import bot
from core.bots.aiocqhttp.message import MessageSession, FetchTarget
from core.bots.aiocqhttp.tasks import MessageTaskManager, FinishedTasks
from aiocqhttp import Event
from core.elements import MsgInfo, Session, Command, Schedule
from core.loader import Modules
from core.parser.message import parser
from core.scheduler import Scheduler
from core.utils import PrivateAssets, init, load_prompt
PrivateAssets.set(os.path.abspath(os.path.dirname(__file__) + '/assets'))
init()
@bot.on_startup
async def startup():
gather_list = []
for x in Modules:
if isinstance(Modules[x], Command) and Modules[x].autorun:
gather_list.append(asyncio.ensure_future(Modules[x].function(FetchTarget)))
if isinstance(Modules[x], Schedule):
Scheduler.add_job(func=Modules[x].function, trigger=Modules[x].trigger, args=[FetchTarget])
await asyncio.gather(*gather_list)
Scheduler.start()
logging.getLogger('apscheduler.executors.default').setLevel(logging.WARNING)
await load_prompt(FetchTarget)
@bot.on_message
async def _(event: Event):
all_tsk = MessageTaskManager.get()
user_id = event.user_id
if user_id in all_tsk:
FinishedTasks.add_task(user_id, event.message)
all_tsk[user_id].set()
MessageTaskManager.del_task(user_id)
targetId = 'QQ|' + (f'Group|{str(event.group_id)}' if event.detail_type == 'group' else str(event.user_id))
msg = MessageSession(MsgInfo(targetId=targetId,
senderId=f'QQ|{str(event.user_id)}',
targetFrom='QQ|Group' if event.detail_type == 'group' else 'QQ',
senderFrom='QQ', senderName=''), Session(message=event,
target=event.group_id if event.detail_type == 'group' else event.user_id,
sender=event.user_id))
await parser(msg)
@bot.on('request.friend')
async def _(event: Event):
return {'approve': True}
bot.run(host='127.0.0.1', port=11901, debug=False)