Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ perf: 加群审批优化、指令优化 #139

Merged
merged 5 commits into from
Jan 2, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 34 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,25 +131,56 @@ send_time_night = "23 0" # 选填 晚上发送时间默认为22:00
超级用户删他人头衔:删头衔 @某人

【管理员】permission=SUPERUSER | GROUP_OWNER
gl+ @xxx 设置某人为管理员
管理员+ @xxx 设置某人为管理员
管理员加 @xxx 设置某人为管理员
加管理 @xxx 设置某人为管理员

gl- @xxx 取消某人管理员
管理员- @xxx 取消某人管理员
管理员减 @xxx 取消某人管理员
减管理 @xxx 取消某人管理员


【加群自动审批】:
群内发送 permission=GROUP_ADMIN | GROUP_OWNER | SUPERUSER
查看词条 : 查看本群审批词条 或/审批
ct+ [词条] :增加审批词条 或/审批+
词条+ [词条] :增加审批词条 或/审批+
ct- [词条] :删除审批词条 或/审批-
词条- [词条] :删除审批词条 或/审批-
按照黑名单自动拒绝:(当验证消息与黑名单内容匹配时,自动拒绝)
添加示例:
jj+管理员你好,请通过一下
ctjj+管理员你好,请通过一下
词条拒绝+管理员你好,请通过一下
拒绝词条+管理员你好,请通过一下
/spx+管理员你好,请通过一下
删除示例:
jj-管理员你好,请通过一下
ctjj-管理员你好,请通过一下
词条拒绝-管理员你好,请通过一下
拒绝词条-管理员你好,请通过一下
/spx-管理员你好,请通过一下

【superuser】:
所有词条 : 查看所有审批词条 或/su审批
指定词条+ [群号] [词条] :增加指定群审批词条 或/su审批+
指定词条- [群号] [词条] :删除指定群审批词条 或/su审批-
zdct+ [词条] :增加审批词条
指定词条+ [群号] [词条] :增加指定群审批词条
指定词条加 [群号] [词条] :增加指定群审批词条 或/su审批+
zdct- [词条] :删除审批词条
指定词条- [群号] [词条] :删除指定群审批词条
指定词条减 [群号] [词条] :删除指定群审批词条 或/su审批-
自动审批处理结果将发送给superuser

【分群管理员设置】*分管:可以接受加群处理结果消息的用户
群内发送 permission=GROUP_ADMIN | GROUP_OWNER | SUPERUSER
fg+ [user] :user可用@或qq 添加分群管理员
分管+ [user] :user可用@或qq 添加分群管理员
分管加 [user] :user可用@或qq 添加分群管理员
fg- [user] :删除分群管理员
分管- [user] :删除分群管理员
分管减 [user] :删除分群管理员
查看分管 :查看本群分群管理员

群内或私聊 permission=SUPERUSER
Expand Down Expand Up @@ -196,6 +227,7 @@ send_time_night = "23 0" # 选填 晚上发送时间默认为22:00
}

违禁词检测:
(如果要使用正则匹配,暂时需要用户自定编辑【机器人项目/config/违禁词.txt】,后续会优化,有需要请提issue催更)
- 支持正则表达式(使用用制表符分隔)
- 可定义触发违禁词操作(默认为禁言+撤回)
- 可定义生效范围(排除某些群 or 仅限某些群生效)
Expand Down
95 changes: 64 additions & 31 deletions nonebot_plugin_admin/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,73 +46,104 @@ async def _(bot: nonebot.adapters.Bot):
群管初始化 :初始化插件

【群管】:
权限:permission = SUPERUSER | GROUP_ADMIN | GROUP_OWNER
权限:permission=SUPERUSER | GROUP_ADMIN | GROUP_OWNER
禁言:
禁 @某人 时间(s)[1,2591999]
禁 时间(s)@某人 [1,2591999]
禁 @某人 缺省时间则随机
禁 @某人 0 可解禁
解 @某人
禁言时,该条消息中所有数字都会组合作为禁言时间,如:‘禁@某人 1哈2哈0哈’,则禁言120s

全群禁言 若命令前缀不为空,请使用//all,若为空,需用 /all 来触发
/all
/all
/all 解

改名片
改 @某人 名片

踢出:
踢 @某人
踢出并拉黑:
黑 @某人

撤回:
撤回 (回复某条消息即可撤回对应消息)
撤回 @user [(可选,默认n=5)历史消息倍数n] (实际检查的历史数为 n*19)

设置精华
回复某条消息 + 加精
取消精华
回复某条消息 + 取消精华

【头衔】
改头衔
自助领取:头衔 xxx
自助领取:头衔 xxx
自助删头衔:删头衔
超级用户更改他人头衔:头衔 @某人 头衔
超级用户删他人头衔:删头衔 @某人

【管理员】permission = SUPERUSER | GROUP_OWNER
【管理员】permission=SUPERUSER | GROUP_OWNER
gl+ @xxx 设置某人为管理员
管理员+ @xxx 设置某人为管理员
管理员加 @xxx 设置某人为管理员
加管理 @xxx 设置某人为管理员

gl- @xxx 取消某人管理员
管理员- @xxx 取消某人管理员
管理员减 @xxx 取消某人管理员
减管理 @xxx 取消某人管理员


【加群自动审批】:
群内发送 permission = GROUP_ADMIN | GROUP_OWNER | SUPERUSER
群内发送 permission=GROUP_ADMIN | GROUP_OWNER | SUPERUSER
查看词条 : 查看本群审批词条 或/审批
ct+ [词条] :增加审批词条 或/审批+
词条+ [词条] :增加审批词条 或/审批+
ct- [词条] :删除审批词条 或/审批-
词条- [词条] :删除审批词条 或/审批-
按照黑名单自动拒绝:(当验证消息与黑名单内容匹配时,自动拒绝)
添加示例:
jj+管理员你好,请通过一下
ctjj+管理员你好,请通过一下
词条拒绝+管理员你好,请通过一下
拒绝词条+管理员你好,请通过一下
/spx+管理员你好,请通过一下
删除示例:
jj-管理员你好,请通过一下
ctjj-管理员你好,请通过一下
词条拒绝-管理员你好,请通过一下
拒绝词条-管理员你好,请通过一下
/spx-管理员你好,请通过一下

【superuser】:
所有词条 : 查看所有审批词条 或/su审批
指定词条+ [群号] [词条] :增加指定群审批词条 或/su审批+
指定词条- [群号] [词条] :删除指定群审批词条 或/su审批-
zdct+ [词条] :增加审批词条
指定词条+ [群号] [词条] :增加指定群审批词条
指定词条加 [群号] [词条] :增加指定群审批词条 或/su审批+
zdct- [词条] :删除审批词条
指定词条- [群号] [词条] :删除指定群审批词条
指定词条减 [群号] [词条] :删除指定群审批词条 或/su审批-
自动审批处理结果将发送给superuser

【分群管理员设置】*分管:可以接受加群处理结果消息的用户
群内发送 permission = GROUP_ADMIN | GROUP_OWNER | SUPERUSER
群内发送 permission=GROUP_ADMIN | GROUP_OWNER | SUPERUSER
fg+ [user] :user可用@或qq 添加分群管理员
分管+ [user] :user可用@或qq 添加分群管理员
分管加 [user] :user可用@或qq 添加分群管理员
fg- [user] :删除分群管理员
分管- [user] :删除分群管理员
分管减 [user] :删除分群管理员
查看分管 :查看本群分群管理员

群内或私聊 permission = SUPERUSER
群内或私聊 permission=SUPERUSER
所有分管 :查看所有分群管理员
群管接收 :打开或关闭超管消息接收(关闭则审批结果不会发送给superusers)

【群词云统计】
该功能所用库 wordcloud 未写入依赖,请自行安装
群内发送:
记录本群 : 开始统计聊天记录 permission = GROUP_ADMIN | GROUP_OWNER | SUPERUSER
记录本群 : 开始统计聊天记录 permission=GROUP_ADMIN | GROUP_OWNER | SUPERUSER
停止记录本群 :停止统计聊天记录
群词云 : 发送词云图片
更新mask : 更新mask图片
Expand All @@ -130,8 +161,8 @@ async def _(bot: nonebot.adapters.Bot):
- 某人发言数
- 日:今日发言数@xxx, aliases={'今日发言数', '今日发言', '今日发言量'}
- 总:发言数@xxx, aliases={'发言数', '发言', '发言量'}


【被动识别】
涩图检测:
- 图片检测偏向于涩图检测,90分以上色图禁言,其他基本不处理
Expand All @@ -149,16 +180,17 @@ async def _(bot: nonebot.adapters.Bot):
}

违禁词检测:
(如果要使用正则匹配,暂时需要用户自定编辑【机器人项目/config/违禁词.txt】,后续会优化,有需要请提issue催更)
- 支持正则表达式(使用用制表符分隔)
- 可定义触发违禁词操作(默认为禁言+撤回)
- 可定义生效范围(排除某些群 or 仅限某些群生效)
- 示例(使用TAB隔开)
- 加(群|君\\S?羊|羣)\\S*\\d{6,} $撤回$禁言$仅限123456789,987654321
- 狗群主 $禁言$排除987654321
- 示例:
- 加(群|君\S?羊|羣)\S*\d{6,} $撤回$禁言$仅限123456789,987654321
- 狗群主 $禁言$排除987654321

【功能开关】
群内发送:
开关xx : 对某功能进行开/关 permission = SUPERUSER | GROUP_ADMIN | GROUP_OWNER
开关xx : 对某功能进行开/关 permission=SUPERUSER | GROUP_ADMIN | GROUP_OWNER
开关状态 : 查看各功能的状态
xx in :
['管理', '踢', '禁', '改', '基础群管'] #基础功能 踢、禁、改、管理员+-
Expand All @@ -175,30 +207,31 @@ async def _(bot: nonebot.adapters.Bot):

【广播】permission = SUPERUSER
本功能默认关闭
"发送【广播】/【广播+[消息]】可广播消息"
"发送【群列表】可查看能广播到的所有群"
"发送【排除列表】可查看已排除的群"
"发送【广播排除+】可添加群到广播排除列表"
"发送【广播】/【广播+[消息]】可广播消息"
"发送【群列表】可查看能广播到的所有群"
"发送【排除列表】可查看已排除的群"
"发送【广播排除+】可添加群到广播排除列表"
"发送【广播排除-】可从广播排除列表删除群"
"发送【广播帮助】可查看广播帮助"
发送【开关广播】来开启/关闭(意义不大)

【特殊事件提醒】
包括管理员变动,加群退群等...
待完善
发送【开关事件通知】来开启/关闭功能 permission = SUPERUSER | GROUP_ADMIN | GROUP_OWNER
发送【开关事件通知】来开启/关闭功能 permission=SUPERUSER | GROUP_ADMIN | GROUP_OWNER


【防撤回】
默认关闭
发送【开关防撤回】开启或关闭功能 permission = SUPERUSER | GROUP_ADMIN | GROUP_OWNER
发送【开关防撤回】开启或关闭功能 permission=SUPERUSER | GROUP_ADMIN | GROUP_OWNER

【群员清理】
群内发送 permission = SUPERUSER | GROUP_ADMIN | GROUP_OWNER | DEPUTY_ADMIN
群内发送 permission=SUPERUSER | GROUP_OWNER
该功能暂不被开关控制
发送【群员清理】可根据[等级] 或 [发言时间] 清理群员
在执行此命令时,当前群会对此操作加锁,防止其他人同时操作,如果出现问题,可执行【清理解锁】来手动解锁


"""
__help_plugin_name__ = '简易群管'

Expand Down
4 changes: 2 additions & 2 deletions nonebot_plugin_admin/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ async def _(bot: Bot, matcher: Matcher, event: GroupMessageEvent, sb: list = Dep
except ActionFailed:
await fi(matcher, '权限不足')

set_g_admin = on_command('管理员+', priority=2, block=True, permission=SUPERUSER | GROUP_OWNER)
set_g_admin = on_command('管理员+', aliases={'加管理', '管理加', '加管理员', '管理员加', 'gl+', 'gly+'}, priority=2, block=True, permission=SUPERUSER | GROUP_OWNER)
@set_g_admin.handle()
async def _(bot: Bot, matcher: Matcher, event: GroupMessageEvent, sb: list = Depends(msg_at)):
"""
Expand All @@ -196,7 +196,7 @@ async def _(bot: Bot, matcher: Matcher, event: GroupMessageEvent, sb: list = Dep
except ActionFailed:
await fi(matcher, '权限不足')

unset_g_admin = on_command('管理员-', priority=2, block=True, permission=SUPERUSER | GROUP_OWNER)
unset_g_admin = on_command('管理员-', aliases={'减管理', '管理减', '减管理员', '管理员减', 'gl-', 'gly-'}, priority=2, block=True, permission=SUPERUSER | GROUP_OWNER)
@unset_g_admin.handle()
async def _(bot: Bot, matcher: Matcher, event: GroupMessageEvent, sb: list = Depends(msg_at)):
"""
Expand Down
4 changes: 4 additions & 0 deletions nonebot_plugin_admin/admin_role.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,15 @@

from .approve import g_admin


async def _deputy_admin(event: GroupMessageEvent) -> bool:
admins = g_admin()
gid = str(event.group_id)
if admins.get(gid):
return event.user_id in admins[gid]
else:
return False


DEPUTY_ADMIN: Permission = Permission(_deputy_admin)
"""匹配分管事件"""
4 changes: 2 additions & 2 deletions nonebot_plugin_admin/notice.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ async def _(matcher: Matcher):
await matcher.finish(str(admins))

# 添加分群管理员
g_admin = on_command('分管+', priority=2, aliases={'/gad+', '分群管理+'}, block=True,
g_admin = on_command('分管+', priority=2, aliases={'/gad+', '分群管理+', '分管加', '分群管理加', 'fg+'}, block=True,
permission=GROUP_ADMIN | GROUP_OWNER | SUPERUSER)
@g_admin.handle()
async def _(matcher: Matcher, event: GroupMessageEvent, state: T_State, sb: list = Depends(msg_at)):
Expand Down Expand Up @@ -67,7 +67,7 @@ async def _(matcher: Matcher):
await matcher.finish('已开启审批消息接收' if status else '已关闭审批消息接收')

# 删除分群管理
g_admin_ = on_command('分管-', priority=2, aliases={'/gad-', '分群管理-'}, block=True,
g_admin_ = on_command('分管-', priority=2, aliases={'/gad-', '分群管理-', '分管减', '分群管理减', 'fg-'}, block=True,
permission=GROUP_ADMIN | GROUP_OWNER | SUPERUSER)
@g_admin_.handle()
async def _(matcher: Matcher, event: GroupMessageEvent, state: T_State, sb: list = Depends(msg_at)):
Expand Down
1 change: 1 addition & 0 deletions nonebot_plugin_admin/path.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
ttf_path = Path() / 'resource' / 'msyhblod.ttf'
summary_path = config_path / 'summary'
kick_lock_path = config_path / 'kick_lock'
appr_bk = config_path / '加群验证信息黑名单.json'

admin_funcs = {
'admin': ['管理', '踢', '禁', '改', '基础群管'],
Expand Down
Loading