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/utils/tasks.py

55 lines
2.1 KiB
Python
Raw Normal View History

2022-06-27 17:00:00 +00:00
from core.elements import MessageSession
class MessageTaskManager:
_list = {}
@staticmethod
2022-06-28 06:11:03 +00:00
def add_task(session: MessageSession, flag, all_=False, reply=None):
2022-06-27 17:00:00 +00:00
sender = session.target.senderId
2022-06-28 06:11:03 +00:00
task_type = 'reply' if reply is not None else 'wait'
2022-06-27 17:00:00 +00:00
if all_:
sender = 'all'
MessageTaskManager._list.update(
2022-06-28 06:11:03 +00:00
{session.target.targetId: {sender: {'flag': flag, 'active': True, 'type': task_type, 'reply': reply}}})
2022-06-27 17:00:00 +00:00
@staticmethod
def get_result(session: MessageSession):
return MessageTaskManager._list[session.target.targetId][session.target.senderId]['result']
@staticmethod
def get():
return MessageTaskManager._list
@staticmethod
def check(session: MessageSession):
if session.target.targetId in MessageTaskManager._list:
sender = None
if session.target.senderId in MessageTaskManager._list[session.target.targetId]:
sender = session.target.senderId
if 'all' in MessageTaskManager._list[session.target.targetId]:
sender = 'all'
if sender is not None:
2022-06-28 06:11:03 +00:00
get_ = MessageTaskManager._list[session.target.targetId][sender]
if get_['type'] == 'wait':
get_['result'] = session
get_['active'] = False
get_['flag'].set()
elif get_['type'] == 'reply':
if isinstance(get_['reply'], list):
for reply in get_['reply']:
if reply == session.target.replyId:
get_['result'] = session
get_['active'] = False
get_['flag'].set()
break
else:
if get_['reply'] == session.target.replyId:
get_['result'] = session
get_['active'] = False
get_['flag'].set()
2022-06-27 17:00:00 +00:00
__all__ = ['MessageTaskManager']