from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent, MessageEvent from nonebot_plugin_alconna import UniMessage from hexi.core.custom_utils import check_manage from ..utils.permissions import is_bot_manage, self_member_info from ..utils.text import parse_seconds async def group_silence(bot: Bot, ev: GroupMessageEvent, gid: int, status: bool): """全员禁言(带权限检查)""" self_info = await self_member_info(bot, gid) if not is_bot_manage(self_info): await UniMessage.text("\n不给我管理员还想让我帮忙塞口球?做梦去吧!").send( at_sender=True ) return if not await check_manage(bot, ev): await UniMessage.text("只有狗管理才能给大家塞口球哦w").send(at_sender=True) return try: await bot.set_group_whole_ban(group_id=gid, enable=status) if status: await UniMessage.text("嘻嘻大家都被塞口球啦~").send() else: await UniMessage.text("全员禁言取消啦w").send() except Exception as e: await UniMessage.text(f"操作失败惹...\n错误代码:{e}").send(at_sender=True) async def member_silence( bot: Bot, ev: GroupMessageEvent, uid: int, sid: int, gid: int, time: str, silent: bool = False, ): """单人禁言(带权限检查;uid == sid 时为禁言自己)""" self_info = await self_member_info(bot, gid) if not is_bot_manage(self_info): await UniMessage.text("\n不给我管理员还想让我帮忙塞口球?做梦去吧!").send( at_sender=True ) return seconds = parse_seconds(time) if seconds is None: await UniMessage.text("憨批,时长都能输错?").send() return if uid != sid and not await check_manage(bot, ev): await UniMessage.text("只有管理员才可以给别人塞口球哦~").send(at_sender=True) return try: await bot.set_group_ban(group_id=gid, user_id=sid, duration=seconds) if seconds == 0: await UniMessage.at(user_id=str(sid)).text("的口球已经摘下来啦w").send() elif not silent: await UniMessage.at(user_id=str(sid)).text(f"成功禁言{seconds}秒~").send() except Exception as e: await UniMessage.text(f"口球失败惹呜呜呜...\n错误代码:{e}").send(at_sender=True) async def silence(bot: Bot, ev: MessageEvent, seconds: int) -> None: """禁言发送者自己 seconds 秒(娱乐用,bot 需具有群管理权限,静默执行)""" await member_silence( bot, ev, ev.user_id, ev.user_id, ev.group_id, str(seconds), silent=True )