Skip to content

Commit 81ff109

Browse files
committed
made Message compact with msg/view and quoted message
1 parent d19cb14 commit 81ff109

File tree

8 files changed

+255
-186
lines changed

8 files changed

+255
-186
lines changed

khl/api.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,14 @@ def list(
393393
):
394394
...
395395

396+
@staticmethod
397+
@req('GET')
398+
def view(
399+
chat_code,
400+
msg_id
401+
):
402+
...
403+
396404
@staticmethod
397405
@req('POST')
398406
def create(

khl/channel.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ def __init__(self, **kwargs):
216216
self.is_friend: bool = kwargs.get('is_friend')
217217
self.is_blocked: bool = kwargs.get('is_blocked')
218218
self.is_target_blocked: bool = kwargs.get('is_target_blocked')
219-
self.target_info: Dict = kwargs.get('target_info')
219+
self.target_info: User = kwargs.get('target_info')
220220

221221
self._loaded = kwargs.get('_lazy_loaded_', False)
222222
self.gate = kwargs.get('_gate_')
@@ -231,22 +231,22 @@ def id(self) -> str:
231231
@property
232232
def target_user_id(self) -> str:
233233
"""prop, the target's id"""
234-
return self.target_info.get('id') if self.target_info else None
234+
return self.target_info.id if self.target_info else None
235235

236236
@property
237237
def target_user_name(self) -> str:
238238
"""prop, the target's name"""
239-
return self.target_info.get('username') if self.target_info else None
239+
return self.target_info.username if self.target_info else None
240240

241241
@property
242242
def is_target_user_online(self) -> bool:
243243
"""prop, is the target online"""
244-
return self.target_info.get('online') if self.target_info else None
244+
return self.target_info.online if self.target_info else None
245245

246246
@property
247247
def target_user_avatar(self) -> str:
248248
"""prop, the target's avatar"""
249-
return self.target_info.get('avatar') if self.target_info else None
249+
return self.target_info.avatar if self.target_info else None
250250

251251
async def send(self, content: Union[str, List], *, type: MessageTypes = None, **kwargs):
252252
return await User(id=self.id, _gate_=self.gate).send(content, type=type, **kwargs)

khl/client.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,14 @@ async def fetch_blocked_friends(self) -> List[Friend]:
361361
friends = (await self.gate.exec_req(api.friend(type='blocked')))['blocked']
362362
return [Friend(_gate_=self.gate, user_id=i['friend_info']['id'], **i) for i in friends]
363363

364+
async def fetch_message(self, msg_id: str):
365+
req = api.Message.view(msg_id=msg_id)
366+
return PublicMessage(_gate_=self.gate, **(await self.gate.exec_req(req)))
367+
368+
async def fetch_direct_message(self, chat_code: str, msg_id: str):
369+
req = api.DirectMessage.view(chat_code=chat_code, msg_id=msg_id)
370+
return PrivateMessage(code=chat_code, _gate_=self.gate, **(await self.gate.exec_req(req)))
371+
364372
async def offline(self):
365373
"""offline bot"""
366374
await self.gate.exec_req(api.User.offline())

khl/command/parser.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import copy
44
import inspect
55
import logging
6-
from typing import Dict, Any, Callable, List, Union
6+
from typing import Dict, Any, Callable, List, Union, Type
77

88
from khl import User, Channel, Client, Message, Role
99
from .exception import Exceptions
@@ -54,7 +54,7 @@ class Parser:
5454
"""
5555
deal with a list of tokens made from Lexer, convert their type to match the command.handler
5656
"""
57-
_parse_funcs: Dict[Any, Callable] = {
57+
_parse_funcs: Dict[Type[Any], Callable[[Message, Client, str], Any]] = {
5858
str: lambda msg, client, token: token,
5959
int: lambda msg, client, token: int(token),
6060
float: lambda msg, client, token: float(token),

khl/command/rule.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import Union, Callable, Coroutine, Any
22

3-
from khl import Message, User
3+
from khl import Message, PublicMessage, User
44

55
TypeRule = Callable[[Message], Union[bool, Coroutine[Any, Any, bool]]]
66

@@ -13,7 +13,9 @@ def is_bot_mentioned(bot) -> TypeRule:
1313
""":return: a Rule that checks if the bot is mentioned"""
1414

1515
async def rule(msg: Message) -> bool:
16-
return (await bot.fetch_me()).id in msg.extra.get('mention')
16+
if not isinstance(msg, PublicMessage):
17+
return False
18+
return (await bot.fetch_me()).id in msg.mention
1719

1820
return rule
1921

@@ -22,14 +24,18 @@ def is_user_mentioned(user: User) -> TypeRule:
2224
""":return: a Rule that checks if the user is mentioned"""
2325

2426
def rule(msg: Message) -> bool:
25-
return user.id in msg.extra.get('mention')
27+
if not isinstance(msg, PublicMessage):
28+
return False
29+
return user.id in msg.mention
2630

2731
return rule
2832

2933
@staticmethod
3034
def is_mention_all(msg: Message) -> bool:
3135
""":return: a Rule that checks if the msg mentioned all members"""
32-
return msg.extra.get('mention_all', None) is not None
36+
if not isinstance(msg, PublicMessage):
37+
return False
38+
return msg.mention_all
3339

3440
@staticmethod
3541
def is_not_bot(msg: Message) -> bool:

0 commit comments

Comments
 (0)