satori-python-adapter-onebot11 0.3.3__tar.gz → 0.4.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {satori_python_adapter_onebot11-0.3.3 → satori_python_adapter_onebot11-0.4.1}/.mina/adapter_onebot11.toml +2 -2
- {satori_python_adapter_onebot11-0.3.3 → satori_python_adapter_onebot11-0.4.1}/PKG-INFO +9 -9
- {satori_python_adapter_onebot11-0.3.3 → satori_python_adapter_onebot11-0.4.1}/README.md +7 -7
- {satori_python_adapter_onebot11-0.3.3 → satori_python_adapter_onebot11-0.4.1}/pyproject.toml +2 -2
- {satori_python_adapter_onebot11-0.3.3 → satori_python_adapter_onebot11-0.4.1}/src/satori/adapters/onebot11/api.py +39 -21
- {satori_python_adapter_onebot11-0.3.3 → satori_python_adapter_onebot11-0.4.1}/src/satori/adapters/onebot11/events/message.py +9 -4
- {satori_python_adapter_onebot11-0.3.3 → satori_python_adapter_onebot11-0.4.1}/src/satori/adapters/onebot11/events/notice.py +25 -12
- {satori_python_adapter_onebot11-0.3.3 → satori_python_adapter_onebot11-0.4.1}/src/satori/adapters/onebot11/message.py +9 -2
- {satori_python_adapter_onebot11-0.3.3 → satori_python_adapter_onebot11-0.4.1}/LICENSE +0 -0
- {satori_python_adapter_onebot11-0.3.3 → satori_python_adapter_onebot11-0.4.1}/src/satori/adapters/onebot11/__init__.py +0 -0
- {satori_python_adapter_onebot11-0.3.3 → satori_python_adapter_onebot11-0.4.1}/src/satori/adapters/onebot11/events/__init__.py +0 -0
- {satori_python_adapter_onebot11-0.3.3 → satori_python_adapter_onebot11-0.4.1}/src/satori/adapters/onebot11/events/base.py +0 -0
- {satori_python_adapter_onebot11-0.3.3 → satori_python_adapter_onebot11-0.4.1}/src/satori/adapters/onebot11/events/request.py +0 -0
- {satori_python_adapter_onebot11-0.3.3 → satori_python_adapter_onebot11-0.4.1}/src/satori/adapters/onebot11/forward.py +0 -0
- {satori_python_adapter_onebot11-0.3.3 → satori_python_adapter_onebot11-0.4.1}/src/satori/adapters/onebot11/reverse.py +0 -0
- {satori_python_adapter_onebot11-0.3.3 → satori_python_adapter_onebot11-0.4.1}/src/satori/adapters/onebot11/utils.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
includes = ["src/satori/adapters/onebot11"]
|
|
2
|
-
raw-dependencies = ["satori-python-server
|
|
2
|
+
raw-dependencies = ["satori-python-server<1.4.0,>= 1.3.0"]
|
|
3
3
|
|
|
4
4
|
[project]
|
|
5
5
|
name = "satori-python-adapter-onebot11"
|
|
6
|
-
version = "0.
|
|
6
|
+
version = "0.4.1"
|
|
7
7
|
authors = [
|
|
8
8
|
{name = "RF-Tar-Railt", email = "rf_tar_railt@qq.com"}
|
|
9
9
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: satori-python-adapter-onebot11
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.1
|
|
4
4
|
Summary: Satori Protocol SDK for python, adapter for OneBot 11
|
|
5
5
|
Home-page: https://github.com/RF-Tar-Railt/satori-python
|
|
6
6
|
Author-Email: RF-Tar-Railt <rf_tar_railt@qq.com>
|
|
@@ -17,7 +17,7 @@ Classifier: Operating System :: OS Independent
|
|
|
17
17
|
Project-URL: Homepage, https://github.com/RF-Tar-Railt/satori-python
|
|
18
18
|
Project-URL: Repository, https://github.com/RF-Tar-Railt/satori-python
|
|
19
19
|
Requires-Python: <4.0,>=3.10
|
|
20
|
-
Requires-Dist: satori-python-server
|
|
20
|
+
Requires-Dist: satori-python-server<1.4.0,>=1.3.0
|
|
21
21
|
Description-Content-Type: text/markdown
|
|
22
22
|
|
|
23
23
|
# satori-python
|
|
@@ -70,13 +70,13 @@ pip install satori-python-server
|
|
|
70
70
|
|
|
71
71
|
### 官方适配器
|
|
72
72
|
|
|
73
|
-
| 适配器 | 安装 | 路径
|
|
74
|
-
|
|
75
|
-
| Satori | `pip install satori-python-adapter-satori` | satori.adapters.satori
|
|
76
|
-
| OneBot V11 | `pip install satori-python-adapter-onebot11` | satori.adapters.onebot11.forward, satori.adapters.onebot11.reverse
|
|
77
|
-
| Console | `pip install satori-python-adapter-console` | satori.adapters.console
|
|
78
|
-
| Milky | `pip install satori-python-adapter-milky` | satori.adapters.milky.main, satori.adapters.milky.webhook
|
|
79
|
-
| QQ | `pip install satori-python-adapter-qq` | satori.adapters.qq.main, satori.adapters.qq.websocket
|
|
73
|
+
| 适配器 | 安装 | 路径 |
|
|
74
|
+
|------------|----------------------------------------------|--------------------------------------------------------------------------------------|
|
|
75
|
+
| Satori | `pip install satori-python-adapter-satori` | satori.adapters.satori |
|
|
76
|
+
| OneBot V11 | `pip install satori-python-adapter-onebot11` | satori.adapters.onebot11.forward, satori.adapters.onebot11.reverse |
|
|
77
|
+
| Console | `pip install satori-python-adapter-console` | satori.adapters.console |
|
|
78
|
+
| Milky | `pip install satori-python-adapter-milky` | satori.adapters.milky.main, satori.adapters.milky.webhook, satori.adapters.milky.sse |
|
|
79
|
+
| QQ | `pip install satori-python-adapter-qq` | satori.adapters.qq.main, satori.adapters.qq.websocket |
|
|
80
80
|
|
|
81
81
|
### 社区适配器
|
|
82
82
|
|
|
@@ -48,13 +48,13 @@ pip install satori-python-server
|
|
|
48
48
|
|
|
49
49
|
### 官方适配器
|
|
50
50
|
|
|
51
|
-
| 适配器 | 安装 | 路径
|
|
52
|
-
|
|
53
|
-
| Satori | `pip install satori-python-adapter-satori` | satori.adapters.satori
|
|
54
|
-
| OneBot V11 | `pip install satori-python-adapter-onebot11` | satori.adapters.onebot11.forward, satori.adapters.onebot11.reverse
|
|
55
|
-
| Console | `pip install satori-python-adapter-console` | satori.adapters.console
|
|
56
|
-
| Milky | `pip install satori-python-adapter-milky` | satori.adapters.milky.main, satori.adapters.milky.webhook
|
|
57
|
-
| QQ | `pip install satori-python-adapter-qq` | satori.adapters.qq.main, satori.adapters.qq.websocket
|
|
51
|
+
| 适配器 | 安装 | 路径 |
|
|
52
|
+
|------------|----------------------------------------------|--------------------------------------------------------------------------------------|
|
|
53
|
+
| Satori | `pip install satori-python-adapter-satori` | satori.adapters.satori |
|
|
54
|
+
| OneBot V11 | `pip install satori-python-adapter-onebot11` | satori.adapters.onebot11.forward, satori.adapters.onebot11.reverse |
|
|
55
|
+
| Console | `pip install satori-python-adapter-console` | satori.adapters.console |
|
|
56
|
+
| Milky | `pip install satori-python-adapter-milky` | satori.adapters.milky.main, satori.adapters.milky.webhook, satori.adapters.milky.sse |
|
|
57
|
+
| QQ | `pip install satori-python-adapter-qq` | satori.adapters.qq.main, satori.adapters.qq.websocket |
|
|
58
58
|
|
|
59
59
|
### 社区适配器
|
|
60
60
|
|
{satori_python_adapter_onebot11-0.3.3 → satori_python_adapter_onebot11-0.4.1}/pyproject.toml
RENAMED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "satori-python-adapter-onebot11"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.4.1"
|
|
4
4
|
authors = [
|
|
5
5
|
{ name = "RF-Tar-Railt", email = "rf_tar_railt@qq.com" },
|
|
6
6
|
]
|
|
7
7
|
dependencies = [
|
|
8
|
-
"satori-python-server
|
|
8
|
+
"satori-python-server<1.4.0,>= 1.3.0",
|
|
9
9
|
]
|
|
10
10
|
description = "Satori Protocol SDK for python, adapter for OneBot 11"
|
|
11
11
|
readme = "README.md"
|
|
@@ -5,13 +5,13 @@ from satori import Api
|
|
|
5
5
|
from satori.model import (
|
|
6
6
|
Channel,
|
|
7
7
|
ChannelType,
|
|
8
|
+
Friend,
|
|
8
9
|
Guild,
|
|
9
10
|
Login,
|
|
10
11
|
Member,
|
|
11
12
|
MessageObject,
|
|
12
13
|
PageDequeResult,
|
|
13
14
|
PageResult,
|
|
14
|
-
Role,
|
|
15
15
|
User,
|
|
16
16
|
)
|
|
17
17
|
from satori.server import Adapter, Request
|
|
@@ -35,11 +35,11 @@ from satori.server.route import (
|
|
|
35
35
|
ReactionCreateParam,
|
|
36
36
|
ReactionDeleteParam,
|
|
37
37
|
UserChannelCreateParam,
|
|
38
|
-
|
|
38
|
+
UserOpParam,
|
|
39
39
|
)
|
|
40
40
|
|
|
41
41
|
from .message import OneBot11MessageEncoder, decode
|
|
42
|
-
from .utils import GROUP_AVATAR_URL, USER_AVATAR_URL, OneBotNetwork
|
|
42
|
+
from .utils import GROUP_AVATAR_URL, ROLE_MAPPING, USER_AVATAR_URL, OneBotNetwork
|
|
43
43
|
|
|
44
44
|
|
|
45
45
|
def apply(adapter: Adapter, net_getter: Callable[[str], OneBotNetwork], login_getter: Callable[[str], Login]):
|
|
@@ -355,7 +355,7 @@ def apply(adapter: Adapter, net_getter: Callable[[str], OneBotNetwork], login_ge
|
|
|
355
355
|
{
|
|
356
356
|
"group_id": int(request.params["guild_id"]),
|
|
357
357
|
"user_id": int(request.params["user_id"]),
|
|
358
|
-
"enable": request.params["role_id"] == "
|
|
358
|
+
"enable": request.params["role_id"] == "admin",
|
|
359
359
|
},
|
|
360
360
|
)
|
|
361
361
|
return
|
|
@@ -368,17 +368,17 @@ def apply(adapter: Adapter, net_getter: Callable[[str], OneBotNetwork], login_ge
|
|
|
368
368
|
{
|
|
369
369
|
"group_id": int(request.params["guild_id"]),
|
|
370
370
|
"user_id": int(request.params["user_id"]),
|
|
371
|
-
"enable": request.params["role_id"] != "
|
|
371
|
+
"enable": request.params["role_id"] != "admin",
|
|
372
372
|
},
|
|
373
373
|
)
|
|
374
374
|
return
|
|
375
375
|
|
|
376
376
|
@adapter.route(Api.GUILD_ROLE_LIST)
|
|
377
377
|
async def guild_role_list(request: Request[GuildXXXListParam]):
|
|
378
|
-
return PageResult(
|
|
378
|
+
return PageResult(list(ROLE_MAPPING.values()))
|
|
379
379
|
|
|
380
380
|
@adapter.route(Api.USER_GET)
|
|
381
|
-
async def user_get(request: Request[
|
|
381
|
+
async def user_get(request: Request[UserOpParam]):
|
|
382
382
|
net = net_getter(request.self_id)
|
|
383
383
|
result = await net.call_api("get_stranger_info", {"user_id": int(request.params["user_id"])})
|
|
384
384
|
if not result:
|
|
@@ -396,11 +396,13 @@ def apply(adapter: Adapter, net_getter: Callable[[str], OneBotNetwork], login_ge
|
|
|
396
396
|
result: list[dict] = await net.call_api("get_friend_list", {}) # type: ignore
|
|
397
397
|
return PageResult(
|
|
398
398
|
[
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
399
|
+
Friend(
|
|
400
|
+
User(
|
|
401
|
+
str(item["user_id"]),
|
|
402
|
+
item["nickname"],
|
|
403
|
+
USER_AVATAR_URL.format(uin=item["user_id"]),
|
|
404
|
+
),
|
|
402
405
|
item.get("remark"),
|
|
403
|
-
USER_AVATAR_URL.format(uin=item["user_id"]),
|
|
404
406
|
)
|
|
405
407
|
for item in result
|
|
406
408
|
]
|
|
@@ -457,7 +459,7 @@ def apply(adapter: Adapter, net_getter: Callable[[str], OneBotNetwork], login_ge
|
|
|
457
459
|
"set_msg_emoji_like",
|
|
458
460
|
{
|
|
459
461
|
"message_id": int(request.params["message_id"]),
|
|
460
|
-
"emoji": request.params["
|
|
462
|
+
"emoji": request.params["emoji_id"],
|
|
461
463
|
},
|
|
462
464
|
)
|
|
463
465
|
elif app_name == "Lagrange.OneBot" and not channel_id.startswith("private:"):
|
|
@@ -466,7 +468,7 @@ def apply(adapter: Adapter, net_getter: Callable[[str], OneBotNetwork], login_ge
|
|
|
466
468
|
{
|
|
467
469
|
"group_id": int(channel_id),
|
|
468
470
|
"message_id": int(request.params["message_id"]),
|
|
469
|
-
"code": request.params["
|
|
471
|
+
"code": request.params["emoji_id"],
|
|
470
472
|
"is_add": True,
|
|
471
473
|
},
|
|
472
474
|
)
|
|
@@ -475,18 +477,26 @@ def apply(adapter: Adapter, net_getter: Callable[[str], OneBotNetwork], login_ge
|
|
|
475
477
|
"set_msg_emoji_like",
|
|
476
478
|
{
|
|
477
479
|
"message_id": int(request.params["message_id"]),
|
|
478
|
-
"emoji_id": request.params["
|
|
480
|
+
"emoji_id": request.params["emoji_id"],
|
|
479
481
|
"set": True,
|
|
480
482
|
},
|
|
481
483
|
)
|
|
482
484
|
elif app_name == "ws-plugin" and not channel_id.startswith("private:"):
|
|
483
|
-
|
|
485
|
+
emoji_id = request.params["emoji_id"]
|
|
486
|
+
if ":" in emoji_id:
|
|
487
|
+
# custom emoji, format: {type}:{id}
|
|
488
|
+
emj_type_str, emj_id_str = emoji_id.split(":", 1)
|
|
489
|
+
emj_type = int(emj_type_str)
|
|
490
|
+
emj_id = int(emj_id_str)
|
|
491
|
+
else:
|
|
492
|
+
emj_id = int(emoji_id)
|
|
493
|
+
emj_type = 1 if emj_id < 5000 else 2
|
|
484
494
|
await net.call_api(
|
|
485
495
|
"set_reaction",
|
|
486
496
|
{
|
|
487
497
|
"group_id": int(channel_id),
|
|
488
498
|
"message_seq": int(request.params["message_id"]),
|
|
489
|
-
"code":
|
|
499
|
+
"code": emj_id,
|
|
490
500
|
"is_add": True,
|
|
491
501
|
"type": emj_type,
|
|
492
502
|
},
|
|
@@ -504,7 +514,7 @@ def apply(adapter: Adapter, net_getter: Callable[[str], OneBotNetwork], login_ge
|
|
|
504
514
|
"unset_msg_emoji_like",
|
|
505
515
|
{
|
|
506
516
|
"message_id": int(request.params["message_id"]),
|
|
507
|
-
"emoji": request.params["
|
|
517
|
+
"emoji": request.params["emoji_id"],
|
|
508
518
|
},
|
|
509
519
|
)
|
|
510
520
|
elif app_name == "Lagrange.OneBot" and not channel_id.startswith("private:"):
|
|
@@ -513,7 +523,7 @@ def apply(adapter: Adapter, net_getter: Callable[[str], OneBotNetwork], login_ge
|
|
|
513
523
|
{
|
|
514
524
|
"group_id": int(channel_id),
|
|
515
525
|
"message_id": int(request.params["message_id"]),
|
|
516
|
-
"code": request.params["
|
|
526
|
+
"code": request.params["emoji_id"],
|
|
517
527
|
"is_add": False,
|
|
518
528
|
},
|
|
519
529
|
)
|
|
@@ -522,18 +532,26 @@ def apply(adapter: Adapter, net_getter: Callable[[str], OneBotNetwork], login_ge
|
|
|
522
532
|
"set_msg_emoji_like",
|
|
523
533
|
{
|
|
524
534
|
"message_id": int(request.params["message_id"]),
|
|
525
|
-
"emoji": request.params["
|
|
535
|
+
"emoji": request.params["emoji_id"],
|
|
526
536
|
"set": False,
|
|
527
537
|
},
|
|
528
538
|
)
|
|
529
539
|
elif app_name == "ws-plugin" and not channel_id.startswith("private:"):
|
|
530
|
-
|
|
540
|
+
emoji_id = request.params["emoji_id"]
|
|
541
|
+
if ":" in emoji_id:
|
|
542
|
+
# custom emoji, format: {type}:{id}
|
|
543
|
+
emj_type_str, emj_id_str = emoji_id.split(":", 1)
|
|
544
|
+
emj_type = int(emj_type_str)
|
|
545
|
+
emj_id = int(emj_id_str)
|
|
546
|
+
else:
|
|
547
|
+
emj_id = int(emoji_id)
|
|
548
|
+
emj_type = 1 if emj_id < 5000 else 2
|
|
531
549
|
await net.call_api(
|
|
532
550
|
"set_reaction",
|
|
533
551
|
{
|
|
534
552
|
"group_id": int(channel_id),
|
|
535
553
|
"message_seq": int(request.params["message_id"]),
|
|
536
|
-
"code":
|
|
554
|
+
"code": emj_id,
|
|
537
555
|
"is_add": False,
|
|
538
556
|
"type": emj_type,
|
|
539
557
|
},
|
|
@@ -80,7 +80,9 @@ async def group(login: Login, net: OneBotNetwork, raw: dict):
|
|
|
80
80
|
member_info = await net.call_api(
|
|
81
81
|
"get_group_member_info", {"group_id": raw["group_id"], "user_id": sender["user_id"]}
|
|
82
82
|
)
|
|
83
|
-
member = Member(
|
|
83
|
+
member = Member(
|
|
84
|
+
user, member_info["card"], USER_AVATAR_URL.format(uin=sender["user_id"]), roles=[ROLE_MAPPING[sender["role"]]]
|
|
85
|
+
)
|
|
84
86
|
guild = Guild(
|
|
85
87
|
str(raw["group_id"]), group_info.get("group_name"), avatar=GROUP_AVATAR_URL.format(group=raw["group_id"])
|
|
86
88
|
)
|
|
@@ -93,7 +95,6 @@ async def group(login: Login, net: OneBotNetwork, raw: dict):
|
|
|
93
95
|
guild=guild,
|
|
94
96
|
channel=channel,
|
|
95
97
|
member=member,
|
|
96
|
-
role=ROLE_MAPPING[sender["role"]],
|
|
97
98
|
message=MessageObject(str(raw["message_id"]), await decode(raw["message"], net)),
|
|
98
99
|
)
|
|
99
100
|
|
|
@@ -111,7 +112,12 @@ async def group_message_recall(login: Login, net: OneBotNetwork, raw: dict):
|
|
|
111
112
|
member_info.get("card"),
|
|
112
113
|
USER_AVATAR_URL.format(uin=raw["user_id"]),
|
|
113
114
|
)
|
|
114
|
-
member = Member(
|
|
115
|
+
member = Member(
|
|
116
|
+
user,
|
|
117
|
+
member_info.get("card"),
|
|
118
|
+
USER_AVATAR_URL.format(uin=raw["user_id"]),
|
|
119
|
+
roles=[ROLE_MAPPING[member_info["role"]]],
|
|
120
|
+
)
|
|
115
121
|
guild = Guild(
|
|
116
122
|
str(raw["group_id"]), group_info.get("group_name"), avatar=GROUP_AVATAR_URL.format(group=raw["group_id"])
|
|
117
123
|
)
|
|
@@ -131,6 +137,5 @@ async def group_message_recall(login: Login, net: OneBotNetwork, raw: dict):
|
|
|
131
137
|
channel=channel,
|
|
132
138
|
member=member,
|
|
133
139
|
operator=operator,
|
|
134
|
-
role=ROLE_MAPPING[member_info["role"]],
|
|
135
140
|
message=MessageObject(str(raw["message_id"]), ""),
|
|
136
141
|
)
|
|
@@ -179,8 +179,12 @@ async def group_admin_set(login: Login, net: OneBotNetwork, raw: dict):
|
|
|
179
179
|
)
|
|
180
180
|
channel = Channel(str(raw["group_id"]), ChannelType.TEXT, group_info.get("group_name"))
|
|
181
181
|
user = User(str(raw["user_id"]), member_info["nickname"], avatar=USER_AVATAR_URL.format(uin=raw["user_id"]))
|
|
182
|
-
member = Member(
|
|
183
|
-
|
|
182
|
+
member = Member(
|
|
183
|
+
user,
|
|
184
|
+
member_info.get("card"),
|
|
185
|
+
avatar=USER_AVATAR_URL.format(uin=raw["user_id"]),
|
|
186
|
+
roles=[Role("ADMINISTRATOR", "管理员")],
|
|
187
|
+
)
|
|
184
188
|
return Event(
|
|
185
189
|
EventType.GUILD_MEMBER_UPDATED,
|
|
186
190
|
datetime.now(),
|
|
@@ -189,7 +193,6 @@ async def group_admin_set(login: Login, net: OneBotNetwork, raw: dict):
|
|
|
189
193
|
member=member,
|
|
190
194
|
guild=guild,
|
|
191
195
|
channel=channel,
|
|
192
|
-
role=role,
|
|
193
196
|
)
|
|
194
197
|
|
|
195
198
|
|
|
@@ -202,8 +205,12 @@ async def group_admin_unset(login: Login, net: OneBotNetwork, raw: dict):
|
|
|
202
205
|
)
|
|
203
206
|
channel = Channel(str(raw["group_id"]), ChannelType.TEXT, group_info.get("group_name"))
|
|
204
207
|
user = User(str(raw["user_id"]), member_info["nickname"], avatar=USER_AVATAR_URL.format(uin=raw["user_id"]))
|
|
205
|
-
member = Member(
|
|
206
|
-
|
|
208
|
+
member = Member(
|
|
209
|
+
user,
|
|
210
|
+
member_info.get("card"),
|
|
211
|
+
avatar=USER_AVATAR_URL.format(uin=raw["user_id"]),
|
|
212
|
+
roles=[Role("MEMBER", "群成员")],
|
|
213
|
+
)
|
|
207
214
|
return Event(
|
|
208
215
|
EventType.GUILD_MEMBER_UPDATED,
|
|
209
216
|
datetime.now(),
|
|
@@ -212,7 +219,6 @@ async def group_admin_unset(login: Login, net: OneBotNetwork, raw: dict):
|
|
|
212
219
|
member=member,
|
|
213
220
|
guild=guild,
|
|
214
221
|
channel=channel,
|
|
215
|
-
role=role,
|
|
216
222
|
)
|
|
217
223
|
|
|
218
224
|
|
|
@@ -267,7 +273,10 @@ async def member_kick_me(login: Login, net: OneBotNetwork, raw: dict):
|
|
|
267
273
|
"get_group_member_info", {"group_id": raw["group_id"], "user_id": raw["operator_id"]}
|
|
268
274
|
)
|
|
269
275
|
member = Member(
|
|
270
|
-
login.user,
|
|
276
|
+
login.user,
|
|
277
|
+
member_info.get("card", member_info["nickname"]),
|
|
278
|
+
USER_AVATAR_URL.format(uin=raw["user_id"]),
|
|
279
|
+
roles=[ROLE_MAPPING[member_info["role"]]],
|
|
271
280
|
)
|
|
272
281
|
guild = Guild(
|
|
273
282
|
str(raw["group_id"]), group_info.get("group_name"), avatar=GROUP_AVATAR_URL.format(group=raw["group_id"])
|
|
@@ -288,7 +297,6 @@ async def member_kick_me(login: Login, net: OneBotNetwork, raw: dict):
|
|
|
288
297
|
guild=guild,
|
|
289
298
|
channel=channel,
|
|
290
299
|
operator=operator,
|
|
291
|
-
role=ROLE_MAPPING[member_info["role"]],
|
|
292
300
|
)
|
|
293
301
|
|
|
294
302
|
|
|
@@ -303,10 +311,11 @@ async def group_increase(login: Login, net: OneBotNetwork, raw: dict):
|
|
|
303
311
|
datetime.now(),
|
|
304
312
|
login=login,
|
|
305
313
|
user=login.user,
|
|
306
|
-
member=Member(
|
|
314
|
+
member=Member(
|
|
315
|
+
login.user, avatar=USER_AVATAR_URL.format(uin=login.user.id), roles=[Role("MEMBER", "群成员")]
|
|
316
|
+
),
|
|
307
317
|
guild=guild,
|
|
308
318
|
channel=channel,
|
|
309
|
-
role=Role("MEMBER", "群成员"),
|
|
310
319
|
)
|
|
311
320
|
group_info = await net.call_api("get_group_info", {"group_id": raw["group_id"]})
|
|
312
321
|
member_info = await net.call_api("get_group_member_info", {"group_id": raw["group_id"], "user_id": raw["user_id"]})
|
|
@@ -319,7 +328,12 @@ async def group_increase(login: Login, net: OneBotNetwork, raw: dict):
|
|
|
319
328
|
member_info.get("card"),
|
|
320
329
|
USER_AVATAR_URL.format(uin=raw["user_id"]),
|
|
321
330
|
)
|
|
322
|
-
member = Member(
|
|
331
|
+
member = Member(
|
|
332
|
+
user,
|
|
333
|
+
member_info.get("card"),
|
|
334
|
+
USER_AVATAR_URL.format(uin=raw["user_id"]),
|
|
335
|
+
roles=[ROLE_MAPPING[member_info["role"]]],
|
|
336
|
+
)
|
|
323
337
|
guild = Guild(
|
|
324
338
|
str(raw["group_id"]), group_info.get("group_name"), avatar=GROUP_AVATAR_URL.format(group=raw["group_id"])
|
|
325
339
|
)
|
|
@@ -339,7 +353,6 @@ async def group_increase(login: Login, net: OneBotNetwork, raw: dict):
|
|
|
339
353
|
guild=guild,
|
|
340
354
|
channel=channel,
|
|
341
355
|
operator=operator,
|
|
342
|
-
role=Role("MEMBER", "群成员"),
|
|
343
356
|
)
|
|
344
357
|
|
|
345
358
|
|
|
@@ -226,8 +226,13 @@ class OneBot11MessageEncoder:
|
|
|
226
226
|
case "sharp":
|
|
227
227
|
if "id" in attrs:
|
|
228
228
|
self.children.append({"type": "text", "data": {"text": attrs["id"]}})
|
|
229
|
-
case "onebot:face":
|
|
230
|
-
|
|
229
|
+
case "onebot:face" | "emoji":
|
|
230
|
+
if ":" in attrs["id"]:
|
|
231
|
+
_, emj_id_str = attrs["id"].split(":", 1)
|
|
232
|
+
emj_id = int(emj_id_str)
|
|
233
|
+
else:
|
|
234
|
+
emj_id = int(attrs["id"])
|
|
235
|
+
self.children.append({"type": "face", "data": {"id": emj_id}})
|
|
231
236
|
case "a":
|
|
232
237
|
await self.render(_children)
|
|
233
238
|
if "href" in attrs:
|
|
@@ -317,6 +322,8 @@ async def _decode(content: list[MessageSegment], net: OneBotNetwork) -> list[Ele
|
|
|
317
322
|
result.append(E.at_all())
|
|
318
323
|
else:
|
|
319
324
|
result.append(E.at(str(qq), name=seg_data.get("name")))
|
|
325
|
+
case "face":
|
|
326
|
+
result.append(E.emoji(str(seg_data["id"])))
|
|
320
327
|
case "image":
|
|
321
328
|
result.append(E.image(seg_data.get("url") or seg_data.get("file")))
|
|
322
329
|
case "record":
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|