@@ -30,6 +30,7 @@ class WeChat(object):
30
30
raw_group_url = 'https://api.weixin.qq.com/cgi-bin/groups/%s?access_token=%s'
31
31
raw_send_url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=%s'
32
32
raw_info_url = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s'
33
+ raw_user_url = 'https://api.weixin.qq.com/cgi-bin/user/get?access_token=%s&next_openid=%s'
33
34
all_data_type = ('image' , 'voice' , 'thumb' , 'video' )
34
35
token = Token ()
35
36
def __init__ (self , appid , passcode , secret , token_path , init_token = True ):
@@ -199,6 +200,17 @@ def check_error(self, resp, content, err_type):
199
200
except KeyError :
200
201
raise WeChatError ("Failed to find errcode: %s" % str (data ))
201
202
raise WeChatError ("Error message: %s" % str (data ))
203
+ elif err_type == 'data' :
204
+ tmp = None
205
+ try :
206
+ tmp = data ['data' ]
207
+ except KeyError :
208
+ try :
209
+ err = data ['errcode' ]
210
+ msg = data ['errmsg' ]
211
+ except KeyError :
212
+ raise WeChatError ("Failed to find errcode: %s" % str (data ))
213
+ raise WeChatError ("Error message: %s" % str (data ))
202
214
203
215
def send_message (self , user , msg ):
204
216
url = self .raw_send_url % self .token
@@ -271,6 +283,24 @@ def get_info(self, openid):
271
283
self .check_error (resp , content , 'info' )
272
284
return json .loads (content )
273
285
286
+ def get_user_list (self ):
287
+ url = self .raw_user_url % (self .token , '' )
288
+ resp , content = self .http .request (url , method = "GET" )
289
+ self .check_error (resp , content , 'data' )
290
+ data = json .loads (content )
291
+ total = data ['total' ]
292
+ count = data ['count' ]
293
+ next_openid = data ['next_openid' ]
294
+ result = list (data ['data' ]['openid' ])
295
+ while (count < total ):
296
+ url = self .raw_user_url % (self .token , next_openid .encode ('utf-8' ))
297
+ resp , content = self .http .request (url , method = "GET" )
298
+ self .check_error (resp , content , 'data' )
299
+ data = json .loads (content )
300
+ count += data ['count' ]
301
+ result .extend (data ['data' ]['openid' ])
302
+ return result
303
+
274
304
if __name__ == "__main__" :
275
305
logging .basicConfig (level = logging .INFO )
276
306
token_path = os .path .join (os .environ ['HOME' ], '.wechat' )
@@ -305,6 +335,7 @@ def get_info(self, openid):
305
335
user2 = 'abdfadfadfa'
306
336
#wechat.move_user(user, 100)
307
337
#print wechat.get_group_list()
308
- msg = {"text" : {"content" : "I love this game ..." }}
338
+ # msg = {"text": {"content": "I love this game ..."}}
309
339
#wechat.send(user, [msg, msg])
310
340
#print(wechat.get_info(user))
341
+ print (wechat .get_user_list ())
0 commit comments