def remove(id: str): secretFileContentJson = json.load( open("./line_secret_key", 'r', encoding='utf8')) line_bot_api = LineBotApi( secretFileContentJson.get("channel_access_token")) # 設定要移除的rich_menu rich_menu_name_array = ["rich_menu_b"] for rich_menu_name in rich_menu_name_array: # 讀取rich_menu_id檔案,並告知 Line 進行刪除,並在刪除後,把本地檔案內容清除 with open("素材/" + rich_menu_name + '/rich_menu_id', 'r') as myfile: rich_menu_id = myfile.read() deleteResult = line_bot_api.delete_rich_menu(id) print(deleteResult) f = open("素材/" + rich_menu_name + "/rich_menu_id", "w") f.write('') f.close()
"x": 1763, "y": 848, "width": 545, "height": 520 }, "action": { "type": "postback", "data": '{"kind":"menu","level":"%d","choice":"%d","item":"%d"}' % (0, 6, 0) } }] } rich_menu_list = line_bot_api.get_rich_menu_list() if rich_menu_list: print('rich_menu_list', rich_menu_list) line_bot_api.delete_rich_menu(line_bot_api.get_default_rich_menu()) else: myRichMenu_Id = line_bot_api.create_rich_menu( rich_menu=RichMenu.new_from_json_dict(rich_menu_initial)) print('myRichMenu_Id:', myRichMenu_Id) uploadImageFile = open('D:/rich_menu_forallusers.jpg', 'rb') setImageResponse = line_bot_api.set_rich_menu_image( myRichMenu_Id, 'image/jpeg', uploadImageFile) if setImageResponse: print('setImageResponse:', setImageResponse) setImageResponse = line_bot_api.set_default_rich_menu(myRichMenu_Id) default_rich_menu = line_bot_api.get_default_rich_menu() print('default_rich_menu', default_rich_menu)
from linebot import LineBotApi from config import Config from rich_menu import richmenu_list line_bot_api = LineBotApi(Config.CHANNEL_ACCESS_TOKEN) line_bot_api.delete_rich_menu('richmenu-b181ae67cff989ab3949e79676226331') rich_menu_list = line_bot_api.get_rich_menu_list() for rich_menu in rich_menu_list: print(rich_menu.rich_menu_id)
class TestLineBotApi(unittest.TestCase): maxDiff = None def setUp(self): self.tested = LineBotApi('channel_secret') self.rich_menu_id = 'richmenu-0000000000' self.user_id = 'userid' self.rich_menu = RichMenu( size=RichMenuSize(width=2500, height=1686), selected=False, name="nice richmenu", chatBarText="touch me", areas=[ RichMenuArea( RichMenuBounds(x=0, y=0, width=833, height=843), URITemplateAction(uri='https://line.me/R/nv/location/')) ]) @responses.activate def test_get_rich_menu(self): responses.add(responses.GET, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu/rich_menu_id', json={ "richMenuId": "rich_menu_id", "size": { "width": 2500, "height": 1686 }, "selected": False, "name": "name", "chatBarText": "chatBarText", "areas": [{ "bounds": { "x": 0, "y": 0, "width": 2500, "height": 1686 }, "action": { "type": "postback", "data": "action=buy&itemid=123" } }] }, status=200) rich_menu = self.tested.get_rich_menu('rich_menu_id') print(rich_menu) request = responses.calls[0].request self.assertEqual(request.method, 'GET') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu/rich_menu_id') self.assertEqual(rich_menu.rich_menu_id, 'rich_menu_id') self.assertEqual(rich_menu.size.width, 2500) self.assertEqual(rich_menu.size.height, 1686) self.assertEqual(rich_menu.selected, False) self.assertEqual(rich_menu.name, 'name') self.assertEqual(rich_menu.chat_bar_text, 'chatBarText') self.assertEqual(rich_menu.areas[0].bounds.x, 0) self.assertEqual(rich_menu.areas[0].bounds.y, 0) self.assertEqual(rich_menu.areas[0].bounds.width, 2500) self.assertEqual(rich_menu.areas[0].bounds.height, 1686) self.assertEqual(rich_menu.areas[0].action.type, 'postback') self.assertEqual(rich_menu.areas[0].action.data, 'action=buy&itemid=123') @responses.activate def test_create_rich_menu(self): responses.add(responses.POST, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu', json={"richMenuId": "richMenuId"}, status=200) rich_menu = RichMenu( size=RichMenuSize(width=2500, height=1686), selected=False, name="nice richmenu", chatBarText="touch me", areas=[ RichMenuArea( RichMenuBounds(x=0, y=0, width=833, height=843), URITemplateAction(uri='https://line.me/R/nv/location/')) ]) result = self.tested.create_rich_menu(rich_menu) request = responses.calls[0].request self.assertEqual(request.method, 'POST') self.assertEqual(request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu') self.assertEqual(result, "richMenuId") @responses.activate def test_delete_rich_menu(self): responses.add(responses.DELETE, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu/rich_menu_id', json={}, status=200) self.tested.delete_rich_menu('rich_menu_id') request = responses.calls[0].request self.assertEqual(request.method, 'DELETE') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu/rich_menu_id') @responses.activate def test_get_rich_menu_id_of_user(self): responses.add(responses.GET, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/user_id/richmenu', json={"richMenuId": "richMenuId"}, status=200) result = self.tested.get_rich_menu_id_of_user('user_id') request = responses.calls[0].request self.assertEqual(request.method, 'GET') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/user_id/richmenu') self.assertEqual(result, "richMenuId") @responses.activate def test_link_rich_menu_to_user(self): responses.add(responses.POST, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/user_id/richmenu/rich_menu_id', json={}, status=200) self.tested.link_rich_menu_to_user('user_id', 'rich_menu_id') request = responses.calls[0].request self.assertEqual(request.method, 'POST') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/user_id/richmenu/rich_menu_id') @responses.activate def test_unlink_rich_menu_from_user(self): responses.add(responses.DELETE, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/user_id/richmenu', json={}, status=200) self.tested.unlink_rich_menu_from_user('user_id') request = responses.calls[0].request self.assertEqual(request.method, 'DELETE') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/user_id/richmenu') @responses.activate def test_get_rich_menu_list(self): responses.add(responses.GET, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu/list', json={ "richmenus": [{ "richMenuId": "rich_menu_id", "size": { "width": 2500, "height": 1686 }, "selected": False, "name": "name", "chatBarText": "chatBarText", "areas": [{ "bounds": { "x": 0, "y": 0, "width": 2500, "height": 1686 }, "action": { "type": "postback", "data": "action=buy&itemid=123" } }] }] }, status=200) rich_menus = self.tested.get_rich_menu_list() request = responses.calls[0].request self.assertEqual(request.method, 'GET') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu/list') self.assertEqual(rich_menus[0].rich_menu_id, 'rich_menu_id') self.assertEqual(rich_menus[0].size.width, 2500) self.assertEqual(rich_menus[0].size.height, 1686) self.assertEqual(rich_menus[0].selected, False) self.assertEqual(rich_menus[0].name, 'name') self.assertEqual(rich_menus[0].chat_bar_text, 'chatBarText') self.assertEqual(rich_menus[0].areas[0].bounds.x, 0) self.assertEqual(rich_menus[0].areas[0].bounds.y, 0) self.assertEqual(rich_menus[0].areas[0].bounds.width, 2500) self.assertEqual(rich_menus[0].areas[0].bounds.height, 1686) self.assertEqual(rich_menus[0].areas[0].action.type, 'postback') self.assertEqual(rich_menus[0].areas[0].action.data, 'action=buy&itemid=123') @responses.activate def test_link_rich_menu_to_users(self): responses.add(responses.POST, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu/bulk/link', json={}, status=202) self.tested.link_rich_menu_to_users(['user_id1', 'user_id2'], 'rich_menu_id') request = responses.calls[0].request self.assertEqual(request.method, 'POST') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu/bulk/link') self.assertEqual(json.loads(request.body), { "richMenuId": "rich_menu_id", "userIds": ["user_id1", "user_id2"], }) @responses.activate def test_unlink_rich_menu_to_users(self): responses.add(responses.POST, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu/bulk/unlink', json={}, status=202) self.tested.unlink_rich_menu_from_users(['user_id1', 'user_id2'], 'rich_menu_id') request = responses.calls[0].request self.assertEqual(request.method, 'POST') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu/bulk/unlink') self.assertEqual(json.loads(request.body), { "userIds": ["user_id1", "user_id2"], }) @responses.activate def test_set_default_rich_menu(self): responses.add(responses.POST, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/all/richmenu/rich_menu_id', json={}, status=200) self.tested.set_default_rich_menu('rich_menu_id') request = responses.calls[0].request self.assertEqual(request.method, 'POST') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/all/richmenu/rich_menu_id') @responses.activate def test_get_default_rich_menu(self): responses.add(responses.GET, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/all/richmenu', json={"richMenuId": "richMenuId"}, status=200) result = self.tested.get_default_rich_menu() request = responses.calls[0].request self.assertEqual(request.method, 'GET') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/all/richmenu') self.assertEqual(result, "richMenuId") @responses.activate def test_cancel_default_rich_menu(self): responses.add(responses.DELETE, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/all/richmenu', json={}, status=200) self.tested.cancel_default_rich_menu() request = responses.calls[0].request self.assertEqual(request.method, 'DELETE') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/all/richmenu') @responses.activate def test_get_rich_menu_image(self): rich_menu_id = '1234' body = b'hogieoidksk' responses.add(responses.GET, LineBotApi.DEFAULT_API_DATA_ENDPOINT + '/v2/bot/richmenu/{rich_menu_id}/content'.format( rich_menu_id=rich_menu_id), body=body, status=200) res = self.tested.get_rich_menu_image(rich_menu_id) request = responses.calls[0].request self.assertEqual(request.method, 'GET') self.assertEqual( request.url, LineBotApi.DEFAULT_API_DATA_ENDPOINT + '/v2/bot/richmenu/{rich_menu_id}/content'.format( rich_menu_id=rich_menu_id), ) self.assertEqual(body, res.content) @responses.activate def test_set_rich_menu_image(self): rich_menu_id = '1234' body = b'hogieoidksk' responses.add(responses.POST, LineBotApi.DEFAULT_API_DATA_ENDPOINT + '/v2/bot/richmenu/{rich_menu_id}/content'.format( rich_menu_id=rich_menu_id), json={}, status=200) self.tested.set_rich_menu_image(rich_menu_id=rich_menu_id, content_type='image/jpeg', content=body) request = responses.calls[0].request self.assertEqual('POST', request.method) self.assertEqual( LineBotApi.DEFAULT_API_DATA_ENDPOINT + '/v2/bot/richmenu/{rich_menu_id}/content'.format( rich_menu_id=rich_menu_id), request.url)
#!/usr/bin/env python3 # -*- coding: utf-8 from linebot import (LineBotApi, WebhookHandler) access_token = 'dWhp1zz+Irv8ktCX06FWQFpF0BwSrzs5VSBUK/Fp7NLG0kBAVZe2VTwko8d0KO3ajTOw/jlwJPtpPYe+dVhN6G0eWwbdoLbECjMEbQQriKKk/imWqL8mA19YOiF9JaGwD9gmmpnEhLjwQvXek8FkDwdB04t89/1O/w1cDnyilFU=' line_bot_api = LineBotApi( '{my_access_token}'.format(my_access_token=access_token)) rich_menus_id = 'richmenu-18c77570d5310069d934313683a2b688' line_bot_api.delete_rich_menu( '{my_rich_menus_id}'.format(my_rich_menus_id=rich_menus_id))
''' 移除帳號內的richmenu ''' from linebot import (LineBotApi) import json secretFileContentJson = json.load( open("./line_secret_key", 'r', encoding='utf8')) line_bot_api = LineBotApi(secretFileContentJson.get("channel_access_token")) # 設定要移除的rich_menu rich_menu_name_array = ["rich_menu_0"] for rich_menu_name in rich_menu_name_array: # 讀取rich_menu_id檔案,並告知 Line 進行刪除,並在刪除後,把本地檔案內容清除 with open("素材/" + rich_menu_name + '/rich_menu_id', 'r') as myfile: rich_menu_id = myfile.read() deleteResult = line_bot_api.delete_rich_menu(rich_menu_id) print(deleteResult) f = open("素材/" + rich_menu_name + "/rich_menu_id", "w") f.write('') f.close()
class TestLineBotApi(unittest.TestCase): maxDiff = None def setUp(self): self.tested = LineBotApi('channel_secret') self.rich_menu_id = 'richmenu-0000000000' self.user_id = 'userid' self.rich_menu = RichMenu( size=RichMenuSize(width=2500, height=1686), selected=False, name="nice richmenu", chatBarText="touch me", areas=[ RichMenuArea(RichMenuBounds(x=0, y=0, width=833, height=843), URITemplateAction(uri='line://nv/location')) ]) @responses.activate def test_get_rich_menu(self): responses.add(responses.GET, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu/rich_menu_id', json={ "richMenuId": "rich_menu_id", "size": { "width": 2500, "height": 1686 }, "selected": False, "name": "name", "chatBarText": "chatBarText", "areas": [{ "bounds": { "x": 0, "y": 0, "width": 2500, "height": 1686 }, "action": { "type": "postback", "data": "action=buy&itemid=123" } }] }, status=200) rich_menu = self.tested.get_rich_menu('rich_menu_id') print(rich_menu) request = responses.calls[0].request self.assertEqual(request.method, 'GET') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu/rich_menu_id') self.assertEqual(rich_menu.rich_menu_id, 'rich_menu_id') self.assertEqual(rich_menu.size.width, 2500) self.assertEqual(rich_menu.size.height, 1686) self.assertEqual(rich_menu.selected, False) self.assertEqual(rich_menu.name, 'name') self.assertEqual(rich_menu.chat_bar_text, 'chatBarText') self.assertEqual(rich_menu.areas[0].bounds.x, 0) self.assertEqual(rich_menu.areas[0].bounds.y, 0) self.assertEqual(rich_menu.areas[0].bounds.width, 2500) self.assertEqual(rich_menu.areas[0].bounds.height, 1686) self.assertEqual(rich_menu.areas[0].action.type, 'postback') self.assertEqual(rich_menu.areas[0].action.data, 'action=buy&itemid=123') @responses.activate def test_create_rich_menu(self): responses.add(responses.POST, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu', json={"richMenuId": "richMenuId"}, status=200) rich_menu = RichMenu( size=RichMenuSize(width=2500, height=1686), selected=False, name="nice richmenu", chatBarText="touch me", areas=[ RichMenuArea(RichMenuBounds(x=0, y=0, width=833, height=843), URITemplateAction(uri='line://nv/location')) ]) result = self.tested.create_rich_menu(rich_menu) request = responses.calls[0].request self.assertEqual(request.method, 'POST') self.assertEqual(request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu') self.assertEqual(result, "richMenuId") @responses.activate def test_delete_rich_menu(self): responses.add(responses.DELETE, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu/rich_menu_id', json={}, status=200) self.tested.delete_rich_menu('rich_menu_id') request = responses.calls[0].request self.assertEqual(request.method, 'DELETE') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu/rich_menu_id') @responses.activate def test_get_rich_menu_id_of_user(self): responses.add(responses.GET, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/user_id/richmenu', json={"richMenuId": "richMenuId"}, status=200) result = self.tested.get_rich_menu_id_of_user('user_id') request = responses.calls[0].request self.assertEqual(request.method, 'GET') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/user_id/richmenu') self.assertEqual(result, "richMenuId") @responses.activate def test_link_rich_menu_to_user(self): responses.add(responses.POST, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/user_id/richmenu/rich_menu_id', json={}, status=200) self.tested.link_rich_menu_to_user('user_id', 'rich_menu_id') request = responses.calls[0].request self.assertEqual(request.method, 'POST') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/user_id/richmenu/rich_menu_id') @responses.activate def test_unlink_rich_menu_from_user(self): responses.add(responses.DELETE, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/user_id/richmenu', json={}, status=200) self.tested.unlink_rich_menu_from_user('user_id') request = responses.calls[0].request self.assertEqual(request.method, 'DELETE') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/user_id/richmenu') @responses.activate def test_get_rich_menu_list(self): responses.add(responses.GET, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu/list', json={ "richmenus": [{ "richMenuId": "rich_menu_id", "size": { "width": 2500, "height": 1686 }, "selected": False, "name": "name", "chatBarText": "chatBarText", "areas": [{ "bounds": { "x": 0, "y": 0, "width": 2500, "height": 1686 }, "action": { "type": "postback", "data": "action=buy&itemid=123" } }] }] }, status=200) rich_menus = self.tested.get_rich_menu_list() request = responses.calls[0].request self.assertEqual(request.method, 'GET') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu/list') self.assertEqual(rich_menus[0].rich_menu_id, 'rich_menu_id') self.assertEqual(rich_menus[0].size.width, 2500) self.assertEqual(rich_menus[0].size.height, 1686) self.assertEqual(rich_menus[0].selected, False) self.assertEqual(rich_menus[0].name, 'name') self.assertEqual(rich_menus[0].chat_bar_text, 'chatBarText') self.assertEqual(rich_menus[0].areas[0].bounds.x, 0) self.assertEqual(rich_menus[0].areas[0].bounds.y, 0) self.assertEqual(rich_menus[0].areas[0].bounds.width, 2500) self.assertEqual(rich_menus[0].areas[0].bounds.height, 1686) self.assertEqual(rich_menus[0].areas[0].action.type, 'postback') self.assertEqual(rich_menus[0].areas[0].action.data, 'action=buy&itemid=123')
import requests as re CAT = "pmzekB9tmEgsQdpAMMUI90jnUCpGUEVlzWpw+XuHDU+GrBvV1aNFacIkHrBOp1iszYCTBM90BJWoMINmkImKpBtbwmeiGtIv4deoK/CtGbgjRiniW9j8YDd5A0nKY3z9yAwySjjj3kZYYDQsfGVQpQdB04t89/1O/w1cDnyilFU=" CS = "04c8f8542383ce366112a122977ae64d" w = 2500 h = 1686 # Channel Access Token line_bot_api = LineBotApi(CAT) # Channel Secret handler = WebhookHandler(CS) rich_menu_list = line_bot_api.get_rich_menu_list() for rich_menu in rich_menu_list: line_bot_api.delete_rich_menu(rich_menu.rich_menu_id) rich_menu_to_create = RichMenu( size=RichMenuSize(width=w, height=h), selected=False, name="Nice richmenu", chat_bar_text="Start here", areas=[ RichMenuArea(bounds=RichMenuBounds(x=0, y=0, width=w / 3, height=h / 2), action=PostbackAction(label='basicInfo', data='basicInfo')), RichMenuArea(bounds=RichMenuBounds(x=0, y=h / 2, width=w / 3, height=h / 2),
def delet_all_richmenu(self): line_bot_api = LineBotApi(LINE_CHANNEL_ACCESS_TOKEN) rich_menu_list = line_bot_api.get_rich_menu_list() for key in rich_menu_list: line_bot_api.delete_rich_menu(key.rich_menu_id) print(key.rich_menu_id + "is delete")
class TestLineBotApi(unittest.TestCase): maxDiff = None def setUp(self): self.tested = LineBotApi('channel_secret') self.rich_menu_id = 'richmenu-0000000000' self.user_id = 'userid' self.rich_menu = RichMenu( size=RichMenuBound( width=2500, height=1686 ), selected=False, name="nice richmenu", chatBarText="touch me", areas=[ RichMenuArea( RichMenuBound( x=0, y=0, width=833, height=843 ), URITemplateAction( uri='line://nv/location' ) ) ] ) @responses.activate def test_delete_rich_menu(self): responses.add( responses.DELETE, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu/{rich_menu_id}'.format( rich_menu_id=self.rich_menu_id ), json={}, status=200 ) self.tested.delete_rich_menu(self.rich_menu_id) request = responses.calls[0].request self.assertEqual(request.method, 'DELETE') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu/{rich_menu_id}'.format( rich_menu_id=self.rich_menu_id ) ) @responses.activate def test_link_rich_menu_to_user(self): responses.add( responses.POST, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/{user_id}/richmenu/{rich_menu_id}'.format( user_id=self.user_id, rich_menu_id=self.rich_menu_id ), json={}, status=200 ) self.tested.link_rich_menu_to_user(self.user_id, self.rich_menu_id) request = responses.calls[0].request self.assertEqual(request.method, 'POST') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/{user_id}/richmenu/{rich_menu_id}'.format( user_id=self.user_id, rich_menu_id=self.rich_menu_id ) ) @responses.activate def test_unlink_rich_menu_from_user(self): responses.add( responses.DELETE, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/{user_id}/richmenu'.format(user_id=self.user_id), json={}, status=200 ) self.tested.unlink_rich_menu_from_user(self.user_id) request = responses.calls[0].request self.assertEqual(request.method, 'DELETE') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/{user_id}/richmenu'.format(user_id=self.user_id) ) @responses.activate def test_get_rich_menu_id_of_user(self): responses.add( responses.GET, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/{user_id}/richmenu'.format(user_id=self.user_id), json={}, status=200 ) self.tested.get_rich_menu_id_of_user(self.user_id) request = responses.calls[0].request self.assertEqual(request.method, 'GET') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/user/{user_id}/richmenu'.format(user_id=self.user_id) ) @responses.activate def test_get_rich_menu_list(self): responses.add( responses.GET, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu/list', json={'richmenus': []}, status=200 ) self.tested.get_rich_menu_list() request = responses.calls[0].request self.assertEqual(request.method, 'GET') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu/list' ) @responses.activate def test_create_rich_menu(self): responses.add( responses.POST, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu', json={}, status=200 ) self.tested.create_rich_menu(self.rich_menu) request = responses.calls[0].request self.assertEqual(request.method, 'POST') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu' )
from linebot import (LineBotApi, WebhookHandler) line_bot_api = LineBotApi( '9gEcD6pNZWA9xe65jwSrzzykJnBNYhgBdqaUDpvafeMTyG0D+LELBnV/53HwYiue8bTWswthp0SjGEOzGy8UroCrCpfs2WWwbjGynTVFzJIjFYq2dAJZpDDXPqf5ki46kWvQbmmfCl9O58pb2QFFEQdB04t89/1O/w1cDnyilFU=' ) line_bot_api.delete_rich_menu('richmenu-d17c70040ba5ef8150ddedbbcc6a52dc') rich_menu_list = line_bot_api.get_rich_menu_list() for rich_menu in rich_menu_list: print(rich_menu.rich_menu_id)
import json from linebot import (LineBotApi, WebhookHandler) from createDBInstance import db from RichMenu import RichMenu with open('Config.json', 'r') as f: config_dict = json.load(f) # Channel access token line_bot_api = LineBotApi(config_dict['CHANNEL_ACCESS_TOKEN']) line_bot_api.delete_rich_menu('richmenu-77b63d87ac18c77137cab9b4af532865')
def handler(event, context): """ リッチメニューを作成します 使用するサンプル画像は files/richmenu_tmp.png にあります(必要に応じて差し替えてください) コード中の座標・サイズの数値は、サンプル画像に合わせた数値となっています """ line_bot_api = LineBotApi(os.environ['LINE_CHANNEL_ACCESS_TOKEN']) # リッチメニューの作成 rich_menu_to_create = RichMenu( size=RichMenuSize(width=2500, height=1658), selected=False, name="tmp richmenu", chat_bar_text="メニューはこちらをタップ", areas=[ # 設定時間の確認 RichMenuArea( bounds=RichMenuBounds(x=133, y=350, width=1400, height=300), action=PostbackAction( display_text=None, label='設定時間の確認', data='action=check' ) ), # 当日の通知時間(設定) RichMenuArea( bounds=RichMenuBounds(x=0, y=1033, width=625, height=625), action=DatetimePickerAction( label='gomi_today', data='action=set&target=gomi_today', mode='time', initial='07:00', max='07:59', min='00:00' ) ), # 当日の通知時間(削除) RichMenuArea( bounds=RichMenuBounds(x=625, y=1033, width=625, height=625), action=PostbackAction( display_text=None, label='Postback action', data='action=remove&target=gomi_today' ) ), # 前日の通知時間(設定) RichMenuArea( bounds=RichMenuBounds(x=1250, y=1033, width=625, height=625), action=DatetimePickerAction( label='gomi_day_before', data='action=set&target=gomi_day_before', mode='time', initial='18:00', max='23:59', min='16:00' ) ), # 前日の通知時間(削除) RichMenuArea( bounds=RichMenuBounds(x=1875, y=1033, width=625, height=625), action=PostbackAction( display_text=None, label='Postback action', data='action=remove&target=gomi_day_before' ) ), # フリースペース(例: テキストを出すだけ) RichMenuArea( bounds=RichMenuBounds(x=1667, y=0, width=833, height=833), action=MessageAction(label='hogehoge', text='hogehoge') ), # フリースペース(例: アプリ内ブラウザで指定URLにアクセス) RichMenuArea( bounds=RichMenuBounds(x=1667, y=0, width=833, height=833), action=URIAction(label='URI', uri='https://heptagon.co.jp/') ), ] ) new_richmenu_id = line_bot_api.create_rich_menu(rich_menu=rich_menu_to_create) # リッチメニュー用の画像をアップロード with open('files/richmenu_tmp.png', 'rb') as f: line_bot_api.set_rich_menu_image(new_richmenu_id, 'image/png', f) # リッチメニューをデフォルトに line_bot_api.set_default_rich_menu(new_richmenu_id) # デフォルトのリッチメニュー以外は削除する menu_list = line_bot_api.get_rich_menu_list() for menu in menu_list: if menu.rich_menu_id != new_richmenu_id: line_bot_api.delete_rich_menu(menu.rich_menu_id) return { "rich_menu_id": new_richmenu_id }