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/console.py
2022-05-08 23:15:20 +08:00

70 lines
2.5 KiB
Python

import os
from config import Config
if not Config('db_path'):
raise AttributeError('Wait! You need to fill a valid database address into the config.cfg "db_path"\n'
'Example: \ndb_path = sqlite:///database/save.db\n'
'(Also you can fill in the above example directly,'
' bot will automatically create a SQLite database in the "./database/save.db")')
import asyncio
import traceback
import aioconsole
from datetime import datetime
from bot import init_bot
from core.elements import Schedule, StartUp, MsgInfo, Session, PrivateAssets, EnableDirtyWordCheck, Url
from core.console.template import Template as MessageSession, FetchTarget
from core.parser.message import parser
from core.scheduler import Scheduler
from core.loader import ModulesManager
from core.utils import init
from core.logger import Logger
EnableDirtyWordCheck.status = True
PrivateAssets.set(os.path.abspath(os.path.dirname(__file__) + '/assets'))
init()
async def console_scheduler():
gather_list = []
Modules = ModulesManager.return_modules_list_as_dict()
for x in Modules:
if isinstance(Modules[x], StartUp):
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], misfire_grace_time=30, max_instance=1)
await asyncio.gather(*gather_list)
Scheduler.start()
async def console_command():
try:
m = await aioconsole.ainput('> ')
time = datetime.now()
await parser(MessageSession(target=MsgInfo(targetId='TEST|0',
senderId='TEST|0',
senderName='',
targetFrom='TEST|Console',
senderFrom='TEST|Console'),
session=Session(message=m, target='TEST|0', sender='TEST|0')))
print('----Process end----')
usage_time = datetime.now() - time
print('Usage time:', usage_time)
await console_command()
except KeyboardInterrupt:
print('Exited.')
exit()
except Exception:
Logger.error(traceback.format_exc())
init_bot()
loop = asyncio.get_event_loop()
loop.create_task(console_scheduler())
loop.create_task(console_command())
loop.run_forever()