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

增加更丰富的gewechat接口,为以后丰富插件提供可能性 #565

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
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
Empty file.
92 changes: 92 additions & 0 deletions astrbot/core/platform/sources/gewechat/api/contact_api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
from ..util.http_util import post_json

class ContactApi:
def __init__(self, base_url, token):
self.base_url = base_url
self.token = token

async def fetch_contacts_list(self, app_id):
"""获取通讯录列表"""
param = {
"appId": app_id
}
return await post_json(self.base_url, "/contacts/fetchContactsList", self.token, param)

async def get_brief_info(self, app_id, wxids):
"""获取群/好友简要信息"""
param = {
"appId": app_id,
"wxids": wxids
}
return await post_json(self.base_url, "/contacts/getBriefInfo", self.token, param)

async def get_detail_info(self, app_id, wxids):
"""获取群/好友详细信息"""
param = {
"appId": app_id,
"wxids": wxids
}
return await post_json(self.base_url, "/contacts/getDetailInfo", self.token, param)

async def search(self, app_id, contacts_info):
"""搜索好友"""
param = {
"appId": app_id,
"contactsInfo": contacts_info
}
return await post_json(self.base_url, "/contacts/search", self.token, param)

async def add_contacts(self, app_id, scene, option, v3, v4, content):
"""添加联系人/同意添加好友"""
param = {
"appId": app_id,
"scene": scene,
"option": option,
"v3": v3,
"v4": v4,
"content": content
}
return await post_json(self.base_url, "/contacts/addContacts", self.token, param)

async def delete_friend(self, app_id, wxid):
"""删除好友"""
param = {
"appId": app_id,
"wxid": wxid
}
return await post_json(self.base_url, "/contacts/deleteFriend", self.token, param)

async def set_friend_permissions(self, app_id, wxid, only_chat):
"""设置好友仅聊天"""
param = {
"appId": app_id,
"wxid": wxid,
"onlyChat": only_chat
}
return await post_json(self.base_url, "/contacts/setFriendPermissions", self.token, param)

async def set_friend_remark(self, app_id, wxid, remark):
"""设置好友备注"""
param = {
"appId": app_id,
"wxid": wxid,
"remark": remark
}
return await post_json(self.base_url, "/contacts/setFriendRemark", self.token, param)

async def get_phone_address_list(self, app_id, phones):
"""获取手机通讯录"""
param = {
"appId": app_id,
"wxid": phones
}
return await post_json(self.base_url, "/contacts/getPhoneAddressList", self.token, param)

async def upload_phone_address_list(self, app_id, phones, op_type):
"""上传手机通讯录"""
param = {
"appId": app_id,
"wxid": phones,
"opType": op_type
}
return await post_json(self.base_url, "/contacts/uploadPhoneAddressList", self.token, param)
52 changes: 52 additions & 0 deletions astrbot/core/platform/sources/gewechat/api/download_api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
from ..util.http_util import post_json

class DownloadApi:
def __init__(self, base_url, token):
self.base_url = base_url
self.token = token

async def download_image(self, app_id, xml, type):
"""下载图片"""
param = {
"appId": app_id,
"xml": xml,
"type": type
}
return await post_json(self.base_url, "/message/downloadImage", self.token, param)

async def download_voice(self, app_id, xml, msg_id):
"""下载语音"""
param = {
"appId": app_id,
"xml": xml,
"msgId": msg_id
}
return await post_json(self.base_url, "/message/downloadVoice", self.token, param)

async def download_video(self, app_id, xml):
"""下载视频"""
param = {
"appId": app_id,
"xml": xml
}
return await post_json(self.base_url, "/message/downloadVideo", self.token, param)

async def download_emoji_md5(self, app_id, emoji_md5):
"""下载emoji"""
param = {
"appId": app_id,
"emojiMd5": emoji_md5
}
return await post_json(self.base_url, "/message/downloadEmojiMd5", self.token, param)

async def download_cdn(self, app_id, aes_key, file_id, type, total_size, suffix):
"""cdn下载"""
param = {
"appId": app_id,
"aesKey": aes_key,
"fileId": file_id,
"totalSize": total_size,
"type": type,
"suffix": suffix
}
return await post_json(self.base_url, "/message/downloadCdn", self.token, param)
30 changes: 30 additions & 0 deletions astrbot/core/platform/sources/gewechat/api/favor_api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
from ..util.http_util import post_json

class FavorApi:
def __init__(self, base_url, token):
self.base_url = base_url
self.token = token

async def sync(self, app_id, sync_key):
"""同步收藏夹"""
param = {
"appId": app_id,
"syncKey": sync_key
}
return await post_json(self.base_url, "/favor/sync", self.token, param)

async def get_content(self, app_id, fav_id):
"""获取收藏夹内容"""
param = {
"appId": app_id,
"favId": fav_id
}
return await post_json(self.base_url, "/favor/getContent", self.token, param)

async def delete(self, app_id, fav_id):
"""删除收藏夹"""
param = {
"appId": app_id,
"favId": fav_id
}
return await post_json(self.base_url, "/favor/delete", self.token, param)
205 changes: 205 additions & 0 deletions astrbot/core/platform/sources/gewechat/api/group_api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,205 @@
from ..util.http_util import post_json

class GroupApi:
def __init__(self, base_url, token):
self.base_url = base_url
self.token = token

async def create_chatroom(self, app_id, wxids):
"""创建微信群"""
param = {
"appId": app_id,
"wxids": wxids
}
return await post_json(self.base_url, "/group/createChatroom", self.token, param)

async def modify_chatroom_name(self, app_id, chatroom_name, chatroom_id):
"""修改群名称"""
param = {
"appId": app_id,
"chatroomName": chatroom_name,
"chatroomId": chatroom_id
}
return await post_json(self.base_url, "/group/modifyChatroomName", self.token, param)

async def modify_chatroom_remark(self, app_id, chatroom_remark, chatroom_id):
"""修改群备注"""
param = {
"appId": app_id,
"chatroomRemark": chatroom_remark,
"chatroomId": chatroom_id
}
return await post_json(self.base_url, "/group/modifyChatroomRemark", self.token, param)

async def modify_chatroom_nickname_for_self(self, app_id, nick_name, chatroom_id):
"""修改我在群内的昵称"""
param = {
"appId": app_id,
"nickName": nick_name,
"chatroomId": chatroom_id
}
return await post_json(self.base_url, "/group/modifyChatroomNickNameForSelf", self.token, param)

async def invite_member(self, app_id, wxids, chatroom_id, reason):
"""邀请/添加 进群"""
param = {
"appId": app_id,
"wxids": wxids,
"reason": reason,
"chatroomId": chatroom_id
}
return await post_json(self.base_url, "/group/inviteMember", self.token, param)

async def remove_member(self, app_id, wxids, chatroom_id):
"""删除群成员"""
param = {
"appId": app_id,
"wxids": wxids,
"chatroomId": chatroom_id
}
return await post_json(self.base_url, "/group/removeMember", self.token, param)

async def quit_chatroom(self, app_id, chatroom_id):
"""退出群聊"""
param = {
"appId": app_id,
"chatroomId": chatroom_id
}
return await post_json(self.base_url, "/group/quitChatroom", self.token, param)

async def disband_chatroom(self, app_id, chatroom_id):
"""解散群聊"""
param = {
"appId": app_id,
"chatroomId": chatroom_id
}
return await post_json(self.base_url, "/group/disbandChatroom", self.token, param)

async def get_chatroom_info(self, app_id, chatroom_id):
"""获取群信息"""
param = {
"appId": app_id,
"chatroomId": chatroom_id
}
return await post_json(self.base_url, "/group/getChatroomInfo", self.token, param)

async def get_chatroom_member_list(self, app_id, chatroom_id):
"""获取群成员列表"""
param = {
"appId": app_id,
"chatroomId": chatroom_id
}
return await post_json(self.base_url, "/group/getChatroomMemberList", self.token, param)

async def get_chatroom_member_detail(self, app_id, chatroom_id, member_wxids):
"""获取群成员详情"""
param = {
"appId": app_id,
"memberWxids": member_wxids,
"chatroomId": chatroom_id
}
return await post_json(self.base_url, "/group/getChatroomMemberDetail", self.token, param)

async def get_chatroom_announcement(self, app_id, chatroom_id):
"""获取群公告"""
param = {
"appId": app_id,
"chatroomId": chatroom_id
}
return await post_json(self.base_url, "/group/getChatroomAnnouncement", self.token, param)

async def set_chatroom_announcement(self, app_id, chatroom_id, content):
"""设置群公告"""
param = {
"appId": app_id,
"chatroomId": chatroom_id,
"content": content
}
return await post_json(self.base_url, "/group/setChatroomAnnouncement", self.token, param)

async def agree_join_room(self, app_id, url):
"""同意进群"""
param = {
"appId": app_id,
"chatroomName": url
}
return await post_json(self.base_url, "/group/agreeJoinRoom", self.token, param)

async def add_group_member_as_friend(self, app_id, member_wxid, chatroom_id, content):
"""添加群成员为好友"""
param = {
"appId": app_id,
"memberWxid": member_wxid,
"content": content,
"chatroomId": chatroom_id
}
return await post_json(self.base_url, "/group/addGroupMemberAsFriend", self.token, param)

async def get_chatroom_qr_code(self, app_id, chatroom_id):
"""获取群二维码"""
param = {
"appId": app_id,
"chatroomId": chatroom_id
}
return await post_json(self.base_url, "/group/getChatroomQrCode", self.token, param)

async def save_contract_list(self, app_id, oper_type, chatroom_id):
"""
群保存到通讯录或从通讯录移除
:param app_id: 设备id
:param oper_type: 操作类型,3表示保存到通讯录,2表示从通讯录移除
:param chatroom_id: 群id
:return: API响应结果
"""
param = {
"appId": app_id,
"operType": oper_type,
"chatroomId": chatroom_id
}
return await post_json(self.base_url, "/group/saveContractList", self.token, param)

async def admin_operate(self, app_id, chatroom_id, wxids, oper_type):
"""管理员操作"""
param = {
"appId": app_id,
"wxids": wxids,
"operType": oper_type,
"chatroomId": chatroom_id
}
return await post_json(self.base_url, "/group/adminOperate", self.token, param)

async def pin_chat(self, app_id, top, chatroom_id):
"""聊天置顶"""
param = {
"appId": app_id,
"top": top,
"chatroomId": chatroom_id
}
return await post_json(self.base_url, "/group/pinChat", self.token, param)

async def set_msg_silence(self, app_id, silence, chatroom_id):
"""设置消息免打扰"""
param = {
"appId": app_id,
"silence": silence,
"chatroomId": chatroom_id
}
return await post_json(self.base_url, "/group/setMsgSilence", self.token, param)

async def join_room_using_qr_code(self, app_id, qr_url):
"""扫码进群"""
param = {
"appId": app_id,
"qrUrl": qr_url
}
return await post_json(self.base_url, "/group/joinRoomUsingQRCode", self.token, param)

async def room_access_apply_check_approve(self, app_id, new_msg_id, chatroom_id, msg_content):
"""确认进群申请"""
param = {
"appId": app_id,
"newMsgId": new_msg_id,
"msgContent": msg_content,
"chatroomId": chatroom_id
}
return await post_json(self.base_url, "/group/roomAccessApplyCheckApprove", self.token, param)
Loading