Skip to content

Commit 4a2373f

Browse files
GLGDLYSaucePlum
andauthored
refactor & feat: 优化http双重not问题、增加可取阅事件数据结构的能力 (#110)
* refactor: 优化上次更新中,http的双重not问题 feat: 新增用户可直接通过print或log获取dict类型的事件结构 * fix: 修复DirectMessage中reply参数错误 Co-authored-by: 小念同学 <[email protected]>
1 parent d9c4732 commit 4a2373f

File tree

9 files changed

+104
-3
lines changed

9 files changed

+104
-3
lines changed

botpy/audio.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,6 @@ def __init__(self, api: BotAPI, event_id, data: audio.AudioAction):
2020
self.audio_url = data.get("audio_url", None)
2121
self.text = data.get("text", None)
2222
self.event_id = event_id
23+
24+
def __repr__(self):
25+
return str({items: str(getattr(self, items)) for items in self.__slots__ if not items.startswith('_')})

botpy/channel.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,6 @@ def __init__(self, api: BotAPI, event_id, data: channel.ChannelPayload):
3333
self.application_id = data.get("application_id", None)
3434
self.permissions = data.get("permissions", None)
3535
self.event_id = event_id
36+
37+
def __repr__(self):
38+
return str({items: str(getattr(self, items)) for items in self.__slots__ if not items.startswith('_')})

botpy/forum.py

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,35 @@ class _Text:
88
def __init__(self, data):
99
self.text = data.get("text", None)
1010

11+
def __repr__(self):
12+
return str(self.__dict__)
13+
1114

1215
class _Image:
1316
def __init__(self, data):
1417
self.plat_image = self._PlatImage(data.get("plat_image", {}))
1518

19+
def __repr__(self):
20+
return str(self.__dict__)
21+
1622
class _PlatImage:
1723
def __init__(self, data):
1824
self.url = data.get("url", None)
1925
self.width = data.get("width", None)
2026
self.height = data.get("height", None)
2127
self.image_id = data.get("image_id", None)
2228

29+
def __repr__(self):
30+
return str(self.__dict__)
31+
2332

2433
class _Video:
2534
def __init__(self, data):
2635
self.plat_video = self._PlatVideo(data.get("plat_video", {}))
2736

37+
def __repr__(self):
38+
return str(self.__dict__)
39+
2840
class _PlatVideo:
2941
def __init__(self, data):
3042
self.url = data.get("url", None)
@@ -33,23 +45,31 @@ def __init__(self, data):
3345
self.video_id = data.get("video_id", None)
3446
self.cover = data.get("cover", {})
3547

48+
def __repr__(self):
49+
return str(self.__dict__)
50+
3651
class _Cover:
3752
def __init__(self, data):
3853
self.url = data.get("url", None)
3954
self.width = data.get("width", None)
4055
self.height = data.get("height", None)
4156

57+
def __repr__(self):
58+
return str(self.__dict__)
59+
4260

4361
class _Url:
4462
def __init__(self, data):
4563
self.url = data.get("url", None)
4664
self.desc = data.get("desc", None)
4765

66+
def __repr__(self):
67+
return str(self.__dict__)
68+
4869

4970
class Thread:
5071
__slots__ = (
5172
"_api",
52-
"_ctx",
5373
"thread_info",
5474
"channel_id",
5575
"guild_id",
@@ -65,36 +85,57 @@ def __init__(self, api: BotAPI, event_id, data: forum.Thread):
6585
self.thread_info = self._ThreadInfo(data.get("thread_info", {}))
6686
self.event_id = event_id
6787

88+
def __repr__(self):
89+
return str({items: str(getattr(self, items)) for items in self.__slots__ if not items.startswith('_')})
90+
6891
class _ThreadInfo:
6992
def __init__(self, data):
7093
self.title = self._Title(loads(data.get("title", {})))
7194
self.content = self._Content(loads(data.get("content", {})))
7295
self.thread_id = data.get("thread_id", None)
7396
self.date_time = data.get("date_time", None)
7497

98+
def __repr__(self):
99+
return str(self.__dict__)
100+
75101
class _Title:
76102
def __init__(self, data):
77103
self.paragraphs = [self._Paragraphs(items) for items in data.get("paragraphs", {})]
78104

105+
def __repr__(self):
106+
return str(self.__dict__)
107+
79108
class _Paragraphs:
80109
def __init__(self, data):
81110
self.elems = [self._Elems(items) for items in data.get("elems", {})]
82111
self.props = data.get("props", None)
83112

113+
def __repr__(self):
114+
return str(self.__dict__)
115+
84116
class _Elems:
85117
def __init__(self, data):
86118
self.type = data.get("type", None)
87119
self.text = _Text(data.get("text", {}))
88120

121+
def __repr__(self):
122+
return str(self.__dict__)
123+
89124
class _Content:
90125
def __init__(self, data):
91126
self.paragraphs = [self._Paragraphs(items) for items in data.get("paragraphs", {})]
92127

128+
def __repr__(self):
129+
return str(self.__dict__)
130+
93131
class _Paragraphs:
94132
def __init__(self, data):
95133
self.elems = [self._Elems(items) for items in data.get("elems", {})]
96134
self.props = data.get("props", None)
97135

136+
def __repr__(self):
137+
return str(self.__dict__)
138+
98139
class _Elems:
99140
def __init__(self, data):
100141
self.type = data.get("type", None)
@@ -106,3 +147,6 @@ def __init__(self, data):
106147
self.video = _Video(data.get("video", {}))
107148
elif self.type == 4:
108149
self.url = _Url(data.get("url", {}))
150+
151+
def __repr__(self):
152+
return str(self.__dict__)

botpy/guild.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,6 @@ def __init__(self, api: BotAPI, event_id, data: guild.GuildPayload):
3131
self.description = data.get("description", None)
3232
self.joined_at = data.get("joined_at", None)
3333
self.event_id = event_id
34+
35+
def __repr__(self):
36+
return str({items: str(getattr(self, items)) for items in self.__slots__ if not items.startswith('_')})

botpy/http.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ async def request(self, route: Route, **kwargs: Any):
112112
kwargs["data"] = FormData()
113113
for k, v in kwargs.pop("json").items():
114114
if v:
115-
if not not isinstance(v, dict):
115+
if isinstance(v, dict):
116116
if k == 'message_reference':
117117
_log.error(
118118
f"[botpy] 接口参数传入异常, 请求连接: {route.url}, "

botpy/interaction.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,6 @@ def __init__(self, api: BotAPI, event_id, data: interaction.InteractionPayload):
1212
self.type = data.get("type", None)
1313
self.application_id = data.get("application_id", None)
1414
self.event_id = event_id
15+
16+
def __repr__(self):
17+
return str({items: str(getattr(self, items)) for items in self.__slots__ if not items.startswith('_')})

botpy/message.py

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,23 +38,35 @@ def __init__(self, api: BotAPI, event_id, data: gateway.MessagePayload):
3838
self.timestamp = data.get("timestamp", None)
3939
self.event_id = event_id
4040

41+
def __repr__(self):
42+
return str({items: str(getattr(self, items)) for items in self.__slots__ if not items.startswith('_')})
43+
4144
class _User:
4245
def __init__(self, data):
4346
self.id = data.get("id", None)
4447
self.username = data.get("username", None)
4548
self.bot = data.get("bot", None)
4649
self.avatar = data.get("avatar", None)
4750

51+
def __repr__(self):
52+
return str(self.__dict__)
53+
4854
class _Member:
4955
def __init__(self, data):
5056
self.nick = data.get("nick", None)
5157
self.roles = data.get("roles", None)
5258
self.joined_at = data.get("joined_at", None)
5359

60+
def __repr__(self):
61+
return str(self.__dict__)
62+
5463
class _MessageRef:
5564
def __init__(self, data):
5665
self.message_id = data.get("message_id", None)
5766

67+
def __repr__(self):
68+
return str(self.__dict__)
69+
5870
class _Attachments:
5971
def __init__(self, data):
6072
self.content_type = data.get("content_type", None)
@@ -65,6 +77,9 @@ def __init__(self, data):
6577
self.size = data.get("size", None)
6678
self.url = data.get("url", None)
6779

80+
def __repr__(self):
81+
return str(self.__dict__)
82+
6883
async def reply(self, **kwargs):
6984
return await self._api.post_message(channel_id=self.channel_id, msg_id=self.id, **kwargs)
7085

@@ -104,22 +119,34 @@ def __init__(self, api: BotAPI, event_id, data: gateway.DirectMessagePayload):
104119
self.timestamp = data.get("timestamp", None)
105120
self.event_id = event_id
106121

122+
def __repr__(self):
123+
return str({items: str(getattr(self, items)) for items in self.__slots__ if not items.startswith('_')})
124+
107125
class _User:
108126
def __init__(self, data):
109127
self.id = data.get("id", None)
110128
self.username = data.get("username", None)
111129
self.avatar = data.get("avatar", None)
112130

131+
def __repr__(self):
132+
return str(self.__dict__)
133+
113134
class _Member:
114135
def __init__(self, data):
115136
self.joined_at = data.get("joined_at", None)
116137

138+
def __repr__(self):
139+
return str(self.__dict__)
140+
117141
class _MessageRef:
118142
def __init__(self, data):
119143
self.message_id = data.get("message_id", None)
120144

145+
def __repr__(self):
146+
return str(self.__dict__)
147+
121148
async def reply(self, **kwargs):
122-
return await self._api.post_message(channel_id=self.channel_id, msg_id=self.id, **kwargs)
149+
return await self._api.post_dms(guild_id=self.guild_id, msg_id=self.id, **kwargs)
123150

124151

125152
class MessageAudit:
@@ -139,3 +166,6 @@ def __init__(self, api: BotAPI, event_id, data: gateway.MessageAuditPayload):
139166
self.message_id = data.get("message_id", None)
140167
self.guild_id = data.get("guild_id", None)
141168
self.event_id = event_id
169+
170+
def __repr__(self):
171+
return str({items: str(getattr(self, items)) for items in self.__slots__ if not items.startswith('_')})

botpy/reaction.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,21 @@ def __init__(self, api: BotAPI, event_id, data: reaction.Reaction):
2323
self.target = self._Target(data.get("target", {}))
2424
self.event_id = event_id
2525

26+
def __repr__(self):
27+
return str({items: str(getattr(self, items)) for items in self.__slots__ if not items.startswith('_')})
28+
2629
class _Emoji:
2730
def __init__(self, data):
2831
self.id = data.get("id", None)
2932
self.type = data.get("type", None)
3033

34+
def __repr__(self):
35+
return str(self.__dict__)
36+
3137
class _Target:
3238
def __init__(self, data):
3339
self.id = data.get("id", None)
3440
self.type = data.get("type", None) # 0: 消息 1: 帖子 2: 评论 3: 回复
41+
42+
def __repr__(self):
43+
return str(self.__dict__)

botpy/user.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ def __init__(self, api: BotAPI, event_id, data: user.GuildMemberPayload):
1515
self.event_id = event_id
1616
self.guild_id = data.get("guild_id", None)
1717

18+
def __repr__(self):
19+
return str({items: str(getattr(self, items)) for items in self.__slots__ if not items.startswith('_')})
20+
1821
class _User:
1922
def __init__(self, data):
2023
self.id = data.get("id", None)
@@ -23,3 +26,6 @@ def __init__(self, data):
2326
self.bot = data.get("bot", None)
2427
self.union_openid = data.get("union_openid", None)
2528
self.union_user_account = data.get("union_user_account", None)
29+
30+
def __repr__(self):
31+
return str(self.__dict__)

0 commit comments

Comments
 (0)