wechatpy.enterprise.client.api.chat   A
last analyzed

Complexity

Total Complexity 15

Size/Duplication

Total Lines 278
Duplicated Lines 0 %

Test Coverage

Coverage 84.62%

Importance

Changes 0
Metric Value
eloc 86
dl 0
loc 278
rs 10
c 0
b 0
f 0
ccs 33
cts 39
cp 0.8462
wmc 15

15 Methods

Rating   Name   Duplication   Size   Complexity  
A WeChatChat.send_single_image() 0 10 1
A WeChatChat.set_mute() 0 13 1
A WeChatChat.get() 0 12 1
A WeChatChat.send_single_text() 0 10 1
A WeChatChat.send_image() 0 25 1
A WeChatChat.send_text() 0 25 1
A WeChatChat.create() 0 22 1
A WeChatChat.clear_notify() 0 19 1
A WeChatChat.send_single_file() 0 10 1
A WeChatChat.quit() 0 16 1
A WeChatChat.send_group_image() 0 10 1
A WeChatChat.send_group_file() 0 10 1
A WeChatChat.send_file() 0 25 1
A WeChatChat.send_group_text() 0 10 1
A WeChatChat.update() 0 25 1
1
# -*- coding: utf-8 -*-
2 10
from __future__ import absolute_import, unicode_literals
3
4 10
from optionaldict import optionaldict
5
6 10
from wechatpy.client.api.base import BaseWeChatAPI
7
8
9 10
class WeChatChat(BaseWeChatAPI):
10
    """
11
    “微信企业号”旧接口,企业微信请使用 appchat。
12
    """
13
14 10
    def create(self, chat_id, name, owner, user_list):
15
        """
16
        创建会话
17
18
        详情请参考
19
        https://qydev.weixin.qq.com/wiki/index.php?title=企业会话接口说明
20
21
        :param chat_id: 会话id。字符串类型,最长32个字符。只允许字符0-9及字母a-zA-Z,
22
                        如果值内容为64bit无符号整型:要求值范围在[1, 2^63)之间,
23
                        [2^63, 2^64)为系统分配会话id区间
24
        :param name: 会话标题
25
        :param owner: 管理员userid,必须是该会话userlist的成员之一
26
        :param user_list: 会话成员列表,成员用userid来标识。会话成员必须在3人或以上,1000人以下
27
        :return: 返回的 JSON 数据包
28
        """
29 10
        return self._post(
30
            'chat/create',
31
            data={
32
                'chatid': chat_id,
33
                'name': name,
34
                'owner': owner,
35
                'userlist': user_list,
36
            }
37
        )
38
39 10
    def get(self, chat_id):
40
        """
41
        获取会话
42
43
        详情请参考
44
        https://qydev.weixin.qq.com/wiki/index.php?title=企业会话接口说明
45
46
        :param chat_id: 会话 ID
47
        :return: 会话信息
48
        """
49 10
        res = self._get('chat/get', params={'chatid': chat_id})
50 10
        return res['chat_info']
51
52 10
    def update(self, chat_id, op_user, name=None, owner=None,
53
               add_user_list=None, del_user_list=None):
54
        """
55
        修改会话
56
57
        详情请参考
58
        https://qydev.weixin.qq.com/wiki/index.php?title=企业会话接口说明
59
60
        :param chat_id: 会话 ID
61
        :param op_user: 操作人 userid
62
        :param name: 会话标题
63
        :param owner: 管理员userid,必须是该会话userlist的成员之一
64
        :param add_user_list: 会话新增成员列表,成员用userid来标识
65
        :param del_user_list: 会话退出成员列表,成员用userid来标识
66
        :return: 返回的 JSON 数据包
67
        """
68 10
        data = optionaldict(
69
            chatid=chat_id,
70
            op_user=op_user,
71
            name=name,
72
            owner=owner,
73
            add_user_list=add_user_list,
74
            del_user_list=del_user_list,
75
        )
76 10
        return self._post('chat/update', data=data)
77
78 10
    def quit(self, chat_id, op_user):
79
        """
80
        退出会话
81
82
        详情请参考
83
        https://qydev.weixin.qq.com/wiki/index.php?title=企业会话接口说明
84
85
        :param chat_id: 会话 ID
86
        :param op_user: 操作人 userid
87
        :return: 返回的 JSON 数据包
88
        """
89 10
        return self._post(
90
            'chat/quit',
91
            data={
92
                'chatid': chat_id,
93
                'op_user': op_user,
94
            }
95
        )
96
97 10
    def clear_notify(self, op_user, type, id):
98
        """
99
        清除会话未读状态
100
101
        详情请参考
102
        https://qydev.weixin.qq.com/wiki/index.php?title=企业会话接口说明
103
104
        :param op_user: 会话所有者的userid
105
        :param type: 会话类型:single|group,分别表示:单聊|群聊
106
        :param id: 会话值,为userid|chatid,分别表示:成员id|会话id
107
        :return: 返回的 JSON 数据包
108
        """
109 10
        return self._post(
110
            'chat/clearnotify',
111
            data={
112
                'op_user': op_user,
113
                'chat': {
114
                    'type': type,
115
                    'id': id,
116
                }
117
            }
118
        )
119
120 10
    def set_mute(self, user_mute_list):
121
        """
122
        设置成员新消息免打扰
123
124
        详情请参考
125
        https://qydev.weixin.qq.com/wiki/index.php?title=企业会话接口说明
126
127
        :param user_mute_list: 成员新消息免打扰参数,数组,最大支持10000个成员
128
        :return: 返回的 JSON 数据包
129
        """
130 10
        return self._post(
131
            'chat/setmute',
132
            data={'user_mute_list': user_mute_list}
133
        )
134
135 10
    def send_text(self, sender, receiver_type, receiver_id, content):
136
        """
137
        发送文本消息
138
139
        详情请参考
140
        https://qydev.weixin.qq.com/wiki/index.php?title=企业会话接口说明
141
142
        :param sender: 发送人
143
        :param receiver_type: 接收人类型:single|group,分别表示:单聊|群聊
144
        :param receiver_id: 接收人的值,为userid|chatid,分别表示:成员id|会话id
145
        :param content: 消息内容
146
        :return: 返回的 JSON 数据包
147
        """
148 10
        data = {
149
            'receiver': {
150
                'type': receiver_type,
151
                'id': receiver_id,
152
            },
153
            'sender': sender,
154
            'msgtype': 'text',
155
            'text': {
156
                'content': content,
157
            }
158
        }
159 10
        return self._post('chat/send', data=data)
160
161 10
    def send_single_text(self, sender, receiver, content):
162
        """
163
        发送单聊文本消息
164
165
        :param sender: 发送人
166
        :param receiver: 接收人成员 ID
167
        :param content: 消息内容
168
        :return: 返回的 JSON 数据包
169
        """
170
        return self.send_text(sender, 'single', receiver, content)
171
172 10
    def send_group_text(self, sender, receiver, content):
173
        """
174
        发送群聊文本消息
175
176
        :param sender: 发送人
177
        :param receiver: 会话 ID
178
        :param content: 消息内容
179
        :return: 返回的 JSON 数据包
180
        """
181
        return self.send_text(sender, 'group', receiver, content)
182
183 10
    def send_image(self, sender, receiver_type, receiver_id, media_id):
184
        """
185
        发送图片消息
186
187
        详情请参考
188
        https://qydev.weixin.qq.com/wiki/index.php?title=企业会话接口说明
189
190
        :param sender: 发送人
191
        :param receiver_type: 接收人类型:single|group,分别表示:单聊|群聊
192
        :param receiver_id: 接收人的值,为userid|chatid,分别表示:成员id|会话id
193
        :param media_id: 图片媒体文件id,可以调用上传素材文件接口获取
194
        :return: 返回的 JSON 数据包
195
        """
196 10
        data = {
197
            'receiver': {
198
                'type': receiver_type,
199
                'id': receiver_id,
200
            },
201
            'sender': sender,
202
            'msgtype': 'image',
203
            'image': {
204
                'media_id': media_id,
205
            }
206
        }
207 10
        return self._post('chat/send', data=data)
208
209 10
    def send_single_image(self, sender, receiver, media_id):
210
        """
211
        发送单聊图片消息
212
213
        :param sender: 发送人
214
        :param receiver: 接收人成员 ID
215
        :param media_id: 图片媒体文件id,可以调用上传素材文件接口获取
216
        :return: 返回的 JSON 数据包
217
        """
218
        return self.send_image(sender, 'single', receiver, media_id)
219
220 10
    def send_group_image(self, sender, receiver, media_id):
221
        """
222
        发送群聊图片消息
223
224
        :param sender: 发送人
225
        :param receiver: 会话 ID
226
        :param media_id: 图片媒体文件id,可以调用上传素材文件接口获取
227
        :return: 返回的 JSON 数据包
228
        """
229
        return self.send_image(sender, 'group', receiver, media_id)
230
231 10
    def send_file(self, sender, receiver_type, receiver_id, media_id):
232
        """
233
        发送文件消息
234
235
        详情请参考
236
        https://qydev.weixin.qq.com/wiki/index.php?title=企业会话接口说明
237
238
        :param sender: 发送人
239
        :param receiver_type: 接收人类型:single|group,分别表示:单聊|群聊
240
        :param receiver_id: 接收人的值,为userid|chatid,分别表示:成员id|会话id
241
        :param media_id: 文件id,可以调用上传素材文件接口获取, 文件须大于4字节
242
        :return: 返回的 JSON 数据包
243
        """
244 10
        data = {
245
            'receiver': {
246
                'type': receiver_type,
247
                'id': receiver_id,
248
            },
249
            'sender': sender,
250
            'msgtype': 'file',
251
            'file': {
252
                'media_id': media_id,
253
            }
254
        }
255 10
        return self._post('chat/send', data=data)
256
257 10
    def send_single_file(self, sender, receiver, media_id):
258
        """
259
        发送单聊文件消息
260
261
        :param sender: 发送人
262
        :param receiver: 接收人成员 ID
263
        :param media_id: 文件id,可以调用上传素材文件接口获取, 文件须大于4字节
264
        :return: 返回的 JSON 数据包
265
        """
266
        return self.send_file(sender, 'single', receiver, media_id)
267
268 10
    def send_group_file(self, sender, receiver, media_id):
269
        """
270
        发送群聊文件消息
271
272
        :param sender: 发送人
273
        :param receiver: 会话 ID
274
        :param media_id: 文件id,可以调用上传素材文件接口获取, 文件须大于4字节
275
        :return: 返回的 JSON 数据包
276
        """
277
        return self.send_file(sender, 'group', receiver, media_id)
278