group.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. # -*- coding: utf-8 -*-
  2. from __future__ import absolute_import, unicode_literals
  3. from library import to_text
  4. from library.wechatpy.client.api.base import BaseWeChatAPI
  5. class WeChatGroup(BaseWeChatAPI):
  6. def create(self, name):
  7. """
  8. 创建分组
  9. 详情请参考
  10. http://mp.weixin.qq.com/wiki/0/56d992c605a97245eb7e617854b169fc.html
  11. :param name: 分组名字(30个字符以内)
  12. :return: 返回的 JSON 数据包
  13. 使用示例::
  14. from wechatpy import WeChatClient
  15. client = WeChatClient('appid', 'secret')
  16. res = client.group.create('New Group')
  17. """
  18. name = to_text(name)
  19. return self._post(
  20. 'groups/create',
  21. data={'group': {'name': name}}
  22. )
  23. def get(self, user_id=None):
  24. """
  25. 查询所有分组或查询用户所在分组 ID
  26. 详情请参考
  27. http://mp.weixin.qq.com/wiki/0/56d992c605a97245eb7e617854b169fc.html
  28. :param user_id: 用户 ID,提供时查询该用户所在分组,否则查询所有分组
  29. :return: 所有分组列表或用户所在分组 ID
  30. 使用示例::
  31. from wechatpy import WeChatClient
  32. client = WeChatClient('appid', 'secret')
  33. group = client.group.get('openid')
  34. """
  35. if user_id is None:
  36. res = self._get(
  37. 'groups/get',
  38. result_processor=lambda x: x['groups']
  39. )
  40. else:
  41. res = self._post(
  42. 'groups/getid',
  43. data={'openid': user_id},
  44. result_processor=lambda x: x['groupid']
  45. )
  46. return res
  47. def update(self, group_id, name):
  48. """
  49. 修改分组名
  50. 详情请参考
  51. http://mp.weixin.qq.com/wiki/0/56d992c605a97245eb7e617854b169fc.html
  52. :param group_id: 分组id,由微信分配
  53. :param name: 分组名字(30个字符以内)
  54. :return: 返回的 JSON 数据包
  55. 使用示例::
  56. from wechatpy import WeChatClient
  57. client = WeChatClient('appid', 'secret')
  58. res = client.group.update(1234, 'New Name')
  59. """
  60. name = to_text(name)
  61. return self._post(
  62. 'groups/update',
  63. data={
  64. 'group': {
  65. 'id': int(group_id),
  66. 'name': name
  67. }
  68. }
  69. )
  70. def move_user(self, user_id, group_id):
  71. """
  72. 移动用户分组
  73. 详情请参考
  74. http://mp.weixin.qq.com/wiki/0/56d992c605a97245eb7e617854b169fc.html
  75. :param user_id: 用户 ID, 可以是单个或者列表,为列表时为批量移动用户分组
  76. :param group_id: 分组 ID
  77. :return: 返回的 JSON 数据包
  78. 使用示例::
  79. from wechatpy import WeChatClient
  80. client = WeChatClient('appid', 'secret')
  81. res = client.group.move_user('openid', 1234)
  82. """
  83. data = {'to_groupid': group_id}
  84. if isinstance(user_id, (tuple, list)):
  85. endpoint = 'groups/members/batchupdate'
  86. data['openid_list'] = user_id
  87. else:
  88. endpoint = 'groups/members/update'
  89. data['openid'] = user_id
  90. return self._post(endpoint, data=data)
  91. def delete(self, group_id):
  92. """
  93. 删除分组
  94. 详情请参考
  95. http://mp.weixin.qq.com/wiki/0/56d992c605a97245eb7e617854b169fc.html
  96. :param group_id: 分组 ID
  97. :return: 返回的 JSON 数据包
  98. 使用示例::
  99. from wechatpy import WeChatClient
  100. client = WeChatClient('appid', 'secret')
  101. res = client.group.delete(1234)
  102. """
  103. return self._post(
  104. 'groups/delete',
  105. data={
  106. 'group': {
  107. 'id': group_id
  108. }
  109. }
  110. )