Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

未加好友的临时消息不存在 target_id 抛出异常 #41

Open
Cody-Wolf opened this issue Jul 14, 2023 · 1 comment
Open

未加好友的临时消息不存在 target_id 抛出异常 #41

Cody-Wolf opened this issue Jul 14, 2023 · 1 comment

Comments

@Cody-Wolf
Copy link

Cody-Wolf commented Jul 14, 2023

class Private_Message(Message):
    """私聊消息"""

    def __init__(self, cqapi: cqHttpApi, event: Message_Event, message_data: dict[str, Any]) -> None:
        super().__init__(cqapi, event, message_data)

        self.sender: Private_User = Private_User(self._cqapi, message_data["sender"])
        """发送人"""
        
        self.target_id: int = message_data["target_id"] # 抛出异常,target_id 不存在
        """接收者 QQ 号"""

实际接收的 message json

{'post_type': 'message', 'message_type': 'private', 'time': 1689303412, 'self_id': ***, 'sub_type': 'group', 'temp_source': 0, 'message_id': 61502, 'user_id': ***, 'message': '123', 'raw_message': '123', 'font': 0, 'sender': {'age': 0, 'group_id': ***, 'nickname': 'Cody', 'sex': 'unknown', 'user_id': ***}}

貌似没有 target_id 这一项?我理解这里应该是 self_id ?

@Cody-Wolf Cody-Wolf changed the title 未加好友的临时消息抛出异常 未加好友的临时消息不存在 target_id 抛出异常 Jul 14, 2023
@dc3l1ne
Copy link

dc3l1ne commented Feb 13, 2025

重写一下Message_Event.get_message,比如从群发起临时会话

class Private_Message_From_Group(Message):
    def __init__(self, cqapi: cqHttpApi, event: Message_Event, message_data: dict[str, Any]) -> None:
        super().__init__(cqapi, event, message_data)

        self.group_id: int = message_data["sender"]["group_id"]
        """群号"""

        self.sender: Private_User = Private_User(self._cqapi, message_data["sender"])
        """发送人"""

        self.temp_source: Optional[int] = message_data["temp_source"] if "temp_source" in message_data else None
        """临时会话来源"""

    def reply(self, message: str, auto_escape: bool = False) -> None:
        self._cqapi.send_private_msg(self.sender.id, "%s%s" % (reply(self.id), message), self.temp_source, auto_escape)

    def reply_not_code(self, message: str, auto_escape: bool = False) -> None:
        self._cqapi.send_private_msg(self.sender.id, message, self.temp_source, auto_escape)

def get_message(self, cqapi):
    if self.is_private():
        if self.data['sub_type'] == 'group':
            return Private_Message_From_Group(cqapi, self, self.data)
        return Private_Message(cqapi, self, self.data)
    else:
        return Group_Message(cqapi, self, self.data)
from pycqBot.data import Message_Event

Message_Event.get_message = get_message

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants