satori-python-adapter-qq 0.2.0__tar.gz → 0.2.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.
Files changed (19) hide show
  1. {satori_python_adapter_qq-0.2.0 → satori_python_adapter_qq-0.2.1}/.mina/adapter_qq.toml +1 -1
  2. {satori_python_adapter_qq-0.2.0 → satori_python_adapter_qq-0.2.1}/PKG-INFO +1 -1
  3. {satori_python_adapter_qq-0.2.0 → satori_python_adapter_qq-0.2.1}/pyproject.toml +1 -1
  4. {satori_python_adapter_qq-0.2.0 → satori_python_adapter_qq-0.2.1}/src/satori/adapters/qq/api.py +8 -2
  5. {satori_python_adapter_qq-0.2.0 → satori_python_adapter_qq-0.2.1}/src/satori/adapters/qq/events/guild.py +2 -2
  6. {satori_python_adapter_qq-0.2.0 → satori_python_adapter_qq-0.2.1}/src/satori/adapters/qq/events/message.py +3 -3
  7. {satori_python_adapter_qq-0.2.0 → satori_python_adapter_qq-0.2.1}/src/satori/adapters/qq/main.py +3 -0
  8. {satori_python_adapter_qq-0.2.0 → satori_python_adapter_qq-0.2.1}/src/satori/adapters/qq/utils.py +7 -6
  9. {satori_python_adapter_qq-0.2.0 → satori_python_adapter_qq-0.2.1}/src/satori/adapters/qq/websocket.py +3 -0
  10. {satori_python_adapter_qq-0.2.0 → satori_python_adapter_qq-0.2.1}/LICENSE +0 -0
  11. {satori_python_adapter_qq-0.2.0 → satori_python_adapter_qq-0.2.1}/README.md +0 -0
  12. {satori_python_adapter_qq-0.2.0 → satori_python_adapter_qq-0.2.1}/src/satori/adapters/qq/__init__.py +0 -0
  13. {satori_python_adapter_qq-0.2.0 → satori_python_adapter_qq-0.2.1}/src/satori/adapters/qq/audit_store.py +0 -0
  14. {satori_python_adapter_qq-0.2.0 → satori_python_adapter_qq-0.2.1}/src/satori/adapters/qq/events/__init__.py +0 -0
  15. {satori_python_adapter_qq-0.2.0 → satori_python_adapter_qq-0.2.1}/src/satori/adapters/qq/events/base.py +0 -0
  16. {satori_python_adapter_qq-0.2.0 → satori_python_adapter_qq-0.2.1}/src/satori/adapters/qq/events/group.py +0 -0
  17. {satori_python_adapter_qq-0.2.0 → satori_python_adapter_qq-0.2.1}/src/satori/adapters/qq/events/interaction.py +0 -0
  18. {satori_python_adapter_qq-0.2.0 → satori_python_adapter_qq-0.2.1}/src/satori/adapters/qq/exception.py +0 -0
  19. {satori_python_adapter_qq-0.2.0 → satori_python_adapter_qq-0.2.1}/src/satori/adapters/qq/message.py +0 -0
@@ -6,7 +6,7 @@ raw-dependencies = [
6
6
 
7
7
  [project]
8
8
  name = "satori-python-adapter-qq"
9
- version = "0.2.0"
9
+ version = "0.2.1"
10
10
  authors = [
11
11
  {name = "RF-Tar-Railt", email = "rf_tar_railt@qq.com"}
12
12
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: satori-python-adapter-qq
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: Satori Protocol SDK for python, adapter for QQ
5
5
  Home-page: https://github.com/RF-Tar-Railt/satori-python
6
6
  Author-Email: RF-Tar-Railt <rf_tar_railt@qq.com>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "satori-python-adapter-qq"
3
- version = "0.2.0"
3
+ version = "0.2.1"
4
4
  authors = [
5
5
  { name = "RF-Tar-Railt", email = "rf_tar_railt@qq.com" },
6
6
  ]
@@ -29,7 +29,7 @@ from satori.server.route import (
29
29
  )
30
30
 
31
31
  from .message import QQGroupMessageEncoder, QQGuildMessageEncoder, decode_segments
32
- from .utils import QQBotNetwork, decode_channel, decode_guild, decode_member, decode_user
32
+ from .utils import ROLE_MAPPING, QQBotNetwork, decode_channel, decode_guild, decode_member, decode_user
33
33
 
34
34
 
35
35
  def apply(
@@ -356,7 +356,13 @@ def apply(
356
356
  "get",
357
357
  f"guilds/{guild_id}/roles",
358
358
  )
359
- roles = [Role(role["id"], role.get("name", "")) for role in res]
359
+ # roles = [Role(role["id"], role.get("name", "")) for role in res]
360
+ roles = []
361
+ for role in res:
362
+ if role["id"] in ROLE_MAPPING:
363
+ roles.append(ROLE_MAPPING[role["id"]])
364
+ else:
365
+ roles.append(Role(role["id"], role.get("name", "")))
360
366
  return PageResult(roles, next=None)
361
367
  raise NotFoundException("qq platform does not support guild.role.list")
362
368
 
@@ -5,7 +5,7 @@ from datetime import datetime
5
5
  from satori import EventType
6
6
  from satori.model import Event, Guild, Member, Role, User
7
7
 
8
- from ..utils import Payload, decode_channel, decode_guild, decode_user
8
+ from ..utils import ROLE_MAPPING, Payload, decode_channel, decode_guild, decode_user
9
9
  from .base import register_event
10
10
 
11
11
 
@@ -57,7 +57,7 @@ async def guild_member_event(login, guild_login, net, payload: Payload):
57
57
  nick=raw["nick"],
58
58
  avatar=user.avatar,
59
59
  joined_at=datetime.fromisoformat(raw["joined_at"]),
60
- roles=[Role(r) for r in raw["roles"]],
60
+ roles=[(ROLE_MAPPING.get(r) or Role(r)) for r in raw["roles"]],
61
61
  )
62
62
  operator = User(raw["op_user_id"])
63
63
  return Event(t, datetime.now(), guild_login, guild=guild, user=user, member=member, operator=operator)
@@ -6,7 +6,7 @@ from satori import At, EventType, Text
6
6
  from satori.model import Channel, ChannelType, EmojiObject, Event, Guild, Member, MessageObject, Role, User
7
7
 
8
8
  from ..message import decode_segments
9
- from ..utils import USER_AVATAR_URL, Payload, decode_user
9
+ from ..utils import ROLE_MAPPING, USER_AVATAR_URL, Payload, decode_user
10
10
  from .base import register_event
11
11
 
12
12
 
@@ -21,7 +21,7 @@ async def at_message(login, guild_login, net, payload: Payload):
21
21
  user,
22
22
  avatar=user.avatar,
23
23
  joined_at=datetime.fromisoformat(raw["member"]["joined_at"]),
24
- roles=[Role(r) for r in raw["member"]["roles"]],
24
+ roles=[(ROLE_MAPPING.get(r) or Role(r)) for r in raw["member"]["roles"]],
25
25
  )
26
26
  msg = decode_segments(raw)
27
27
  if len(msg) >= 2 and isinstance(msg[0], At) and isinstance(msg[1], Text):
@@ -169,7 +169,7 @@ async def message_delete(login, guild_login, new, payload: Payload):
169
169
  user,
170
170
  avatar=user.avatar,
171
171
  joined_at=datetime.fromisoformat(raw["message"]["member"]["joined_at"]),
172
- roles=[Role(r) for r in raw["message"]["member"]["roles"]],
172
+ roles=[(ROLE_MAPPING.get(r) or Role(r)) for r in raw["message"]["member"]["roles"]],
173
173
  )
174
174
  return Event(
175
175
  EventType.MESSAGE_DELETED,
@@ -438,5 +438,8 @@ class QQBotWebhookAdapter(BaseAdapter):
438
438
  await self.handle_event(app_id, payload)
439
439
  return Response(status_code=200)
440
440
 
441
+ def __str__(self):
442
+ return self.id
443
+
441
444
 
442
445
  __all__ = ["QQBotWebhookAdapter"]
@@ -122,15 +122,16 @@ def decode_member(profile: dict) -> Member:
122
122
  decode_user(profile["user"]) if "user" in profile else None,
123
123
  profile.get("nick"),
124
124
  joined_at=datetime.fromisoformat(profile["joined_at"]) if "joined_at" in profile else None,
125
- roles=[Role(r) for r in profile["roles"]],
125
+ roles=[(ROLE_MAPPING.get(r) or Role(r)) for r in profile["roles"]],
126
126
  )
127
127
 
128
128
 
129
129
  USER_AVATAR_URL = "https://q.qlogo.cn/qqapp/{app_id}/{user_id}/100"
130
130
 
131
131
 
132
- # ROLE_MAPPING = {
133
- # "member": Role("MEMBER", "群成员"),
134
- # "admin": Role("ADMINISTRATOR", "管理员"),
135
- # "owner": Role("OWNER", "群主"),
136
- # }
132
+ ROLE_MAPPING = {
133
+ "1": Role("member", "成员"),
134
+ "5": Role("channel_admin", "子频道管理员"),
135
+ "2": Role("admin", "管理员"),
136
+ "4": Role("owner", "创建者"),
137
+ }
@@ -554,5 +554,8 @@ class QQBotWebsocketAdapter(BaseAdapter):
554
554
  logger.info(f"{self} Reconnecting...")
555
555
  continue
556
556
 
557
+ def __str__(self):
558
+ return self.id
559
+
557
560
 
558
561
  __all__ = ["QQBotWebsocketAdapter", "Intents"]