123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- # -*- coding: utf-8 -*-
- from __future__ import absolute_import, unicode_literals
- from library.wechatbase.exceptions import WeChatException
- from library.wechatpy.client.api.base import BaseWeChatAPI
- class WeChatMenu(BaseWeChatAPI):
- def get(self):
- """
- 查询自定义菜单。
- 详情请参考
- http://mp.weixin.qq.com/wiki/16/ff9b7b85220e1396ffa16794a9d95adc.html
- :return: 返回的 JSON 数据包
- 使用示例::
- from wechatpy import WeChatClient
- client = WeChatClient('appid', 'secret')
- menu = client.menu.get()
- """
- try:
- return self._get('menu/get')
- except WeChatException as e:
- if e.errCode == 46003:
- # menu not exist
- return None
- else:
- raise e
- def create(self, menu_data):
- """
- 创建自定义菜单 ::
- from wechatpy import WeChatClient
- client = WeChatClient("appid", "secret")
- client.menu.create({
- "button":[
- {
- "type":"click",
- "name":"今日歌曲",
- "key":"V1001_TODAY_MUSIC"
- },
- {
- "type":"click",
- "name":"歌手简介",
- "key":"V1001_TODAY_SINGER"
- },
- {
- "name":"菜单",
- "sub_button":[
- {
- "type":"view",
- "name":"搜索",
- "url":"http://www.soso.com/"
- },
- {
- "type":"view",
- "name":"视频",
- "url":"http://v.qq.com/"
- },
- {
- "type":"click",
- "name":"赞一下我们",
- "key":"V1001_GOOD"
- }
- ]
- }
- ]
- })
- 详情请参考
- https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013
- :param menu_data: Python 字典
- :return: 返回的 JSON 数据包
- """
- return self._post(
- 'menu/create',
- data=menu_data
- )
- def update(self, menu_data):
- """
- 更新自定义菜单 ::
- from wechatpy import WeChatClient
- client = WeChatClient("appid", "secret")
- client.menu.update({
- "button":[
- {
- "type":"click",
- "name":"今日歌曲",
- "key":"V1001_TODAY_MUSIC"
- },
- {
- "type":"click",
- "name":"歌手简介",
- "key":"V1001_TODAY_SINGER"
- },
- {
- "name":"菜单",
- "sub_button":[
- {
- "type":"view",
- "name":"搜索",
- "url":"http://www.soso.com/"
- },
- {
- "type":"view",
- "name":"视频",
- "url":"http://v.qq.com/"
- },
- {
- "type":"click",
- "name":"赞一下我们",
- "key":"V1001_GOOD"
- }
- ]
- }
- ]
- })
- 详情请参考
- https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013
- :param menu_data: Python 字典
- :return: 返回的 JSON 数据包
- """
- return self.create(menu_data)
- def delete(self):
- """
- 删除自定义菜单。
- 详情请参考
- http://mp.weixin.qq.com/wiki/16/8ed41ba931e4845844ad6d1eeb8060c8.html
- :return: 返回的 JSON 数据包
- 使用示例::
- from wechatpy import WeChatClient
- client = WeChatClient('appid', 'secret')
- res = client.menu.delete()
- """
- return self._get('menu/delete')
- def get_menu_info(self):
- """
- 获取自定义菜单配置
- 详情请参考
- http://mp.weixin.qq.com/wiki/17/4dc4b0514fdad7a5fbbd477aa9aab5ed.html
- :return: 返回的 JSON 数据包
- 使用示例::
- from wechatpy import WeChatClient
- client = WeChatClient('appid', 'secret')
- menu_info = client.menu.get_menu_info()
- """
- return self._get('get_current_selfmenu_info')
- def add_conditional(self, menu_data):
- """
- 创建个性化菜单 ::
- from wechatpy import WeChatClient
- client = WeChatClient("appid", "secret")
- client.menu.add_conditional({
- "button":[
- {
- "type":"click",
- "name":"今日歌曲",
- "key":"V1001_TODAY_MUSIC"
- },
- {
- "type":"click",
- "name":"歌手简介",
- "key":"V1001_TODAY_SINGER"
- },
- {
- "name":"菜单",
- "sub_button":[
- {
- "type":"view",
- "name":"搜索",
- "url":"http://www.soso.com/"
- },
- {
- "type":"view",
- "name":"视频",
- "url":"http://v.qq.com/"
- },
- {
- "type":"click",
- "name":"赞一下我们",
- "key":"V1001_GOOD"
- }
- ]
- }
- ],
- "matchrule":{
- "group_id":"2",
- "sex":"1",
- "country":"中国",
- "province":"广东",
- "city":"广州",
- "client_platform_type":"2"
- }
- })
- 详情请参考
- http://mp.weixin.qq.com/wiki/0/c48ccd12b69ae023159b4bfaa7c39c20.html
- :param menu_data: Python 字典
- :return: 返回的 JSON 数据包
- """
- return self._post(
- 'menu/addconditional',
- data=menu_data
- )
- def del_conditional(self, menu_id):
- """
- 删除个性化菜单
- 详情请参考
- http://mp.weixin.qq.com/wiki/0/c48ccd12b69ae023159b4bfaa7c39c20.html
- :param menu_id: 菜单ID
- :return: 返回的 JSON 数据包
- 使用示例::
- from wechatpy import WeChatClient
- client = WeChatClient('appid', 'secret')
- res = client.menu.del_conditional('menu_id')
- """
- return self._post(
- 'menu/delconditional',
- data={'menuid': menu_id}
- )
- def try_match(self, user_id):
- """
- 测试个性化菜单匹配结果
- 详情请参考
- http://mp.weixin.qq.com/wiki/0/c48ccd12b69ae023159b4bfaa7c39c20.html
- :param user_id: 可以是粉丝的OpenID,也可以是粉丝的微信号。
- :return: 该接口将返回菜单配置
- 使用示例::
- from wechatpy import WeChatClient
- client = WeChatClient('appid', 'secret')
- res = client.menu.try_match('openid')
- """
- return self._post(
- 'menu/trymatch',
- data={'user_id': user_id}
- )
|