feat✨: add coser

This commit is contained in:
HibiKier
2024-03-27 11:53:37 +08:00
parent b74998db87
commit d37280b296
4 changed files with 196 additions and 59 deletions
+15 -31
View File
@@ -1,46 +1,30 @@
import asyncio
from typing import Optional
from nonebot.adapters import Bot
from nonebot.adapters.discord import Bot as DiscordBot
from nonebot.adapters.dodo import Bot as DodoBot
from nonebot.adapters.kaiheila import Bot as KaiheilaBot
from nonebot.adapters.onebot.v11 import Bot as v11Bot
from nonebot.adapters.onebot.v12 import Bot as v12Bot
from nonebot.matcher import Matcher
from nonebot.message import run_postprocessor
from zhenxun.services.log import logger
from zhenxun.utils.utils import WithdrawManager
# TODO: 其他平台撤回消息
from zhenxun.utils.withdraw_manage import WithdrawManager
# 消息撤回
@run_postprocessor
async def _(
matcher: Matcher,
exception: Optional[Exception],
exception: Exception | None,
bot: Bot,
):
tasks = []
for message_id in WithdrawManager._data:
second = WithdrawManager._data[message_id]
tasks.append(asyncio.ensure_future(_withdraw_message(bot, message_id, second)))
WithdrawManager.remove(message_id)
index_list = list(WithdrawManager._data.keys())
for index in index_list:
(
bot,
message_id,
time,
) = WithdrawManager._data[index]
tasks.append(
asyncio.ensure_future(
WithdrawManager.withdraw_message(bot, message_id, time)
)
)
WithdrawManager.remove(index)
await asyncio.gather(*tasks)
async def _withdraw_message(bot: Bot, message_id: str, time: int):
await asyncio.sleep(time)
logger.debug(f"撤回消息ID: {message_id}", "HOOK")
if isinstance(bot, v11Bot):
await bot.delete_msg(message_id=int(message_id))
elif isinstance(bot, v12Bot):
await bot.delete_message(message_id=message_id)
elif isinstance(bot, DodoBot):
pass
elif isinstance(bot, KaiheilaBot):
pass
elif isinstance(bot, DiscordBot):
pass