70 lines
2.6 KiB
Python
70 lines
2.6 KiB
Python
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
|
|
)
|