Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 24 additions & 1 deletion botpy/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -571,6 +571,27 @@ async def recall_message(self, channel_id: str, message_id: str, hidetip: bool =
)
return await self._http.request(route, params=params)

async def recall_group_message(self, group_openid: str, message_id: str) -> str:
"""
撤回群消息。

用于撤回机器人发送在当前群 group_openid 的消息 message_id,发送超出2分钟的消息不可撤回

Args:
group_openid (str): 群聊的 openid
message_id (str): 要撤回的消息的 ID。

Returns:
成功执行返回`None`。
"""
route = Route(
"DELETE",
"/v2/groups/{group_openid}/messages/{message_id}",
group_openid=group_openid,
message_id=message_id,
)
return await self._http.request(route)

async def post_keyboard_message(
self,
channel_id: str,
Expand Down Expand Up @@ -1473,8 +1494,9 @@ async def post_group_file(
self,
group_openid: str,
file_type: int,
url: str,
url: str = None,
srv_send_msg: bool = False,
file_data: str = None,
) -> message.Media:
"""
上传/发送群聊图片
Expand All @@ -1484,6 +1506,7 @@ async def post_group_file(
file_type (int): 媒体类型:1 图片png/jpg,2 视频mp4,3 语音silk,4 文件(暂不开放)
url (str): 需要发送媒体资源的url
srv_send_msg (bool): 设置 true 会直接发送消息到目标端,且会占用主动消息频次
file_data (str): 要发送的本地图像的Base64数据
"""
payload = locals()
payload.pop("self", None)
Expand Down
2 changes: 1 addition & 1 deletion botpy/logging.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ def configure_logging(
)

if _format is not None:
logging.basicConfig(format=_format)
logging.basicConfig(format=_format, force=True)

if level is not None:
for name, logger in logs.items():
Expand Down
4 changes: 3 additions & 1 deletion botpy/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -252,14 +252,16 @@ def __repr__(self):

class _User:
def __init__(self, data):
self.id = data.get("id", None)
self.member_openid = data.get("member_openid", None)

def __repr__(self):
return str(self.__dict__)

async def reply(self, **kwargs):
return await self._api.post_group_message(group_openid=self.group_openid, msg_id=self.id, **kwargs)



class C2CMessage(BaseMessage):
__slots__ = ("author",)

Expand Down
17 changes: 17 additions & 0 deletions botpy/types/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ class KeyboardPayload(TypedDict, total=False):
id: str
content: Keyboard


class Media(TypedDict):
file_uuid: str # 文件ID
file_info: str # 文件信息,用于发消息接口的media字段使用
Expand Down Expand Up @@ -121,3 +122,19 @@ class DeletionOperator(TypedDict):
class DeletedMessageInfo(TypedDict):
message: DeletedMessage
op_user: DeletionOperator


class FileType(Enum):
image = 1
video = 2
audio = 3
file = 4


class GroupMessageType(Enum):
text = 0
text_image = 1
markdown = 2
ark = 3
embed = 4
media = 7