|
| 1 | +from arclet.alconna import AllParam |
| 2 | + |
| 3 | +from app.core.settings import ACTIVE_GROUP |
| 4 | +from app.util.alconna import Args, Arpamar, Commander, Option, Subcommand |
| 5 | +from app.util.control import Permission |
| 6 | +from app.util.graia import Ariadne, Friend, FriendMessage, message |
| 7 | + |
| 8 | +command = Commander( |
| 9 | + "send", |
| 10 | + "主动发送消息", |
| 11 | + Subcommand("friend", help_text="发送好友消息", args=Args["friend_id", int]), |
| 12 | + Subcommand("group", help_text="发送群组消息", args=Args["group_id", int]), |
| 13 | + Subcommand( |
| 14 | + "notice", |
| 15 | + help_text="发送通知(这将会向所有激活的群组发送通知)", |
| 16 | + options=[Option("--group|-g", help_text="只对某个群发送通知", args=Args["group_id", int])], |
| 17 | + ), |
| 18 | + Args["msg", AllParam], |
| 19 | + help_text="主动发送消息(仅主人可用,仅限私聊)", |
| 20 | +) |
| 21 | + |
| 22 | + |
| 23 | +@command.parse("friend", events=[FriendMessage], permission=Permission.MASTER) |
| 24 | +async def send_to_friend(app: Ariadne, sender: Friend, cmd: Arpamar): |
| 25 | + friend_id = cmd.query("friend_id") |
| 26 | + if friend := await app.get_friend(friend_id): |
| 27 | + message("\n".join(cmd.query("msg"))).target(friend).send() |
| 28 | + else: |
| 29 | + message(f"未找到好友: {friend_id}").target(sender).send() |
| 30 | + |
| 31 | + |
| 32 | +@command.parse("group", events=[FriendMessage], permission=Permission.MASTER) |
| 33 | +async def send_to_group(app: Ariadne, sender: Friend, cmd: Arpamar): |
| 34 | + group_id = cmd.query("group_id") |
| 35 | + if group := await app.get_group(group_id): |
| 36 | + message("\n".join(cmd.query("msg"))).target(group).send() |
| 37 | + else: |
| 38 | + message(f"未找到群组: {group_id}").target(sender).send() |
| 39 | + |
| 40 | + |
| 41 | +@command.parse("notice", events=[FriendMessage], permission=Permission.MASTER) |
| 42 | +async def send_notice(app: Ariadne, sender: Friend, cmd: Arpamar): |
| 43 | + msg = ("来自管理员的通知\n--------------------\n", "\n".join(cmd.query("msg"))) |
| 44 | + if group_id := cmd.query("group_id"): |
| 45 | + if group := await app.get_group(group_id): |
| 46 | + message(msg).target(group).send() |
| 47 | + else: |
| 48 | + message(f"未找到群组: {group_id}").target(sender).send() |
| 49 | + else: |
| 50 | + for group_id in ACTIVE_GROUP: |
| 51 | + message(msg).target(await app.get_group(group_id)).send() |
0 commit comments