Skip to content

Commit 28ddb81

Browse files
committed
feat(plugin.basic.send_msg): 新增主动发送消息/通知功能
1 parent 4464c3d commit 28ddb81

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

app/core/config.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class MadokaInfo:
1616
VERSION = "4.2.0"
1717
DOCS = "https://madoka.colsrch.cn"
1818
REPO = "https://github.com/MadokaProject/Madoka"
19-
REMOTE_REPO_VERSION = "v4"
19+
REMOTE_REPO_VERSION = "release"
2020
REMOTE_VERSION_URL = "https://raw.fastgit.org/MadokaProject/Madoka/master/app/util/version.json"
2121

2222

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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

Comments
 (0)