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/builtins/message/__init__.py

58 lines
2.2 KiB
Python
Raw Normal View History

2022-06-27 17:00:00 +00:00
import asyncio
from core.elements import ExecutionLockList, Plain, confirm_command
from core.elements.message import *
from core.elements.message.chain import MessageChain
from core.utils import MessageTaskManager
class MessageSession(MessageSession):
2022-06-28 06:11:03 +00:00
async def waitConfirm(self, msgchain=None, quote=True, delete=True) -> bool:
2022-06-27 17:00:00 +00:00
send = None
ExecutionLockList.remove(self)
if msgchain is not None:
msgchain = MessageChain(msgchain)
msgchain.append(Plain('(发送“是”或符合确认条件的词语来确认)'))
send = await self.sendMessage(msgchain, quote)
flag = asyncio.Event()
MessageTaskManager.add_task(self, flag)
await flag.wait()
if msgchain is not None and delete:
await send.delete()
if MessageTaskManager.get_result(self).asDisplay() in confirm_command:
return True
return False
2022-06-28 06:11:03 +00:00
async def waitReply(self, msgchain, quote=True) -> MessageSession:
ExecutionLockList.remove(self)
msgchain = MessageChain(msgchain)
msgchain.append(Plain('(请使用指定的词语回复本条消息)'))
send = await self.sendMessage(msgchain, quote)
flag = asyncio.Event()
MessageTaskManager.add_task(self, flag, reply=send.messageId)
await flag.wait()
return MessageTaskManager.get()[self.target.targetId][self.target.senderId]['result']
async def waitAnyone(self, msgchain=None, delete=False) -> MessageSession:
2022-06-27 17:00:00 +00:00
send = None
ExecutionLockList.remove(self)
if msgchain is not None:
msgchain = MessageChain(msgchain)
send = await self.sendMessage(msgchain, quote=False)
flag = asyncio.Event()
MessageTaskManager.add_task(self, flag, all_=True)
await flag.wait()
if send is not None and delete:
await send.delete()
return MessageTaskManager.get()[self.target.targetId]['all']['result']
2022-06-28 06:11:03 +00:00
async def sleep(self, s):
ExecutionLockList.remove(self)
await asyncio.sleep(s)
def checkSuperUser(self):
return True if self.target.senderInfo.query.isSuperUser else False
2022-06-27 17:00:00 +00:00
__all__ = ["MessageSession"]