def handle_message(event):
    # QuickMenu options
    optionList = ['<News>', '<Weather>']
    infoItems = [
        QuickReplyButton(
            action=MessageAction(label=f"{option}", text=f"{option}"))
        for option in optionList
    ]
    # Call up the Informant
    if event.message.text == "Informant":
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text="What information do you want?",
                            quick_reply=QuickReply(infoItems)))
    # News columns
    elif event.message.text == "<News>":
        js = fetchNews("jp", "general")
        newsColumns = [
            CarouselColumn(thumbnail_image_url=articles["urlToImage"],
                           title=articles["source"]["name"],
                           text="Powered by NewsAPI.org",
                           actions=[
                               URITemplateAction(label="Check",
                                                 uri=articles["url"])
                           ]) for articles in js["articles"]
        ]

        newsCarousel = TemplateSendMessage(
            alt_text='news carousel',
            template=CarouselTemplate(columns=newsColumns))

        line_bot_api.reply_message(event.reply_token, messages=newsCarousel)
    # Weather location prompt
    elif event.message.text == "<Weather>":
        line_bot_api.reply_message(event.reply_token, [
            TextSendMessage(text="Send your location information."),
            TextSendMessage(text='line://nv/location')
        ])
Ejemplo n.º 2
0
def response_message(event):
    # import pdb; pdb.set_trace()
    print(event)
    # notesのCarouselColumnの各値は、変更してもらって結構です。
    notes = [
        CarouselColumn(
            thumbnail_image_url=
            "https://cdn-ak.f.st-hatena.com/images/fotolife/m/mon3221/20171209/20171209094534.png",
            title="寝坊確認",
            text="田久保が寝ているかどうかを人感センサーで感知します。",
            # actions=[{"type": "message","label": "サイトURL","text": "https://renttle.jp/notes/kota/7"}]
        ),
        CarouselColumn(
            thumbnail_image_url="https://renttle.jp/static/img/renttle03.jpg",
            title="ReleaseNote】創作中の活動を報告する機能を追加しました。",
            text="創作中や考え中の時点の活動を共有できる機能を追加しました。",
            actions=[{
                "type": "message",
                "label": "サイトURL",
                "text": "https://renttle.jp/notes/kota/6"
            }]),
        CarouselColumn(
            thumbnail_image_url="https://renttle.jp/static/img/renttle04.jpg",
            title="【ReleaseNote】タグ機能を追加しました。",
            text="「イベントを作成」「記事を投稿」「本を登録」にタグ機能を追加しました。",
            actions=[{
                "type": "message",
                "label": "サイトURL",
                "text": "https://renttle.jp/notes/kota/5"
            }])
    ]

    messages = TemplateSendMessage(
        alt_text='template',
        template=CarouselTemplate(columns=notes),
    )

    line_bot_api.reply_message(event.reply_token, messages=messages)
Ejemplo n.º 3
0
def createCarousel(titles, links, imgs, push_num):
	carousel_message = TemplateSendMessage(
		type = 'template',
		alt_text = 'TowerSaviors Template',
		template = CarouselTemplate(
			type = 'carousel',
			columns = [
				CarouselColumn(
					thumbnail_image_url = imgs[i],
					title = helper.activity_order[i],
					text = titles[i],
					actions = [
						URITemplateAction(
							type = 'uri',
							label = 'Detail',
							uri = links[i]
						)
					]
				) for i in range(push_num)
			]
		)
	)
	return carousel_message
Ejemplo n.º 4
0
 def __fetch_list(self):
     favourites = self.__redis.hkeys(self.__userid)
     if favourites:
         columns = []
         for index in favourites:
             news = json.loads(self.__redis.hget(self.__userid, index))
             columns.append(
                 CarouselColumn(thumbnail_image_url=news['_News__url'],
                                text=news['_News__title'],
                                actions=[
                                    PostbackTemplateAction(label='Read',
                                                           data='@Read=' +
                                                           str(index)),
                                    PostbackTemplateAction(label='Delete',
                                                           data='@Delete=' +
                                                           str(index))
                                ]))
         message = TemplateSendMessage(
             alt_text='Carousel template',
             template=CarouselTemplate(columns=columns))
     else:
         message = TextSendMessage('Empty!')
     return message
Ejemplo n.º 5
0
def getMoreKnowledge():
    result = []
    res = requests.get(
        'https://www.who.int/emergencies/diseases/novel-coronavirus-2019/advice-for-public/videos'
    )
    soup = BeautifulSoup(res.text, 'html.parser')
    videos = soup.find('div', attrs={'id': 'PageContent_C054_Col01'})
    for num in range(0, 5):
        url = videos.select('iframe')[num]['src']
        soup_url = BeautifulSoup(requests.get(url).text, 'html.parser')
        title = prepareTitle(soup_url.title.text)
        column = CarouselColumn(title=title,
                                text='views:' + str(r.incr(title)),
                                actions=[
                                    URITemplateAction(label='More', uri=url),
                                ])
        result.append(column)
    carousel = TemplateSendMessage(alt_text="5 more pieces of knowledge",
                                   template=CarouselTemplate(columns=result))
    result_text = 'Find more videos about coronavirus, please click: ' \
                  'https://www.who.int/emergencies/diseases/novel-coronavirus-2019/advice-for-public/videos '
    result = [carousel, TextSendMessage(text=result_text)]
    return result
Ejemplo n.º 6
0
def personal_search_template(sencond=False):
    _columns = [
        CarouselColumn(
            title='Categories-Job Level',
            text="Please select category that you want to set requirement",
            actions=[
                MessageAction(
                    label="Job Title",
                    text="PS-title",
                ),
                MessageAction(label="Job Level", text="PS-level"),
                MessageAction(label="Location", text="PS-location")
            ]),
        CarouselColumn(
            title="Categories-Department Level",
            text="Please select category that you want to set requirement",
            actions=[
                MessageAction(label="Job Network", text="PS-job_network"),
                MessageAction(label="Job Family", text="PS-job_family"),
                MessageAction(label="Department", text="PS-department")
            ])
    ]
    if sencond == True:
        _columns.insert(
            0,
            CarouselColumn(
                title="Settings",
                text="If you complete the personal seeting, press 'Complete'.",
                actions=[
                    MessageAction(label="Complete", text="CZ-complete"),
                    MessageAction(label="Show My Setting",
                                  text="CZ-showczsetting"),
                    MessageAction(label="Reset My Setting", text="CZ-reset")
                ]))
    template = TemplateSendMessage(alt_text='Personal Search Template',
                                   template=CarouselTemplate(columns=_columns))
    return template
Ejemplo n.º 7
0
def response_message(event):
    # notesのCarouselColumnの各値は、変更してもらって結構です。
    notes = [
        CarouselColumn(
            thumbnail_image_url=
            "https://tan-designs.net/wp/wp-content/uploads/2018/01/kabi.jpg",
            title="もふ?非もふ?",
            text="直感的にお答え下さい!",
            actions=[{
                "type": "message",
                "label": "もふ💕",
                "text": "https://www.google.com"
            }, {
                "type": "message",
                "label": "非もふ⚡",
                "text": "https://www.google.com"
            }])

        # CarouselColumn(thumbnail_image_url="https://renttle.jp/static/img/renttle03.jpg",
        #                title="ReleaseNote】創作中の活動を報告する機能を追加しました。",
        #                text="創作中や考え中の時点の活動を共有できる機能を追加しました。",
        #                actions=[
        #                    {"type": "message", "label": "サイトURL", "text": "https://renttle.jp/notes/kota/6"}]),
        #
        # CarouselColumn(thumbnail_image_url="https://renttle.jp/static/img/renttle04.jpg",
        #                title="【ReleaseNote】タグ機能を追加しました。",
        #                text="「イベントを作成」「記事を投稿」「本を登録」にタグ機能を追加しました。",
        #                actions=[
        #                    {"type": "message", "label": "サイトURL", "text": "https://renttle.jp/notes/kota/5"}])
    ]

    messages = TemplateSendMessage(
        alt_text='template',
        template=CarouselTemplate(columns=notes),
    )

    line_bot_api.reply_message(event.reply_token, messages=messages)
Ejemplo n.º 8
0
def carousel_homework(content: List[Dict]) -> Dict:
    default = {  # `None` marks the attribute as required
        'hwIid': None,
        'member': None,
        'noOfSet': 3,
        'personalTip': '',
        # TODO: Provide default image and video
        'image': 'https://scdn.line-apps.com/n/channel_devcenter/img/flexsnapshot/clip/clip1.jpg',
        'video': 'https://www.youtube.com',
        'isFinished': False,
        'baseMove': '基本動作'
    }

    def genItem(i, itemContent):
        itemContentWD = ChainMap(itemContent, default)
        colContent = {
            'thumbnail_image_url': itemContentWD['image'],
            'title': '回家作業 {}:{}'.format(i, itemContentWD['baseMove']),
            'text': '{} 組'.format(itemContentWD['noOfSet']),
            'default_action': userAction(LINE_USERACTION_TYPES.URI)(
                label='影片',
                uri=itemContentWD['video']
            ),
            'actions': [userAction(LINE_USERACTION_TYPES.POSTBACK)(
                label='已完成 ❤️',
                data='action=empty'
            )] if itemContentWD['isFinished'] else [userAction(LINE_USERACTION_TYPES.POSTBACK)(
                label='完成',
                display_text='我完成了 {}'.format(itemContentWD['baseMove']),
                data='action=finish_homework;hwIid={}'.format(itemContentWD['hwIid'])
            )]
        }
        return CarouselColumn(**colContent)

    return CarouselTemplate(
        columns=[genItem(i, itemContent) for i, itemContent in enumerate(content, 1)]
    )
Ejemplo n.º 9
0
def resultsTemplate(data):

    query = parseQuery(data)

    #TODO クエリからデートコース一覧を取得
    # courses = ...

    location = query["location"][0]
    timeslot = query["time"][0]
    budget = query["budget"][0]

    courses = getCourses(location, timeslot, budget)

    if len(courses) == 1:
        courses = courses * 2

    if courses:
        message = TemplateSendMessage(
            alt_text='Carousel template',
            template=CarouselTemplate(columns=courses))

        return message
    else:
        return TextSendMessage(text="残念ですがご希望の条件に合ったデートコースが見つかりませんでした。")
Ejemplo n.º 10
0
def reply_carousel(result, event):
    rests = result['rest']
    print("### {} ###".format(len(rests)))
    cnt = 0
    c_cols = []
    for rest in rests:
        shop_image1 = rest['image_url']['shop_image1']
        NO_IMAGE = "https://line-bot-near-ramen.herokuapp.com/static/images/no_image.png"
        if not shop_image1:
            shop_image1 = NO_IMAGE
        address = rest['address']
        tel = rest['tel']
        shop_url = rest['url']
        c_cols.append(
            CarouselColumn(thumbnail_image_url=shop_image1,
                           title=rest['name'],
                           text=(address[:57] +
                                 '...') if len(address) > 60 else address,
                           actions=[
                               URITemplateAction(label='ぐるなびで詳細を見る',
                                                 uri=shop_url),
                               URITemplateAction(label=tel, uri='tel:' + tel),
                           ]))
        cnt += 1
        if cnt == 5:
            break

    try:
        carousel_template_message = TemplateSendMessage(
            alt_text='検索結果', template=CarouselTemplate(columns=c_cols))
        line_bot_api.reply_message(event.reply_token,
                                   carousel_template_message)
    except LineBotApiError as e:
        print(e.status_code)
        print(e.error.message)
        print(e.error.details)
Ejemplo n.º 11
0
def make_carousel_object(result):
    '''Message Template'''
    carousel_list = []

    for item in result[:10]:
        description = '\n'.join(['%s: %s' % (title, item[title]) for title in TITLES])[:60]
        action_list = [
            URIAction(label='Company Summary',
                      uri='line://app/1611201899-GaVvEBB3?id='+item['NavisionID']),
            URIAction(label='Contact List',
                      uri='line://app/1611201899-xj78kWWZ?id='+item['NavisionID']),
            URIAction(label='Interesting',
                      uri='line://app/1611201899-mkn59qqz?id='+item['NavisionID']),
        ]
        obj = CarouselColumn(text=description,
                             title=item['Name'][:40],
                             actions=action_list)
        carousel_list.append(obj)

    carousel_template = CarouselTemplate(columns=carousel_list)
    template_message = TemplateSendMessage(
        alt_text='Here are the companies/resellers we found',
        template=carousel_template)
    return template_message
Ejemplo n.º 12
0
def get_carousel_template_message(video_sort=Order, carousel_column_amount=5):
    if carousel_column_amount > 9:
        return "過多的 columns (必須小於10)"
    columns = []
    for video in get_videos("UC-sM_PLqzgktdUcW2LEKKkQ", video_sort,
                            carousel_column_amount):
        columns.append(
            CarouselColumn(thumbnail_image_url=video,
                           title='標題',
                           text='敘述',
                           actions=[
                               PostbackTemplateAction(
                                   label='postback1',
                                   text='postback text1',
                                   data='action=buy&itemid=1'),
                               MessageTemplateAction(label='message1',
                                                     text='message text1'),
                               URITemplateAction(label='uri1',
                                                 uri='http://example.com/1')
                           ]))
    columns.append(get_video_menu())

    return TemplateSendMessage(alt_text='Carousel template',
                               template=CarouselTemplate(columns=columns))
Ejemplo n.º 13
0
def response_message(event):
    notes = [CarouselColumn(thumbnail_image_url="https://renttle.jp/static/img/renttle02.jpg",
                            title="【ReleaseNote】トークルームを実装しました。",
                            text="creation(創作中・考え中の何かしらのモノ・コト)に関して、意見を聞けるようにトークルーム機能を追加しました。",
                            actions=[{"type": "message","label": "サイトURL","text": "https://renttle.jp/notes/kota/7"}]),

             CarouselColumn(thumbnail_image_url="https://renttle.jp/static/img/renttle03.jpg",
                            title="ReleaseNote】創作中の活動を報告する機能を追加しました。",
                            text="創作中や考え中の時点の活動を共有できる機能を追加しました。",
                            actions=[
                                {"type": "message", "label": "サイトURL", "text": "https://renttle.jp/notes/kota/6"}]),

             CarouselColumn(thumbnail_image_url="https://renttle.jp/static/img/renttle04.jpg",
                            title="【ReleaseNote】タグ機能を追加しました。",
                            text="「イベントを作成」「記事を投稿」「本を登録」にタグ機能を追加しました。",
                            actions=[
                                {"type": "message", "label": "サイトURL", "text": "https://renttle.jp/notes/kota/5"}])]

    messages = TemplateSendMessage(
        alt_text='template',
        template=CarouselTemplate(columns=notes),
    )

    line_bot_api.reply_message(event.reply_token, messages=messages)
Ejemplo n.º 14
0
def sendCarousel(event):  #轉盤樣板
    try:
        message = TemplateSendMessage(
            alt_text='其他',
            template=CarouselTemplate(columns=[
                CarouselColumn(
                    thumbnail_image_url='https://i.imgur.com/bQVbKwb.jpg',
                    title='7-11',
                    text='點選服務',
                    actions=[
                        URITemplateAction(label='官方網站',
                                          uri='https://www.7-11.com.tw/'),
                        MessageTemplateAction(
                            label='商家查詢', text='https://emap.pcsc.com.tw/'),
                        URITemplateAction(
                            label='股市查詢',
                            uri='https://stock.pchome.com.tw/stock/sid2912.html'
                        ),
                    ]),
            ]))
        line_bot_api.reply_message(event.reply_token, message)
    except:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text='發生錯誤!'))
Ejemplo n.º 15
0
def handle_location(event):
    result = search_vacant_hotel(event)

    try:
        if 'error' in result:
            if result['error'] == 'not_found':
                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(text='空室があるホテルが存在しませんでした。'))
            else:
                line_bot_api.reply_message(event.reply_token,
                                           TextSendMessage(text='現在使用出来ません。'))
        else:
            hotels = result['hotels']
            columns = [
                CarouselColumn(
                    thumbnail_image_url=hotel[0]['hotelBasicInfo']
                    ['hotelImageUrl'],
                    title=hotel[0]['hotelBasicInfo']['hotelName'][:40],
                    text=hotel[0]['hotelBasicInfo']['hotelSpecial'][:60],
                    actions=[
                        URITemplateAction(label='詳細を見る',
                                          uri=hotel[0]['hotelBasicInfo']
                                          ['hotelInformationUrl'])
                    ]) for hotel in hotels
            ]
            messages = TemplateSendMessage(
                alt_text='template',
                template=CarouselTemplate(columns=columns),
            )
            line_bot_api.reply_message(event.reply_token, messages)

    except Exception as e:
        traceback.print_exc()
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text='時間をおいて再度お試しください。'))
def template_choice(name_list, event, word):
    # 判斷推薦回去給使用者的個數
    if len(name_list) >= 5:
        name_list = random.sample(name_list, k=5)
    elif len(name_list) == 0:
        if word == "search":
            message = TextSendMessage(text="抱歉,資料庫找不到包含輸入條件的食譜")
            line_bot_api.reply_message(event.reply_token, message)
        elif word == "personal":
            message = TextSendMessage(text="抱歉,資料庫找不到可推薦的食譜")
            line_bot_api.reply_message(event.reply_token, message)
    Columnlist = []
    for data in name_list:
        Columnlist.append(
            CarouselColumn(
                thumbnail_image_url=str(data['recipe_img_url']),
                title=str(data["recipe_name"]),
                text="請選擇",
                actions=[
                    PostbackTemplateAction(label="食材",
                                           data="data=sendinfo&value=0&name=" +
                                           str(data["recipe_name"])),
                    PostbackTemplateAction(label="步驟",
                                           data="data=sendinfo&value=1&name=" +
                                           str(data["recipe_name"])),
                    PostbackTemplateAction(label="營養成分",
                                           data="data=sendinfo&value=2&name=" +
                                           str(data["recipe_name"]))
                ]))
    message = TemplateSendMessage(
        alt_text='無法顯示', template=CarouselTemplate(columns=Columnlist))
    try:
        line_bot_api.reply_message(event.reply_token, message)
    except:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text="發生錯誤00"))
Ejemplo n.º 17
0
    def execute(self):
        carousel_template_message = TemplateSendMessage(
            alt_text='目錄 template',
            template=CarouselTemplate(
                columns=[
                    CarouselColumn(
                        thumbnail_image_url='https://i.imgur.com/kzi5kKy.jpg',
                        title='選擇服務',
                        text='請選擇',
                        actions=[
                            MessageAction(
                                label=MyDict.start_template,
                                text=MyDict.start_template
                            ),
                            URIAction(
                                label='影片介紹 阿肥bot',
                                uri='https://youtu.be/1IxtWgWxtlE'
                            ),
                            URIAction(
                                label='如何建立自己的 Line Bot',
                                uri='https://github.com/twtrubiks/line-bot-tutorial'
                            )
                        ]
                    ),
                    CarouselColumn(
                        thumbnail_image_url='https://i.imgur.com/DrsmtKS.jpg',
                        title='選擇服務',
                        text='請選擇',
                        actions=[
                            MessageAction(
                                label='other bot',
                                text='imgur bot'
                            ),
                            MessageAction(
                                label=MyDict.oil_price,
                                text=MyDict.oil_price
                            ),
                            URIAction(
                                label='聯絡作者',
                                uri='https://www.facebook.com/TWTRubiks?ref=bookmarks'
                            )
                        ]
                    ),
                    CarouselColumn(
                        thumbnail_image_url='https://i.imgur.com/h4UzRit.jpg',
                        title='選擇服務',
                        text='請選擇',
                        actions=[
                            URIAction(
                                label='分享 bot',
                                uri='https://line.me/R/nv/recommendOA/@vbi2716y'
                            ),
                            URIAction(
                                label='PTT正妹網',
                                uri='https://ptt-beauty-infinite-scroll.herokuapp.com/'
                            ),
                            URIAction(
                                label='youtube 程式教學分享頻道',
                                uri='https://www.youtube.com/channel/UCPhn2rCqhu0HdktsFjixahA'
                            )
                        ]
                    )
                ]
            )
        )

        self.reply_message(carousel_template_message)
Ejemplo n.º 18
0
def handle_message(event):
    global DataAll
    interval = CalcTime(DataAll[0][6])
    if interval[0] > 1 or interval[1] > 300:
        # line_bot_api.reply_message(event.reply_token, TextSendMessage('更新資料中,請稍後數秒'))
        DownloadMask()
        DataAll = LoadData()

    if event.message.type == 'location':
        lat = event.message.latitude
        lon = event.message.longitude
        ret = GetDistance(
            np.matrix([[float(x[7]), float(x[8])] for x in DataAll]),
            np.matrix([[lat, lon]])).argsort(axis=0)[:10]
        alt_text = ""
        carousel_data = []

        for idx in ret:
            data = DataAll[int(idx)]
            alt_text += "{}:\n  成人剩餘{}個、孩童剩餘{}個\n".format(
                data[1], data[4], data[5])
            carousel_data.append([
                data[1],
                "aldut last {}\nchild last {}".format(data[4],
                                                      data[5]), 'get map',
                str(data[1]),
                "address:{},{},{},{}".format(data[7], data[8], data[1],
                                             data[2])
            ])

        line_bot_api.reply_message(
            event.reply_token,
            TemplateSendMessage(
                alt_text=alt_text,
                template=CarouselTemplate(columns=[
                    CarouselColumn(
                        thumbnail_image_url=
                        'https://i.giphy.com/media/Nm8ZPAGOwZUQM/giphy.webp',
                        title=data[0],
                        text=data[1],
                        actions=[
                            PostbackAction(label=data[2],
                                           display_text=data[3],
                                           data=data[4])
                        ]) for data in carousel_data
                ])))
    else:
        name = event.message.text
        score = []
        cnt = 0

        for data in DataAll:
            score.append((fuzz.partial_token_set_ratio(data[1], name), cnt))
            cnt += 1

        score.sort(reverse=True)
        idx = score[0][1]
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text='{}\n成人剩餘{}個、小孩剩餘{}個'.format(
                DataAll[idx][1], DataAll[idx][4], DataAll[idx][5])))
Ejemplo n.º 19
0
def handle_text_message(event):
    text = event.message.text
    cancel_message = 'type "cancel" to cancel search'
    if text == 'profile':
        if isinstance(event.source, SourceUser):
            profile = line_bot_api.get_profile(event.source.user_id)
            line_bot_api.reply_message(
                event.reply_token, [
                    TextSendMessage(
                        text='Display name: ' + profile.display_name
                    ),
                    TextSendMessage(
                        text='Status message: ' + profile.status_message
                    )
                ]
            )
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextMessage(text="Bot can't use profile API without user ID"))
    elif text == 'bye':
        if isinstance(event.source, SourceGroup):
            line_bot_api.reply_message(
                event.reply_token, TextMessage(text='Leaving group'))
            line_bot_api.leave_group(event.source.group_id)
        elif isinstance(event.source, SourceRoom):
            line_bot_api.reply_message(
                event.reply_token, TextMessage(text='Leaving group'))
            line_bot_api.leave_room(event.source.room_id)
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextMessage(text="Bot can't leave from 1:1 chat"))
    elif text == 'confirm':
        confirm_template = ConfirmTemplate(text='Do it?', actions=[
            MessageTemplateAction(label='Yes', text='Yes!'),
            MessageTemplateAction(label='No', text='No!'),
        ])
        template_message = TemplateSendMessage(
            alt_text='Confirm alt text', template=confirm_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'buttons':
        buttons_template = ButtonsTemplate(
            title='My buttons sample', text='Hello, my buttons', actions=[
                URITemplateAction(
                    label='Go to line.me', uri='https://line.me'),
                PostbackTemplateAction(label='ping', data='ping'),
                PostbackTemplateAction(
                    label='ping with text', data='ping',
                    text='ping'),
                MessageTemplateAction(label='Translate Rice', text='米')
            ])
        template_message = TemplateSendMessage(
            alt_text='Buttons alt text', template=buttons_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'carousel':
        carousel_template = CarouselTemplate(columns=[
            CarouselColumn(text='hoge1', title='fuga1', actions=[
                URITemplateAction(
                    label='Go to line.me', uri='https://line.me'),
                PostbackTemplateAction(label='ping', data='ping')
            ]),
            CarouselColumn(text='hoge2', title='fuga2', actions=[
                PostbackTemplateAction(
                    label='ping with text', data='ping',
                    text='ping'),
                MessageTemplateAction(label='Translate Rice', text='米')
            ]),
        ])
        template_message = TemplateSendMessage(
            alt_text='Carousel alt text', template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'image_carousel':
        image_carousel_template = ImageCarouselTemplate(columns=[
            ImageCarouselColumn(image_url='https://via.placeholder.com/1024x1024',
                                action=DatetimePickerTemplateAction(label='datetime',
                                                                    data='datetime_postback',
                                                                    mode='datetime')),
            ImageCarouselColumn(image_url='https://via.placeholder.com/1024x1024',
                                action=DatetimePickerTemplateAction(label='date',
                                                                    data='date_postback',
                                                                    mode='date'))
        ])
        template_message = TemplateSendMessage(
            alt_text='ImageCarousel alt text', template=image_carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'imagemap':
        pass
    elif text == 'Find egg':
        #Actionnya masih gak ngerti gimana caranya actionnya text Category: Arabian aja
        image_carousel_template = ImageCarouselTemplate(columns=[
            ImageCarouselColumn(image_url='https://www.theurbanlist.com/content/article/wysiwyg/three-williams-eggs.png',
                                action=PostbackTemplateAction(label='Arabian egg\nRp 25.000,00',data='arabian-egg')),
            ImageCarouselColumn(image_url='https://www.fritzmag.com.au/wp-content/uploads/2016/12/Get-Your-Googie-On-With-South-Australian-Eggs-2.jpg',
                                action=DatetimePickerTemplateAction(label='Australian egg\nRp 25.000,00',
                                                                    data='australian-egg'))
        ])
        template_message = TemplateSendMessage(
            alt_text='ImageCarousel alt text', template=image_carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'cancel':
        line_bot_api.reply_message(
            event.reply_token,
            TextMessage(text="Welcome..."))
    elif text == 'Category: Arabian':
        #Belum bisa actionnya juga
        image_carousel_template = ImageCarouselTemplate(columns=[
            ImageCarouselColumn(image_url='https://www.theurbanlist.com/content/article/wysiwyg/three-williams-eggs.png',
                                action=DatetimePickerTemplateAction(label='date',
                                                                    data='date_postback',
                                                                    mode='date')),
        ])
        template_message = TemplateSendMessage(
            alt_text='ImageCarousel alt text', template=image_carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'Choose Arabian egg':
        message = 'Arabian egg\n\nPrice: Rp. 25,000.00\nStore location: Yogya karapitan (Bandung)\nCondition: Good\n\nTo buy this product type "Buy Arabian egg"'
        line_bot_api.reply_message(
            event.reply_token, TextSendMessage(text=message))
    elif text == 'Findstore Yogya':
        message = 'Search result for "Yogya"\n1. Yogya Karapitan\n2. Yogya Riau Junction\n3. Yogya Sunda\n4. Yogya Minimarket\n\nType number to choose shope e.g: 1 to choose Yogya Karapitan'
        line_bot_api.reply_message(
            event.reply_token, TextSendMessage(text=message))
    elif text == '1':
        message = 'You choose Yogya Karapitan\n\nTo search products, type "Find <product name>\n\nTo view other instructions type "help"'
        line_bot_api.reply_message(
            event.reply_token, TextSendMessage(text=message))
    elif text == 'list transactions':
        #Actionnya belum bisa nanti actionnya ke view transaction 15022 aja
        image_carousel_template = ImageCarouselTemplate(columns=[
            ImageCarouselColumn(image_url='https://www.theurbanlist.com/content/article/wysiwyg/three-williams-eggs.png',
                                action=DatetimePickerTemplateAction(label='date',
                                                                    data='date_postback',
                                                                    mode='date')),
            ImageCarouselColumn(image_url='https://www.fritzmag.com.au/wp-content/uploads/2016/12/Get-Your-Googie-On-With-South-Australian-Eggs-2.jpg',
                                action=DatetimePickerTemplateAction(label='date',
                                                                    data='date_postback',
                                                                    mode='date'))
        ])
        template_message = TemplateSendMessage(
            alt_text='ImageCarousel alt text', template=image_carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'view transaction 15022':
        #Edit aja gambarnya + actionnya juga + labelnya juga masih dummy ini
        image_carousel_template = ImageCarouselTemplate(columns=[
            ImageCarouselColumn(image_url='https://www.theurbanlist.com/content/article/wysiwyg/three-williams-eggs.png',
                                action=DatetimePickerTemplateAction(label='date',
                                                                    data='date_postback',
                                                                    mode='date')),
        ])
    elif text == 'Compare':
        image_carousel_template = ImageCarouselTemplate(columns=[
            ImageCarouselColumn(image_url='https://www.theurbanlist.com/content/article/wysiwyg/three-williams-eggs.png',
                                action=DatetimePickerTemplateAction(label='datetime',
                                                                    data='datetime_postback',
                                                                    mode='datetime')),
            ImageCarouselColumn(image_url='https://www.fritzmag.com.au/wp-content/uploads/2016/12/Get-Your-Googie-On-With-South-Australian-Eggs-2.jpg',
                                action=DatetimePickerTemplateAction(label='date',
                                                                    data='date_postback',
                                                                    mode='date'))
        ])
        template_message = TemplateSendMessage(
            alt_text='Choose one of these products to compare with <current_product>', template=image_carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'Display all':
        line_bot_api.reply_message(
            event.reply_token,
            TextMessage(text="Arabian egg vs Mysterious egg\n\nShell:\nSpike shell vs Smooth shell\n\nShape:\nRound shape vs Oval shape\n\nSize:10inch vs 18inch\n\nColor:\nRed vs Cream.\n\nMysterious egg's exclusive properties:\nDoes not break when thrown with a force.\nIs not known if it's an actual egg.\n\nAustralian egg's exclusive properties:\n-"))
    elif text == 'Change':
		carousel_template = CarouselTemplate(columns=[
            CarouselColumn(text='Mysterious egg', title='1', actions=[
                URITemplateAction(
                    label='Go to line.me', uri='https://line.me'),
                PostbackTemplateAction(label='ping', data='ping')
            ]),
            CarouselColumn(text='Arabian egg', title='2', actions=[
                PostbackTemplateAction(
                    label='ping with text', data='ping',
                    text='ping'),
                MessageTemplateAction(label='Translate Rice', text='米')
            ]),
        ])
        template_message = TemplateSendMessage(
            alt_text='Choose which one to replace.', template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    def setUp(self):
        self.tested = LineBotApi('channel_secret')

        self.button_template_message = TemplateSendMessage(
            alt_text='Buttons template',
            template=ButtonsTemplate(
                thumbnail_image_url='https://example.com/image.jpg',
                title='Menu', text='Please select',
                actions=[
                    PostbackTemplateAction(
                        label='postback', text='postback text',
                        data='action=buy&itemid=1'
                    ),
                    MessageTemplateAction(
                        label='message', text='message text'
                    ),
                    URITemplateAction(
                        label='uri', uri='http://example.com/'
                    )
                ]
            )
        )

        self.button_message = [{
            "type": "template",
            "altText": "Buttons template",
            "template": {
                "type": "buttons",
                "thumbnailImageUrl":
                    "https://example.com/image.jpg",
                "title": "Menu",
                "text": "Please select",
                "actions": [
                    {
                        "type": "postback",
                        "label": "postback",
                        "text": "postback text",
                        "data": "action=buy&itemid=1"
                    },
                    {
                        "type": "message",
                        "label": "message",
                        "text": "message text"
                    },
                    {
                        "type": "uri",
                        "label": "uri",
                        "uri": "http://example.com/"
                    }
                ]
            }
        }]

        self.confirm_template_message = TemplateSendMessage(
            alt_text='Confirm template',
            template=ConfirmTemplate(
                text='Are you sure?',
                actions=[
                    PostbackTemplateAction(
                        label='postback', text='postback text',
                        data='action=buy&itemid=1'
                    ),
                    MessageTemplateAction(
                        label='message', text='message text'
                    )
                ]
            )
        )

        self.confirm_message = [{
            "type": "template",
            "altText": "Confirm template",
            "template": {
                "type": "confirm",
                "text": "Are you sure?",
                "actions": [
                    {
                        "type": "postback",
                        "label": "postback",
                        "text": "postback text",
                        "data": "action=buy&itemid=1"
                    },
                    {
                        "type": "message",
                        "label": "message",
                        "text": "message text"
                    }
                ]
            }
        }]

        self.carousel_template_message = TemplateSendMessage(
            alt_text='Carousel template',
            template=CarouselTemplate(
                columns=[
                    CarouselColumn(
                        thumbnail_image_url='https://example.com'
                                            '/item1.jpg',
                        title='this is menu1', text='description1',
                        actions=[
                            PostbackTemplateAction(
                                label='postback1', text='postback text1',
                                data='action=buy&itemid=1'
                            ),
                            MessageTemplateAction(
                                label='message1', text='message text1'
                            ),
                            URITemplateAction(
                                label='uri1',
                                uri='http://example.com/1'
                            )
                        ]
                    ),
                    CarouselColumn(
                        thumbnail_image_url='https://example.com'
                                            '/item2.jpg',
                        title='this is menu2', text='description2',
                        actions=[
                            PostbackTemplateAction(
                                label='postback2', text='postback text2',
                                data='action=buy&itemid=2'
                            ),
                            MessageTemplateAction(
                                label='message2', text='message text2'
                            ),
                            URITemplateAction(
                                label='uri2',
                                uri='http://example.com/2'
                            )
                        ]
                    )
                ]
            )
        )

        self.carousel_message = [{
            "type": "template",
            "altText": "Carousel template",
            "template": {
                "type": "carousel",
                "columns": [
                    {
                        "thumbnailImageUrl":
                            "https://example.com/item1.jpg",
                        "title": "this is menu1",
                        "text": "description1",
                        "actions": [
                            {
                                "type": "postback",
                                "label": "postback1",
                                "text": "postback text1",
                                "data": "action=buy&itemid=1"
                            },
                            {
                                "type": "message",
                                "label": "message1",
                                "text": "message text1"
                            },
                            {
                                "type": "uri",
                                "label": "uri1",
                                "uri": "http://example.com/1"
                            }
                        ]
                    },
                    {
                        "thumbnailImageUrl":
                            "https://example.com/item2.jpg",
                        "title": "this is menu2",
                        "text": "description2",
                        "actions": [
                            {
                                "type": "postback",
                                "label": "postback2",
                                "text": "postback text2",
                                "data": "action=buy&itemid=2"
                            },
                            {
                                "type": "message",
                                "label": "message2",
                                "text": "message text2"
                            },
                            {
                                "type": "uri",
                                "label": "uri2",
                                "uri": "http://example.com/2"
                            }
                        ]
                    }
                ]
            }
        }]
Ejemplo n.º 21
0
def handle_message(event):
    rawText = event.message.text
    text = rawText.lower().strip()
    data = rawText.lower().strip().split(' ')

    sender = event.source.user_id
    gid = event.source.sender_id
    profile = line_bot_api.get_profile(sender)

    if len(data)>=3:
        #BODOH
        #WIKIHOW 9, WIKIHOW 10
        if data[0]=="bodoh" or data[1]=="bodoh" or data[2]=="bodoh" or data[0]=="bodo" or data[1]=="bodo" or data[2]=="bodo":
            a = random.randint(0, 1)
            b = ["https://ktawa.com/wp-content/uploads/2018/05/2761997_201803120735020920.jpg", "https://ktawa.com/wp-content/uploads/2018/09/DXgqnNRVwAA-_6F.jpg"]
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(original_content_url=b[a],preview_image_url=b[a]))
        #BAWEL
        #ANJING 8, PUN 2
        elif data[0]=="bawel" or data[1]=="bawel" or data[2]=="bawel":
            a = random.randint(0, 1)
            b = ["https://s.kaskus.id/images/2018/03/14/7034635_201803140545070870.jpg", "https://1.bp.blogspot.com/-AHXu8nVDgww/Wr3YdzZvCVI/AAAAAAAABPg/AO7Mnycr_oQx3bdzboe6qyW8WyqjynfXACLcBGAs/s1600/IMG_20180327_222109.jpg"]
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(original_content_url=b[a],preview_image_url=b[a]))


        #1 MULT CHOICE
        elif data[0]=="gaje" or data[0]=="geje" or data[0]=="gj" or data[1]=="gaje" or data[1]=="geje" or data[1]=="gj" or data[2]=="gaje" or data[2]=="geje" or data[2]=="gj":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://cdn.brilio.net/news/2018/04/05/141154/760223-meme-anjing.jpg',
        preview_image_url='https://cdn.brilio.net/news/2018/04/05/141154/760223-meme-anjing.jpg'
        ))
        #2
        elif text=="ga nyambung" or text=="g nyambung":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://pics.me.me/anjing-kaga-nyambung-31476214.png',
        preview_image_url='https://pics.me.me/anjing-kaga-nyambung-31476214.png'
        ))
        #3 MULT CHOICE
        elif data[0]=="ngegas" or data[1]=="ngegas" or data[2]=="ngegas":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://img.duniaku.net/2018/03/1521427491-anjing-ngegas.jpg',
        preview_image_url='https://img.duniaku.net/2018/03/1521427491-anjing-ngegas.jpg'
        ))
        #4
        elif data[0]=="tolol" or data[1]=="tolol" or data[2]=="tolol" or data[0]=="tll" or data[1]=="tll" or data[2]=="tll":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://pbs.twimg.com/media/DYLq_4fU0AA9b-B.jpg',
        preview_image_url='https://pbs.twimg.com/media/DYLq_4fU0AA9b-B.jpg'
        ))
        #5
        elif text=="asu kabeh" or text=="anjing semua":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://1.bp.blogspot.com/-nsYjWy0W4AU/VArRtVc7MxI/AAAAAAAAM8k/SnNZKZxfNmA/s1600/bm-image-789062.jpeg',
        preview_image_url='https://1.bp.blogspot.com/-nsYjWy0W4AU/VArRtVc7MxI/AAAAAAAAM8k/SnNZKZxfNmA/s1600/bm-image-789062.jpeg'
        ))
        #6
        elif data[0]=="jangkrik" or data[1]=="jangkrik" or data[2]=="jangkrik" or data[0]=="jangkrek" or data[1]=="jangkrek" or data[2]=="jangkrek":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://pbs.twimg.com/media/DX95-GUUQAUIT7i.jpg',
        preview_image_url='https://pbs.twimg.com/media/DX95-GUUQAUIT7i.jpg'
        ))
        #7
        elif text=="kok anjing" or text=="koq anjg":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://pbs.twimg.com/media/DYLLvU3VAAABy7F.jpg',
        preview_image_url='https://pbs.twimg.com/media/DYLLvU3VAAABy7F.jpg'
        ))
        #9 IMG LOST
        elif text=="/anjing-baper" or text=="baper" or data[0]=="baper" or data[1]=="baper":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://img.duniaku.net/2018/03/1521427445-anjing-baper.jpg',
        preview_image_url='https://img.duniaku.net/2018/03/1521427445-anjing-baper.jpg'
        ))
        #10
        elif data[0]=="kalem" or data[1]=="kalem" or data[2]=="kalem":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://scontent-atl3-1.cdninstagram.com/vp/a5162fe74fd29170ddbbfbba71863c1b/5C5537BA/t51.2885-15/e35/29088954_1860060620959017_6436073020644655104_n.jpg',
        preview_image_url='https://scontent-atl3-1.cdninstagram.com/vp/a5162fe74fd29170ddbbfbba71863c1b/5C5537BA/t51.2885-15/e35/29088954_1860060620959017_6436073020644655104_n.jpg'
        ))

        #3 MULT CHOICE
        elif data[0]=="bego" or data[1]=="bego" or data[2]=="bego" or data[0]=="bege" or data[1]=="bege" or data[2]=="bege" or data[0]=="begek" or data[1]=="begek" or data[2]=="begek":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://pbs.twimg.com/media/DYaIxpdU0AE2UcO.jpg',
        preview_image_url='https://pbs.twimg.com/media/DYaIxpdU0AE2UcO.jpg'
        ))
        #4 MULT CHOICE
        elif data[0]=="ngegas" or data[1]=="ngegas" or data[2]=="ngegas":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://s.kaskus.id/images/2017/10/07/9824467_201710070650410306.jpg',
        preview_image_url='https://s.kaskus.id/images/2017/10/07/9824467_201710070650410306.jpg'
        ))
        #5 MULT CHOICE
        elif data[0]=="gas" or data[1]=="gas" or data[2]=="gas":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://s.kaskus.id/images/2017/05/01/9437462_201705010152380796.jpg',
        preview_image_url='https://s.kaskus.id/images/2017/05/01/9437462_201705010152380796.jpg'
        ))
        #6
        elif data[0]=="gawat" or data[1]=="gawat" or data[2]=="gawat":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://em.wattpad.com/a597dfd0d5b0115078e72028c89b42f412c398e2/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f776174747061642d6d656469612d736572766963652f53746f7279496d6167652f4c346e547651464b426c66765a513d3d2d3532352e313531613331396163343031306232343335303035353539383537312e6a7067?s=fit&w=720&h=720',
        preview_image_url='https://em.wattpad.com/a597dfd0d5b0115078e72028c89b42f412c398e2/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f776174747061642d6d656469612d736572766963652f53746f7279496d6167652f4c346e547651464b426c66765a513d3d2d3532352e313531613331396163343031306232343335303035353539383537312e6a7067?s=fit&w=720&h=720'
        ))
        #6
        elif data[0]=="gelut" or data[1]=="gelut" or data[2]=="gelut":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://pics.me.me/gelut-29735709.png',
        preview_image_url='https://pics.me.me/gelut-29735709.png'
        ))
        #7 MULT CHOICE
        elif data[0]=="goblok" or data[1]=="goblok"  or data[2]=="goblok" or data[0]=="gblk" or data[1]=="gblk" or data[2]=="gblk" or data[0]=="goblog" or data[1]=="goblog" or data[2]=="goblog" or data[0]=="gblg" or data[1]=="gblg" or data[2]=="gblg":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://i.pinimg.com/236x/d2/55/46/d25546911ab75e65de5d0e5b6f267c5c.jpg',
        preview_image_url='https://i.pinimg.com/236x/d2/55/46/d25546911ab75e65de5d0e5b6f267c5c.jpg'
        ))
        #8
        elif data[0]=="bubar" or data[0]=="leren" or data[1]=="bubar" or data[1]=="leren" or data[2]=="bubar" or data[2]=="leren":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://pbs.twimg.com/media/DY9OLOLVwAEadK7.jpg',
        preview_image_url='https://pbs.twimg.com/media/DY9OLOLVwAEadK7.jpg'
        ))
        #9
        elif text=="ga sante":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://pbs.twimg.com/media/DjSIfjUVAAAX5WQ.jpg:large',
        preview_image_url='https://pbs.twimg.com/media/DjSIfjUVAAAX5WQ.jpg:large'
        ))
        #10
        elif data[0]=="kecewa" or data[1]=="kecewa" or data[2]=="kecewa":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://pics.me.me/kecewa-31619297.png',
        preview_image_url='https://pics.me.me/kecewa-31619297.png'
        ))
        #11
        elif data[0]=="keren" or data[0]=="cool" or data[0]=="kewl" or data[1]=="keren" or data[1]=="cool" or data[1]=="kewl" or data[2]=="keren" or data[2]=="cool" or data[2]=="kewl":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://media.keepo.me/20180306164724/511x288--28872329_1460633664058488_1580595060448431199_n.jpg',
        preview_image_url='https://media.keepo.me/20180306164724/511x288--28872329_1460633664058488_1580595060448431199_n.jpg'
        ))
        #12
        elif data[0]=="kocak" or data[1]=="kocak" or data[2]=="kocak":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://pbs.twimg.com/media/DYL2-5dVoAARtb4.jpg',
        preview_image_url='https://pbs.twimg.com/media/DYL2-5dVoAARtb4.jpg'
        ))
        #13
        elif data[1]=="terserah" or data[1]=="serah" or data[1]=="seterah" or data[0]=="terserah" or data[0]=="serah" or data[0]=="seterah" or data[2]=="terserah" or data[2]=="serah" or data[2]=="seterah":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://pics.me.me/terserah-lodeh-31686397.png',
        preview_image_url='https://pics.me.me/terserah-lodeh-31686397.png'
        ))
        #14
        elif data[0]=="mager" or data[1]=="mager" or data[2]=="mager":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://storage.jualo.com/original/12555347/bengkel-las-aneka-kar-alat-musik-lainnya-12555347.jpg',
        preview_image_url='https://storage.jualo.com/original/12555347/bengkel-las-aneka-kar-alat-musik-lainnya-12555347.jpg'
        ))
        #15
        elif data[0]=="pinter" or data[0]=="pintar" or data[0]=="smart" or data[1]=="pinter" or data[1]=="pintar" or data[1]=="smart" or data[2]=="pinter" or data[2]=="pintar" or data[2]=="smart":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://pbs.twimg.com/media/DkNtokXVAAA3gdr.jpg',
        preview_image_url='https://pbs.twimg.com/media/DkNtokXVAAA3gdr.jpg'
        ))
        #16
        elif data[0]=="sabi" or data[0]=="bisa" or data[1]=="sabi" or data[1]=="bisa" or data[2]=="sabi" or data[2]=="bisa":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://pbs.twimg.com/media/DbI1oKdUMAAKHl3.jpg',
        preview_image_url='https://pbs.twimg.com/media/DbI1oKdUMAAKHl3.jpg'
        ))
        #17
        elif data[0]=="skip" or data[0]=="sekip" or data[0]=="sqip" or data[0]=="sqiv" or data[1]=="skip" or data[1]=="sekip" or data[1]=="sqip" or data[1]=="sqiv" or data[2]=="skip" or data[2]=="sekip" or data[2]=="sqip" or data[2]=="sqiv":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://4.bp.blogspot.com/-TXgBZ19sxHs/Wr3bhYlQy6I/AAAAAAAABPs/vbC_Be9GFmsWrhytSZXd90D9DaQymyhdQCLcBGAs/s1600/IMG_20180327_222132.jpg',
        preview_image_url='https://4.bp.blogspot.com/-TXgBZ19sxHs/Wr3bhYlQy6I/AAAAAAAABPs/vbC_Be9GFmsWrhytSZXd90D9DaQymyhdQCLcBGAs/s1600/IMG_20180327_222132.jpg'
        ))
        #18
        elif data[0]=="siap" or data[0]=="siyap" or data[0]=="shap" or data[0]=="ready" or data[1]=="siap" or data[1]=="siyap" or data[1]=="shap" or data[1]=="ready" or data[2]=="siap" or data[2]=="siyap" or data[2]=="shap" or data[2]=="ready":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://www.teknosaurus.com/wp-content/uploads/2018/03/sayap-e1521330529574.jpg',
        preview_image_url='https://www.teknosaurus.com/wp-content/uploads/2018/03/sayap-e1521330529574.jpg'
        ))
        #20
        elif data[0]=="thanks" or data[0]=="thank" or data[0]=="makasih" or data[0]=="trims" or data[0]=="thx" or data[0]=="maaci" or data[1]=="thanks" or data[1]=="thank" or data[1]=="makasih" or data[1]=="trims" or data[1]=="thx" or data[1]=="maaci" or data[2]=="thanks" or data[2]=="thank" or data[2]=="makasih" or data[2]=="trims" or data[2]=="thx" or data[2]=="maaci":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://3.bp.blogspot.com/-2bHJrd2yl7s/Wr3Sy2zDudI/AAAAAAAABNk/DKwqkIkvufUteDl_CQlvfV98EjDNeTJagCLcBGAs/s1600/IMG_20180327_221555.jpg',
        preview_image_url='https://3.bp.blogspot.com/-2bHJrd2yl7s/Wr3Sy2zDudI/AAAAAAAABNk/DKwqkIkvufUteDl_CQlvfV98EjDNeTJagCLcBGAs/s1600/IMG_20180327_221555.jpg'
        ))
        #21
        elif data[0]=="kampret" or data[1]=="kampret" or data[2]=="kampret" or data[0]=="kamvret" or data[1]=="kamvret" or data[2]=="kamvret":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://cdn2.boombastis.com/wp-content/uploads/2018/03/7kampret.jpeg',
        preview_image_url='https://cdn2.boombastis.com/wp-content/uploads/2018/03/7kampret.jpeg '
        ))

        #1
        elif data[0]=="terciduk" or data[1]=="terciduk" or data[2]=="terciduk":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://pbs.twimg.com/media/DUnGmbTVAAYbI8w.jpg',
        preview_image_url='https://pbs.twimg.com/media/DUnGmbTVAAYbI8w.jpg'
        ))
        #2
        elif data[0]=="berkelahi" or data[0]=="tengkar" or data[1]=="berkelahi" or data[1]=="tengkar" or data[2]=="berkelahi" or data[2]=="tengkar":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://ktawa.com/wp-content/uploads/2018/03/DXvYNzGUMAAc6wT.jpg',
        preview_image_url='https://ktawa.com/wp-content/uploads/2018/03/DXvYNzGUMAAc6wT.jpg'
        ))
        #3
        elif data[0]=="tabok" or data[1]=="tabok" or data[2]=="tabok":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://s.kaskus.id/images/2018/03/12/7034635_201803120552320355.jpg',
        preview_image_url='https://s.kaskus.id/images/2018/03/12/7034635_201803120552320355.jpg'
        ))
        #4
        elif data[0]=="kalem" or data[1]=="kalem" or data[2]=="kalem"  or data[0]=="calm" or data[1]=="calm" or data[2]=="calm":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://s.kaskus.id/images/2018/03/12/7034635_201803120524290806.jpg',
        preview_image_url='https://s.kaskus.id/images/2018/03/12/7034635_201803120524290806.jpg'
        ))
        #5
        elif data[0]=="maksiat" or data[1]=="maksiat" or data[2]=="maksiat":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://pbs.twimg.com/media/DUnCIAUUMAArpyA.jpg',
        preview_image_url='https://pbs.twimg.com/media/DUnCIAUUMAArpyA.jpg'
        ))
        #6
        elif data[0]=="bacot" or data[1]=="bacot" or data[2]=="bacot" or data[0]=="bct" or data[1]=="bct" or data[2]=="bct" or data[0]=="bacod" or data[1]=="bacod" or data[2]=="bacod" or data[0]=="bcd" or data[1]=="bcd" or data[2]=="bcd":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://s.kaskus.id/images/2018/03/12/7034635_201803120533550838.jpg',
        preview_image_url='https://s.kaskus.id/images/2018/03/12/7034635_201803120533550838.jpg'
        ))
        #7
        elif data[0]=="sabar" or data[1]=="sabar" or data[2]=="sabar":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://i.pinimg.com/750x/f3/83/c3/f383c3106936a4728d924dd7ff945c20.jpg',
        preview_image_url='https://i.pinimg.com/750x/f3/83/c3/f383c3106936a4728d924dd7ff945c20.jpg'
        ))
        #8
        elif text=="positive thinking" or text=="pikiran positif":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://pbs.twimg.com/media/DU3n1OuV4AE9sZg.jpg',
        preview_image_url='https://pbs.twimg.com/media/DU3n1OuV4AE9sZg.jpg'
        ))
        #9
        elif text=="/wkh-bodoh":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://ktawa.com/wp-content/uploads/2018/05/2761997_201803120735020920.jpg',
        preview_image_url='https://ktawa.com/wp-content/uploads/2018/05/2761997_201803120735020920.jpg'
        ))
        #10
        elif text=="/wkh-bodo":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://ktawa.com/wp-content/uploads/2018/09/DXgqnNRVwAA-_6F.jpg',
        preview_image_url='https://ktawa.com/wp-content/uploads/2018/09/DXgqnNRVwAA-_6F.jpg'
        ))
        #11
        elif data[0]=="bomat" or data[1]=="bomat":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://s.kaskus.id/images/2018/03/12/7034635_201803120525540375.jpg',
        preview_image_url='https://s.kaskus.id/images/2018/03/12/7034635_201803120525540375.jpg'
        ))
        #12
        elif data[0]=="diam" or data[1]=="diam":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://pbs.twimg.com/media/DXgpJPMU8AAxjFm.jpg',
        preview_image_url='https://pbs.twimg.com/media/DXgpJPMU8AAxjFm.jpg'
        ))
        #13
        elif data[0]=="kesel" or data[1]=="kesel":
            line_bot_api.reply_message(event.reply_token,ImageSendMessage(
        original_content_url='https://pbs.twimg.com/media/DVtT5HfVoAA74P3.jpg',
        preview_image_url='https://pbs.twimg.com/media/DVtT5HfVoAA74P3.jpg'
        ))


    if text=="/menu":
        line_bot_api.reply_message(event.reply_token,TemplateSendMessage(
            alt_text='Carousel template',
            template=CarouselTemplate(
                columns=[
                    CarouselColumn(
                        thumbnail_image_url='https://example.com/item1.jpg',
                        title='Meme Shitpost',
                        text='Koleksi Personal Paling Berharga',
                        actions=[
                            PostbackAction(
                                label='Apa ini?',
                                text='kamus meme',
                                data='action=buy&itemid=1'
                            ),
                            MessageAction(
                                label='Kategori Meme',
                                text='kategori meme'
                            ),
                            URIAction(
                                label='Akun Twitter saya',
                                uri='https://twitter.com/didotbrodot'
                            )
                        ]
                    ),
                    CarouselColumn(
                        thumbnail_image_url='https://static.family.ca/rendition/17001/1058/595',
                        title='Sound of Nature',
                        text='Anda bertanya, alam menjawab',
                        actions=[
                            PostbackAction(
                                label='Ini apa?',
                                text='Tuntunan Alam',
                                data='action=buy&itemid=2'
                            ),
                            MessageAction(
                                label='Jompa-Jampi',
                                text='Jompa-Jampi'
                            ),
                            URIAction(
                                label='Akun Twitter saya',
                                uri='https://twitter.com/didotbrodot'
                            )
                        ]
                    )
                ]
            )
        ))

    if text=="kamus meme":
        line_bot_api.reply_message(event.reply_token,TextSendMessage(text='Sebuah koleksi pribadi berisikan meme-meme yang dapat memberi warna dalam bercakap online'))
    if text=="kategori meme":
        line_bot_api.reply_message(event.reply_token,TemplateSendMessage(
            alt_text='ImageCarousel template',
            template=ImageCarouselTemplate(
                columns=[
                    ImageCarouselColumn(
                        #image_url='https://asset.kompas.com/crop/0x2:960x642/750x500/data/photo/2018/03/06/2717904116.jpg',
                        image_url='https://i.imgur.com/ywKZuaB.gifv',
                        action=PostbackAction(
                            label='Anjing',
                            text='meme anjing',
                            data='action=buy&itemid=1'
                        )
                    ),
                    ImageCarouselColumn(
                        image_url='https://forums.lbsg.net/uploads/default/original/2X/7/7c14a99d7de45e3d691ed9cf05deec1ec69d0d78.png',
                        action=PostbackAction(
                            label='Pun',
                            text='meme pun',
                            data='action=buy&itemid=2'
                        )
                    ),
                    ImageCarouselColumn(
                        image_url='https://s.kaskus.id/images/2018/03/12/7034635_201803120552320355.jpg',
                        action=PostbackAction(
                            label='WikiHow',
                            text='meme wikihow',
                            data='action=buy&itemid=3'
                        )
                    ),
                    ImageCarouselColumn(
                        image_url='https://i.imgur.com/SBUbHHN.gif',
                        action=PostbackAction(
                            label='Others',
                            text='meme etcetera',
                            data='action=buy&itemid=4'
                        )
                    )
                ]
            )
        ))

#MULT CHOICE
    

#ANJING
    if text=="meme anjing":
        kamus="Kategori Anjing :\n1. /anjing-ga-jelas :\n'ga jelas', 'gaje', 'geje', 'gj'\n2. /anjing-ga-nyambung :\n'ga nyambung'\n3. /anjing-ngegas :\n'ngegas'\n4. /anjing-tolol :\n'tolol'\n5. /anjing-semua :\n'asu kabeh'\n6. /anjing-jangkrik :\n'jangkrik'\n7. /anjing-kok :\n'kok anjing'\n8. /anjing-bawel :\n'bawel'\n9. /anjing-baper :\n'baper'\n10. /anjing-kalem :\n'kalem'"
        line_bot_api.reply_message(event.reply_token,TextSendMessage(text=kamus))




#PUN
    elif text=="meme pun":
        kamus="Kategori Pun :\n1. /pun-bawel\n2. /pun-bego\n3. /pun-ngegas\n4. /pun-gas\n5. /pun-gawat\n6. /pun-ikan-goblok\n7. /pun-gelut\n8. /pun-bubar\n9. /pun-ikan-goblok\n11. /pun-kancil\n12. /pun-kecewa\n13. /pun-keren\n14. /pun-kocak\n15. /pun-lodeh\n16. /pun-mager\n17. /pun-pinter\n18. /pun-sabi\n19. /pun-sekip\n20. /pun-siyap\n21. /pun-thanks\n22. /pun-kampret"
        line_bot_api.reply_message(event.reply_token,TextSendMessage(text=kamus))

    
    
    
    
    
    
    
#WIKIHOW
    elif text=="meme wikihow":
        kamus="Meme Wikihow"
        line_bot_api.reply_message(event.reply_token,TextSendMessage(text=kamus))
    

#etc
    # if len(data)>=3:
    #     if data[0]=="cuy":
    #         line_bot_api.reply_message(event.reply_token,TextSendMessage(text="a"))
    #     if data[1]=="cuy":
    #         line_bot_api.reply_message(event.reply_token,TextSendMessage(text="b"))
    #     if data[2]=="cuy":
    #         line_bot_api.reply_message(event.reply_token,TextSendMessage(text="c"))
    # else:
    #     if text=="cuy":
    #         line_bot_api.reply_message(event.reply_token,TextSendMessage(text="d"))
    #     if text=="cuy cuy":
    #         line_bot_api.reply_message(event.reply_token,TextSendMessage(text="e"))
    # if len(data)>=2:
    #     if text=="tyo":
    #         line_bot_api.reply_message(event.reply_token,TextSendMessage(text="e"))
        

#LEAVE GRUP / MPC
    if text=="/bye":
        if isinstance(event.source, SourceGroup):
            line_bot_api.push_message(event.source.group_id, TextSendMessage(text='***Snap!***'))
            line_bot_api.push_message(event.source.group_id, TextSendMessage(text="Mr. Stark, I don't feel so good" ))
            line_bot_api.push_message(event.source.group_id, TextSendMessage(text='Parah, '+profile.display_name+' jahat bgt'))
            line_bot_api.leave_group(event.source.group_id)
        elif isinstance(event.source, SourceRoom):
            line_bot_api.push_message(event.source.group_id, TextSendMessage(text='***Snap!***'))
            line_bot_api.push_message(event.source.group_id, TextSendMessage(text="Mr. Stark, I don't feel so good" ))
            line_bot_api.push_message(event.source.group_id, TextSendMessage(text='Parah, '+profile.display_name+' jahat bgt'))
            line_bot_api.leave_room(event.source.room_id)
Ejemplo n.º 22
0
def handle_message(event):
    if event.message.text=="讓我飛":    
        sent_Column_list = []
        print(event.source.group_id)
        profile = line_bot_api.get_profile(event.source.user_id)

        sent_Column=CarouselColumn(
        thumbnail_image_url=profile.picture_url,
        title="%s要開飛了"%(profile.display_name),
        text=" ",
        actions=[
            PostbackTemplateAction(
                label="幫助他",
                data='好道具'
                ),
            PostbackTemplateAction(
                label="陷害他",
                data='壞道具'
                ),
            URITemplateAction(
                label='點我開始!!',
                uri='line://app/1612063818-VeyxR31w?group_id=%s&pipe_item=%s'%(event.source.group_id,'100')
                )
            ]
        )
        sent_Column_list += [sent_Column]

        carousel_template_message = TemplateSendMessage(
            alt_text='飛吧~',
            template=CarouselTemplate(
                columns=sent_Column_list
                )
        )
        line_bot_api.reply_message(event.reply_token,carousel_template_message)
    elif event.message.text=='欸嘿':
        sent_Column_list = []
        print(event.source.group_id)
        conn = sqlite.connect('%sdata/db/%s.db'%(FileRout,event.source.group_id))
        c = conn.cursor()
        user_id_list = c.execute('SELECT user_id FROM info WHERE score = (SELECT MAX(score) FROM info)')
        user_id_list = user_id_list.fetchall()
        for item in user_id_list:
            user_id = item[0]
            user_score_list = c.execute('SELECT score FROM info WHERE user_id = "%s"'%(item[0]))
            user_score = user_score_list.fetchall()[0][0]

            profile = line_bot_api.get_profile(user_id)

            sent_Column=CarouselColumn(
            thumbnail_image_url=profile.picture_url,
            title="哪呢!%s 獲得了"%(profile.display_name),
            text="%s分"%(user_score),
            actions=[
                PostbackTemplateAction(
                    label="幫助他",
                    data='好道具'
                    ),
                PostbackTemplateAction(
                    label="陷害他",
                    data='壞道具'
                    ),
                URITemplateAction(
                    label='點我向他挑戰!!',
                    uri='line://app/1612063818-VeyxR31w?group_id=%s&pipe_item=%s'%(event.source.group_id,'100')
                    )
                ]
            )
            sent_Column_list += [sent_Column]
        # print("in%s"%user_score)
        conn.commit()
        conn.close()
        # print(user_id_list)
        # print(user_score_list)
        carousel_template_message = TemplateSendMessage(
            alt_text='飛吧~',
            template=CarouselTemplate(
                columns=sent_Column_list
                )
        )
        line_bot_api.reply_message(event.reply_token,carousel_template_message)
        

    elif event.message.text=='test':
        print(event.source.group_id)
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text=event.message.text))
Ejemplo n.º 23
0
def handle_message(event):
    # 抓使用者資訊
    profile = line_bot_api.get_profile(event.source.user_id)
    usern = profile.display_name
    
    msg = event.message.text
    if msg == '上衣':
        myans = getinfoRand('上衣')
        mymessage = TemplateSendMessage(
            alt_text='ImageCarousel template',
            template=ImageCarouselTemplate(
                columns=[
                    ImageCarouselColumn(
                        image_url=myans[0][5],
                        action=PostbackAction(label=myans[0][2], text=myans[0][2], 
                                              data='action=buy&itemid=1')),
                    ImageCarouselColumn(
                        image_url=myans[1][5],
                        action=PostbackAction(label=myans[1][2], text=myans[1][2], 
                                              data='action=buy&itemid=1')),
                    ImageCarouselColumn(
                        image_url=myans[2][5],
                        action=PostbackAction(label=myans[2][2], text=myans[2][2], 
                                              data='action=buy&itemid=1')), ]))
        line_bot_api.reply_message(event.reply_token, mymessage)
    elif msg == '裙子':
        myans = getinfoRand('裙子')
        line_bot_api.reply_message(
            event.reply_token, 
            [TextSendMessage(text=myans[0][2]), 
             ImageSendMessage(original_content_url=myans[0][5], preview_image_url=myans[0][5]), 
             TextSendMessage(text=myans[1][2]), 
             ImageSendMessage(original_content_url=myans[1][5], preview_image_url=myans[1][5]),])
    elif msg == '褲子':
        myans = getinfoRand('褲子')
        image_carousel_template = TemplateSendMessage(
            alt_text='Carousel template',
            template=CarouselTemplate(
                columns=[
                    CarouselColumn(
                        thumbnail_image_url=myans[0][5],
                        title=myans[0][1], text=myans[0][2],
                        actions=[PostbackAction(label='褲子類', data='ping', text='褲子類'),]),
                    CarouselColumn(
                        thumbnail_image_url=myans[1][5],
                        title=myans[1][1], text=myans[1][2],
                        actions=[PostbackAction(label='褲子類', data='ping', text='褲子類'),]),
                    CarouselColumn(
                        thumbnail_image_url=myans[2][5],
                        title=myans[2][1], text=myans[2][2],
                        actions=[PostbackAction(label='褲子類', data='ping', text='褲子類'),])]))
        line_bot_api.reply_message(event.reply_token, image_carousel_template)
    elif msg == '尋問店家':
        line_bot_api.reply_message(event.reply_token, 
                                   [TextSendMessage(text='歡迎加line: goodbabyworker 或 email: [email protected]')])
    elif msg == '門市訊息':
        line_bot_api.reply_message(event.reply_token, 
                                   [TextSendMessage(text='營業時間:全年無休,請打給寶寶:0933584513')]) 
    else:
        line_bot_api.reply_message(event.reply_token, 
                                   [TextSendMessage(text='營業時間:全年無休,請打給寶寶:0933584513')])
Ejemplo n.º 24
0
def postback_process(userid, data, DB, event):
    """
        input:
            1. userid
            2. data
            3. DB
            4. event
        return:
            1. [message]
    """
    ret = "NA"
    user_data = data.get_user(userid)

    # 填問卷的過程
    # QC丟問題,相對題號
    if event.postback.data == 'Quick':
        ret = [
            confirm_push(data.get_all_users(), userid, event.postback.data, DB)
        ]

    elif event.postback.data == 'Standard':
        ct_container = ct_push(data.get_all_users(), userid, 1, 0,
                               DB)  #把4類別加進來
        carousel_template = CarouselTemplate(columns=ct_container)
        ret = [
            TemplateSendMessage(alt_text='詳細災情回覆問卷',
                                template=carousel_template)
        ]

    # 四類丟問題,相對題號
    elif event.postback.data in ['Normal', 'Indoors', 'Corridor', 'Outdoors']:
        ret = [
            confirm_push(data.get_all_users(), userid, event.postback.data, DB)
        ]

    # 戳題目的confirm template的時候
    try:
        parse = extract(event.postback.data)  # [0]是類別;[1]是相對題號;[2]是沒問題/待改進
        cat, Q, ans = parse
        data.set_user_current(userid, (cat, Q))
        last = len(DB.get_category(cat))

        # 處理carousel template
        # 填完該類別最後一題且最後一題是沒問題
        if Q == last and ans == 'OK':
            data.set_user_status(userid, "00")
            data.add_user_answered(userid, cat, Q)
            output = data.get_user_feedback(userid)

            print('進入【(第一次)類別TEMPVIEW】')
            print(f"\n\n====\ncat: |{cat}\nOutput: |{output}\n")
            ret = cat_tempview_confirm(cat, output,
                                       DB)  # 推第一次類別修改tempview confirm template
            # ct_container = ct_push(data.get_all_users(), userid, 1, 0, DB)

            # QC填完
            if cat == "Quick" and Q == last:
                print('進入【最終TEMPVIEW】──QC的路,不要怕上一句話,因為她是必經之路')
                output = data.get_user_feedback(userid)
                ret = tempview_confirm(output,
                                       DB)  # 推第一次最終修改tempview confirm template

        # 處理題目的confirm template
        # 待改進的話,或是非該類別的最後一題
        else:
            ret = [next(data.get_all_users(), userid, parse, DB)[0]]
            status = next(data.get_all_users(), userid, parse, DB)[1]
            data.set_user_status(userid, status)

    except Exception as e:
        # exc_type, exc_obj, exc_tb = sys.exc_info()
        # fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
        # print('ERROR:', exc_type, exc_obj, fname, exc_tb.tb_lineno)
        # print(event.postback.data)

        if event.postback.data == 'edit=NO':
            data.set_user_status(userid, "00")
            output = data.get_user_feedback(userid)
            print(f"\n\n\nAARRR!!!{output}\n\n\n")
            build, room = data.get_user_building(userid)
            print(f"\n\n\nBBRRR!!!{(build, room)}\n\n\n")
            for feed in range(len(output)):
                output[feed] += (build, )
                output[feed] += (room, )

            DB.get_feedback(output, userid,
                            data.get_user_building(userid)[0])  #寫進資料庫
            print('進入【最終修改答案不修改】,結束問卷')
            print(
                f"\n========================\nThis is feedback:\n{output}\n========================\n"
            )

            ret = [
                TextSendMessage(text="已收到您的回覆~謝謝您的貢獻!"),
                StickerSendMessage(package_id=11537, sticker_id=52002739),
            ]

            data.remove_user(userid)

        if event.postback.data == 'edit=OK':
            print('進入【最終修改答案要修改】,要求輸入修改題號')
            data.set_user_status(userid, "20")
            ret = [
                TextSendMessage(text="請問您要修改哪一題呢?"),
                TextSendMessage(text="【注意】:當您填寫快速檢核時,不能修改其他四類問題;反之亦然。"),
                TextSendMessage(
                    text=
                    "請按照下列格式填寫:\n一般檢查(Normal)簡寫為N\n室內(Indoors)簡寫為I\n走廊(Corridor)簡寫為C\n室外(Outdoors)簡寫為O\n再加上題號,例如:\nN7(一般檢查的第七題)"
                ),
            ]

        if event.postback.data == 'cat_edit=NO':
            print('進入【類別修改答案不修改】,丟出類別選單')
            ct_container = ct_push(data.get_all_users(), userid, 1, 1, DB)
            if ct_container == "All cats have already checked!":  # 類別全部修改過後,進入最終環節
                print('進入【最終TEMPVIEW】──標準填完了唷,不要怕上一句話,因為她是必經之路')
                output = data.get_user_feedback(userid)
                ret = tempview_confirm(output, DB)
            else:
                carousel_template = CarouselTemplate(columns=ct_container)
                ret = [
                    TemplateSendMessage(alt_text='問卷選單',
                                        template=carousel_template)
                ]

        if 'cat_edit=OK' in event.postback.data:
            print('進入【類別修改答案要修改】,要求輸入修改題號')
            data.set_user_status(userid, "10")

            ## 避免戳 Normal1, Indoors1, Corridor1, Outdoors1 的時候類別被鎖住
            cate = str(event.postback.data).split(
                ';')[1] if ';' in event.postback.data else ''
            print('\n===<%s>===\n' % cate)
            relq = user_data["current"][1]
            _ = (cate, relq) if cate != '' else user_data["current"]
            data.set_user_current(userid, _)
            ret = [
                TextSendMessage(text="請問您要修改哪一題呢?"),
                TextSendMessage(text="【注意】:只能修改當前題組,欲修改其他題組,請於所有問題答畢後修改"),
                TextSendMessage(
                    text=
                    "請按照下列格式填寫:\n一般檢查(Normal)簡寫為N\n室內(Indoors)簡寫為I\n走廊(Corridor)簡寫為C\n室外(Outdoors)簡寫為O\n再加上題號,例如:\nN7(一般檢查的第七題)"
                ),
            ]

    # 類別修改答案的過程
    if 'cat_revise=' in event.postback.data and 'OK' in event.postback.data:  # 沒問題
        print('進入【類別修改答案沒問題】,丟出cat_tempview')
        output = data.get_user_feedback(userid)
        ret = cat_tempview_confirm(user_data["current"][0], output,
                                   DB)  # 把它目前的回答推個confirm template給他看看

    elif 'cat_revise=' in event.postback.data and 'NO' in event.postback.data:  # 待改進
        print('進入【類別修改答案待改進】,請簡述災情')
        ret = [TextSendMessage(text="請簡述災情")]
        data.set_user_status(userid, "11")

    # 最終修改答案的過程
    if 'all_revise=' in event.postback.data and 'OK' in event.postback.data:  # 沒問題
        print('進入【最後修改答案沒問題】,丟出tempview')
        output = data.get_user_feedback(userid)
        ret = tempview_confirm(output, DB)  # 把它目前的回答推個confirm template給他看看

    elif 'all_revise=' in event.postback.data and 'NO' in event.postback.data:  # 待改進
        print('進入【最後修改答案待改進】,請簡述災情')
        ret = [TextSendMessage(text="請簡述災情")]
        data.set_user_status(userid, "21")

    # 重設帳號或不設
    if event.postback.data == 'account_reset':
        delete_userid_db(userid, DB)
        account[userid] = {
            'userid': userid,
            'name': 0,
            'county': 0,
            'school': 0,
            'phone': 0
        }
        ret = [TextSendMessage(text="請問您尊姓大名?")]
        account_q = 1

    elif event.postback.data == 'account_remain':
        ret = [TextSendMessage(text="好的,謝謝😁")]

    return ret
Ejemplo n.º 25
0
    def Build(self):
        bLen = len(self.buttons)
        if bLen == 0:
            return ([], None)
        carousels = []
        while bLen > 15:
            carousels.append(
                TemplateSendMessage(alt_text=self.altTextHeader,
                                    template=CarouselTemplate(columns=[])))
            car = carousels[-1]
            for k in range(1, 16):
                button = self.buttons.pop(0)
                colLen = len(car.template.columns)
                if colLen == 0:
                    car.template.columns.append(
                        CarouselColumn(text=self.columnText, actions=[]))
                elif len(car.template.columns[-1].actions) == 3:
                    car.template.columns.append(
                        CarouselColumn(text=self.columnText, actions=[]))
                car.template.columns[-1].actions.append(
                    MessageTemplateAction(label=button.label,
                                          text=button.text))
                car.alt_text = (car.alt_text + button.altTextEntry)[:400]
            bLen = bLen - 15

        cbLen = 0
        cols = 0
        rows = 0
        if bLen > 4:
            for i in range(1, 5):
                div = bLen // i
                if div > 3:
                    continue
                if cbLen < div * i:
                    cbLen = div * i
                    cols = i
                    rows = div
                elif cbLen == div * i and div > rows:
                    cbLen = div * i
                    cols = i
                    rows = div

        bbLen = bLen - cbLen

        if cbLen > 0:
            carousels.append(
                TemplateSendMessage(alt_text=self.altTextHeader,
                                    template=CarouselTemplate(columns=[])))
            count = 0
            for button in self.buttons:
                count = count + 1
                if count > cbLen:
                    break
                car = carousels[-1]
                colLen = len(car.template.columns)
                if colLen == 0:
                    car.template.columns.append(
                        CarouselColumn(text=self.columnText, actions=[]))
                elif len(car.template.columns[-1].actions) == rows:
                    if colLen == cols:
                        carousels.append(
                            TemplateSendMessage(
                                alt_text=self.altTextHeader,
                                template=CarouselTemplate(columns=[])))
                        car = carousels[-1]
                    car.template.columns.append(
                        CarouselColumn(text=self.columnText, actions=[]))
                car.template.columns[-1].actions.append(
                    MessageTemplateAction(label=button.label,
                                          text=button.text))
                car.alt_text = (car.alt_text + button.altTextEntry)[:400]

            car = carousels[-1]
            colLen = len(car.template.columns)
            if colLen == 0 or (colLen == 1
                               and len(car.template.columns[-1].actions) == 0):
                carousels.remove(car)
            elif len(car.template.columns[-1].actions) == 0:
                car.template.columns.remove(car.template.columns[-1])

        but = None
        if bbLen > 0:
            but = TemplateSendMessage(alt_text=self.altTextHeader,
                                      template=ButtonsTemplate(
                                          text=self.columnText, actions=[]))
            for val in self.buttons[cbLen:]:
                but.template.actions.append(
                    MessageTemplateAction(label=val.label, text=val.text))
                but.alt_text = (but.alt_text + val.altTextEntry)[:400]
        return [carousels, but]
Ejemplo n.º 26
0
def handle_text_message(event):
    text = event.message.text

    # 送られてきた言葉が植物の名前だった場合は、それをキャッシュし「なに?」と返す
    if user_data.plant_exists(text):
        current_plant = text
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text='なに?'))

    if text == 'profile':
        if isinstance(event.source, SourceUser):
            profile = line_bot_api.get_profile(event.source.user_id)
            line_bot_api.reply_message(event.reply_token, [
                TextSendMessage(text='なまえ: ' + profile.display_name),
                TextSendMessage(text='一言: ' + profile.status_message)
            ])
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text="「ユーザIDがないとこのコマンドは使えません」"))
    elif text == 'bye':
        if isinstance(event.source, SourceGroup):
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='またね、今までありがとう'))
            line_bot_api.leave_group(event.source.group_id)
        elif isinstance(event.source, SourceRoom):
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='またね、今までありがとう'))
            line_bot_api.leave_room(event.source.room_id)
        else:
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text="ぼくはここから動けないよ..."))
    elif text == 'confirm':
        confirm_template = ConfirmTemplate(text='これでいい?',
                                           actions=[
                                               MessageAction(label='Yes',
                                                             text='はい!'),
                                               MessageAction(label='No',
                                                             text='いいえ'),
                                           ])
        template_message = TemplateSendMessage(alt_text='Confirm alt text',
                                               template=confirm_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'buttons':
        buttons_template = ButtonsTemplate(
            title='My buttons sample',
            text='Hello, my buttons',
            actions=[
                URIAction(label='Go to line.me', uri='https://line.me'),
                PostbackAction(label='ping', data='ping'),
                PostbackAction(label='ping with text',
                               data='ping',
                               text='ping'),
                MessageAction(label='Translate Rice', text='米')
            ])
        template_message = TemplateSendMessage(alt_text='Buttons alt text',
                                               template=buttons_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'carousel':
        carousel_template = CarouselTemplate(columns=[
            CarouselColumn(text='hoge1',
                           title='fuga1',
                           actions=[
                               URIAction(label='Go to line.me',
                                         uri='https://line.me'),
                               PostbackAction(label='ping', data='ping')
                           ]),
            CarouselColumn(text='hoge2',
                           title='fuga2',
                           actions=[
                               PostbackAction(label='ping with text',
                                              data='ping',
                                              text='ping'),
                               MessageAction(label='Translate Rice', text='米')
                           ]),
        ])
        template_message = TemplateSendMessage(alt_text='Carousel alt text',
                                               template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'image_carousel':
        image_carousel_template = ImageCarouselTemplate(columns=[
            ImageCarouselColumn(
                image_url='https://via.placeholder.com/1024x1024',
                action=DatetimePickerAction(label='datetime',
                                            data='datetime_postback',
                                            mode='datetime')),
            ImageCarouselColumn(
                image_url='https://via.placeholder.com/1024x1024',
                action=DatetimePickerAction(
                    label='date', data='date_postback', mode='date'))
        ])
        template_message = TemplateSendMessage(
            alt_text='ImageCarousel alt text',
            template=image_carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'imagemap':
        pass
    elif text == 'flex':
        bubble = BubbleContainer(
            direction='ltr',
            hero=ImageComponent(url='https://example.com/cafe.jpg',
                                size='full',
                                aspect_ratio='20:13',
                                aspect_mode='cover',
                                action=URIAction(uri='http://example.com',
                                                 label='label')),
            body=BoxComponent(
                layout='vertical',
                contents=[
                    # title
                    TextComponent(text='Brown Cafe', weight='bold', size='xl'),
                    # review
                    BoxComponent(
                        layout='baseline',
                        margin='md',
                        contents=[
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/grey_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/grey_star.png'),
                            TextComponent(text='4.0',
                                          size='sm',
                                          color='#999999',
                                          margin='md',
                                          flex=0)
                        ]),
                    # info
                    BoxComponent(
                        layout='vertical',
                        margin='lg',
                        spacing='sm',
                        contents=[
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='Place',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(text='Shinjuku, Tokyo',
                                                  wrap=True,
                                                  color='#666666',
                                                  size='sm',
                                                  flex=5)
                                ],
                            ),
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='Time',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(
                                        text="10:00 - 23:00",
                                        wrap=True,
                                        color='#666666',
                                        size='sm',
                                        flex=5,
                                    ),
                                ],
                            ),
                        ],
                    )
                ],
            ),
            footer=BoxComponent(
                layout='vertical',
                spacing='sm',
                contents=[
                    # callAction, separator, websiteAction
                    SpacerComponent(size='sm'),
                    # callAction
                    ButtonComponent(
                        style='link',
                        height='sm',
                        action=URIAction(label='CALL', uri='tel:000000'),
                    ),
                    # separator
                    SeparatorComponent(),
                    # websiteAction
                    ButtonComponent(style='link',
                                    height='sm',
                                    action=URIAction(
                                        label='WEBSITE',
                                        uri="https://example.com"))
                ]),
        )
        message = FlexSendMessage(alt_text="hello", contents=bubble)
        line_bot_api.reply_message(event.reply_token, message)
    elif text == 'quick_reply':
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='Quick reply',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(
                        action=PostbackAction(label="label1", data="data1")),
                    QuickReplyButton(
                        action=MessageAction(label="label2", text="text2")),
                    QuickReplyButton(action=DatetimePickerAction(
                        label="label3", data="data3", mode="date")),
                    QuickReplyButton(action=CameraAction(label="label4")),
                    QuickReplyButton(action=CameraRollAction(label="label5")),
                    QuickReplyButton(action=LocationAction(label="label6")),
                ])))

    # ユーザからビーコンの設定を行う
    elif text == 'beacon':
        BeaconWhisperEvent(event.reply_token, line_bot_api,
                           user_data).configBeaconMsg()

    # 植物を削除するときの命令
    elif text == 'remove' or text == 'delete':
        if current_plant is not None:
            confirm_template = ConfirmTemplate(
                text=current_plant + "の情報を削除します\n本当によろしいですか?\n",
                actions=[
                    PostbackAction(label='Yes',
                                   data='delete_plant ' + current_plant,
                                   displayText='はい'),
                    PostbackAction(label='No',
                                   data='delete_plant_cancel ' + current_plant,
                                   displayText='いいえ'),
                ])
        else:
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='植物が選択されていません'))

    elif text == 'disconnect' and current_plant is not None:
        plant_animator.disconnect()
        line_bot_api.reply_message(event.reply_token,
                                   TextMessage(text=current_plant + ":またね"))

    # 植物情報(plant)のアプデをかける
    elif text == 'update':
        plant_animator.update()
        if current_plant is None:
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='どの植物に呼びかけますか?'))
    # text.split()[0] in (create, register)
    elif text.split()[0] in ('create', 'register'):
        plant_animator.register_plant(text.split[1])
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text='植物の名前を決めてあげてください!'))

        # この処理は工事中↑
        # 方針としては一番最後にelse: で入れて、textを"create hoge"みたいに入れてもらってsplitして入れればい何とかなる(きもいけど)

    else:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=event.message.text))
Ejemplo n.º 27
0
def handle_text_message(event):
    text = event.message.text

    if text == 'profile':
        if isinstance(event.source, SourceUser):
            profile = line_bot_api.get_profile(event.source.user_id)
            line_bot_api.reply_message(event.reply_token, [
                TextSendMessage(text='Display name: ' + profile.display_name),
                TextSendMessage(text='Status message: ' +
                                str(profile.status_message))
            ])
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(
                    text="Bot can't use profile API without user ID"))
    elif text == 'quota':
        quota = line_bot_api.get_message_quota()
        line_bot_api.reply_message(event.reply_token, [
            TextSendMessage(text='type: ' + quota.type),
            TextSendMessage(text='value: ' + str(quota.value))
        ])
    elif text == 'quota_consumption':
        quota_consumption = line_bot_api.get_message_quota_consumption()
        line_bot_api.reply_message(event.reply_token, [
            TextSendMessage(text='total usage: ' +
                            str(quota_consumption.total_usage)),
        ])
    elif text == 'push':
        line_bot_api.push_message(event.source.user_id, [
            TextSendMessage(text='PUSH!'),
        ])
    elif text == 'multicast':
        line_bot_api.multicast([event.source.user_id], [
            TextSendMessage(text='THIS IS A MULTICAST MESSAGE'),
        ])
    elif text == 'broadcast':
        line_bot_api.broadcast([
            TextSendMessage(text='THIS IS A BROADCAST MESSAGE'),
        ])
    elif text.startswith('broadcast '):  # broadcast 20190505
        date = text.split(' ')[1]
        print("Getting broadcast result: " + date)
        result = line_bot_api.get_message_delivery_broadcast(date)
        line_bot_api.reply_message(event.reply_token, [
            TextSendMessage(text='Number of sent broadcast messages: ' + date),
            TextSendMessage(text='status: ' + str(result.status)),
            TextSendMessage(text='success: ' + str(result.success)),
        ])
    elif text == 'bye':
        if isinstance(event.source, SourceGroup):
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='Leaving group'))
            line_bot_api.leave_group(event.source.group_id)
        elif isinstance(event.source, SourceRoom):
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='Leaving group'))
            line_bot_api.leave_room(event.source.room_id)
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text="Bot can't leave from 1:1 chat"))
    elif text == 'image':
        url = request.url_root + '/static/logo.png'
        app.logger.info("url=" + url)
        line_bot_api.reply_message(event.reply_token,
                                   ImageSendMessage(url, url))
    elif text == 'confirm':
        confirm_template = ConfirmTemplate(text='Do it?',
                                           actions=[
                                               MessageAction(label='Yes',
                                                             text='Yes!'),
                                               MessageAction(label='No',
                                                             text='No!'),
                                           ])
        template_message = TemplateSendMessage(alt_text='Confirm alt text',
                                               template=confirm_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'buttons':
        buttons_template = ButtonsTemplate(
            title='My buttons sample',
            text='Hello, my buttons',
            actions=[
                URIAction(label='Go to line.me', uri='https://line.me'),
                PostbackAction(label='ping', data='ping'),
                PostbackAction(label='ping with text',
                               data='ping',
                               text='ping'),
                MessageAction(label='Translate Rice', text='米')
            ])
        template_message = TemplateSendMessage(alt_text='Buttons alt text',
                                               template=buttons_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'carousel':
        carousel_template = CarouselTemplate(columns=[
            CarouselColumn(text='hoge1',
                           title='fuga1',
                           actions=[
                               URIAction(label='Go to line.me',
                                         uri='https://line.me'),
                               PostbackAction(label='ping', data='ping')
                           ]),
            CarouselColumn(text='hoge2',
                           title='fuga2',
                           actions=[
                               PostbackAction(label='ping with text',
                                              data='ping',
                                              text='ping'),
                               MessageAction(label='Translate Rice', text='米')
                           ]),
        ])
        template_message = TemplateSendMessage(alt_text='Carousel alt text',
                                               template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'image_carousel':
        image_carousel_template = ImageCarouselTemplate(columns=[
            ImageCarouselColumn(
                image_url='https://via.placeholder.com/1024x1024',
                action=DatetimePickerAction(label='datetime',
                                            data='datetime_postback',
                                            mode='datetime')),
            ImageCarouselColumn(
                image_url='https://via.placeholder.com/1024x1024',
                action=DatetimePickerAction(
                    label='date', data='date_postback', mode='date'))
        ])
        template_message = TemplateSendMessage(
            alt_text='ImageCarousel alt text',
            template=image_carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'imagemap':
        pass
    elif text == 'flex':
        bubble = BubbleContainer(
            direction='ltr',
            hero=ImageComponent(url='https://example.com/cafe.jpg',
                                size='full',
                                aspect_ratio='20:13',
                                aspect_mode='cover',
                                action=URIAction(uri='http://example.com',
                                                 label='label')),
            body=BoxComponent(
                layout='vertical',
                contents=[
                    # title
                    TextComponent(text='Brown Cafe', weight='bold', size='xl'),
                    # review
                    BoxComponent(
                        layout='baseline',
                        margin='md',
                        contents=[
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/grey_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/grey_star.png'),
                            TextComponent(text='4.0',
                                          size='sm',
                                          color='#999999',
                                          margin='md',
                                          flex=0)
                        ]),
                    # info
                    BoxComponent(
                        layout='vertical',
                        margin='lg',
                        spacing='sm',
                        contents=[
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='Place',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(text='Shinjuku, Tokyo',
                                                  wrap=True,
                                                  color='#666666',
                                                  size='sm',
                                                  flex=5)
                                ],
                            ),
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='Time',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(
                                        text="10:00 - 23:00",
                                        wrap=True,
                                        color='#666666',
                                        size='sm',
                                        flex=5,
                                    ),
                                ],
                            ),
                        ],
                    )
                ],
            ),
            footer=BoxComponent(
                layout='vertical',
                spacing='sm',
                contents=[
                    # callAction, separator, websiteAction
                    SpacerComponent(size='sm'),
                    # callAction
                    ButtonComponent(
                        style='link',
                        height='sm',
                        action=URIAction(label='CALL', uri='tel:000000'),
                    ),
                    # separator
                    SeparatorComponent(),
                    # websiteAction
                    ButtonComponent(style='link',
                                    height='sm',
                                    action=URIAction(
                                        label='WEBSITE',
                                        uri="https://example.com"))
                ]),
        )
        message = FlexSendMessage(alt_text="hello", contents=bubble)
        line_bot_api.reply_message(event.reply_token, message)
    elif text == 'flex_update_1':
        bubble_string = """
        {
          "type": "bubble",
          "body": {
            "type": "box",
            "layout": "vertical",
            "contents": [
              {
                "type": "image",
                "url": "https://scdn.line-apps.com/n/channel_devcenter/img/flexsnapshot/clip/clip3.jpg",
                "position": "relative",
                "size": "full",
                "aspectMode": "cover",
                "aspectRatio": "1:1",
                "gravity": "center"
              },
              {
                "type": "box",
                "layout": "horizontal",
                "contents": [
                  {
                    "type": "box",
                    "layout": "vertical",
                    "contents": [
                      {
                        "type": "text",
                        "text": "Brown Hotel",
                        "weight": "bold",
                        "size": "xl",
                        "color": "#ffffff"
                      },
                      {
                        "type": "box",
                        "layout": "baseline",
                        "margin": "md",
                        "contents": [
                          {
                            "type": "icon",
                            "size": "sm",
                            "url": "https://scdn.line-apps.com/n/channel_devcenter/img/fx/review_gold_star_28.png"
                          },
                          {
                            "type": "icon",
                            "size": "sm",
                            "url": "https://scdn.line-apps.com/n/channel_devcenter/img/fx/review_gold_star_28.png"
                          },
                          {
                            "type": "icon",
                            "size": "sm",
                            "url": "https://scdn.line-apps.com/n/channel_devcenter/img/fx/review_gold_star_28.png"
                          },
                          {
                            "type": "icon",
                            "size": "sm",
                            "url": "https://scdn.line-apps.com/n/channel_devcenter/img/fx/review_gold_star_28.png"
                          },
                          {
                            "type": "icon",
                            "size": "sm",
                            "url": "https://scdn.line-apps.com/n/channel_devcenter/img/fx/review_gray_star_28.png"
                          },
                          {
                            "type": "text",
                            "text": "4.0",
                            "size": "sm",
                            "color": "#d6d6d6",
                            "margin": "md",
                            "flex": 0
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "box",
                    "layout": "vertical",
                    "contents": [
                      {
                        "type": "text",
                        "text": "¥62,000",
                        "color": "#a9a9a9",
                        "decoration": "line-through",
                        "align": "end"
                      },
                      {
                        "type": "text",
                        "text": "¥42,000",
                        "color": "#ebebeb",
                        "size": "xl",
                        "align": "end"
                      }
                    ]
                  }
                ],
                "position": "absolute",
                "offsetBottom": "0px",
                "offsetStart": "0px",
                "offsetEnd": "0px",
                "backgroundColor": "#00000099",
                "paddingAll": "20px"
              },
              {
                "type": "box",
                "layout": "vertical",
                "contents": [
                  {
                    "type": "text",
                    "text": "SALE",
                    "color": "#ffffff"
                  }
                ],
                "position": "absolute",
                "backgroundColor": "#ff2600",
                "cornerRadius": "20px",
                "paddingAll": "5px",
                "offsetTop": "10px",
                "offsetEnd": "10px",
                "paddingStart": "10px",
                "paddingEnd": "10px"
              }
            ],
            "paddingAll": "0px"
          }
        }
        """
        message = FlexSendMessage(alt_text="hello",
                                  contents=json.loads(bubble_string))
        line_bot_api.reply_message(event.reply_token, message)
    elif text == 'quick_reply':
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='Quick reply',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(
                        action=PostbackAction(label="label1", data="data1")),
                    QuickReplyButton(
                        action=MessageAction(label="label2", text="text2")),
                    QuickReplyButton(action=DatetimePickerAction(
                        label="label3", data="data3", mode="date")),
                    QuickReplyButton(action=CameraAction(label="label4")),
                    QuickReplyButton(action=CameraRollAction(label="label5")),
                    QuickReplyButton(action=LocationAction(label="label6")),
                ])))
    elif text == 'link_token' and isinstance(event.source, SourceUser):
        link_token_response = line_bot_api.issue_link_token(
            event.source.user_id)
        line_bot_api.reply_message(event.reply_token, [
            TextSendMessage(text='link_token: ' +
                            link_token_response.link_token)
        ])
    elif text == 'insight_message_delivery':
        today = datetime.date.today().strftime("%Y%m%d")
        response = line_bot_api.get_insight_message_delivery(today)
        if response.status == 'ready':
            messages = [
                TextSendMessage(text='broadcast: ' + str(response.broadcast)),
                TextSendMessage(text='targeting: ' + str(response.targeting)),
            ]
        else:
            messages = [TextSendMessage(text='status: ' + response.status)]
        line_bot_api.reply_message(event.reply_token, messages)
    elif text == 'insight_followers':
        today = datetime.date.today().strftime("%Y%m%d")
        response = line_bot_api.get_insight_followers(today)
        if response.status == 'ready':
            messages = [
                TextSendMessage(text='followers: ' + str(response.followers)),
                TextSendMessage(text='targetedReaches: ' +
                                str(response.targeted_reaches)),
                TextSendMessage(text='blocks: ' + str(response.blocks)),
            ]
        else:
            messages = [TextSendMessage(text='status: ' + response.status)]
        line_bot_api.reply_message(event.reply_token, messages)
    elif text == 'insight_demographic':
        response = line_bot_api.get_insight_demographic()
        if response.available:
            messages = [
                "{gender}: {percentage}".format(gender=it.gender,
                                                percentage=it.percentage)
                for it in response.genders
            ]
        else:
            messages = [TextSendMessage(text='available: false')]
        line_bot_api.reply_message(event.reply_token, messages)
    else:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=event.message.text))
Ejemplo n.º 28
0
def handle_text_message(event):
    text = event.message.text

    if text == 'profile':
        if isinstance(event.source, SourceUser):
            profile = line_bot_api.get_profile(event.source.user_id)
            line_bot_api.reply_message(event.reply_token, [
                TextSendMessage(text='Display name: ' + profile.display_name),
                TextSendMessage(text='Status message: ' +
                                profile.status_message)
            ])
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(
                    text="Bot can't use profile API without user ID"))
    elif text == 'bye':
        if isinstance(event.source, SourceGroup):
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='Leaving group'))
            line_bot_api.leave_group(event.source.group_id)
        elif isinstance(event.source, SourceRoom):
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='Leaving group'))
            line_bot_api.leave_room(event.source.room_id)
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text="Bot can't leave from 1:1 chat"))
    elif text == 'image':
        url = request.url_root + '/static/logo.png'
        app.logger.info("url=" + url)
        line_bot_api.reply_message(event.reply_token,
                                   ImageSendMessage(url, url))
    elif text == 'confirm':
        confirm_template = ConfirmTemplate(text='Do it?',
                                           actions=[
                                               MessageAction(label='Yes',
                                                             text='Yes!'),
                                               MessageAction(label='No',
                                                             text='No!'),
                                           ])
        template_message = TemplateSendMessage(alt_text='Confirm alt text',
                                               template=confirm_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'buttons':
        buttons_template = ButtonsTemplate(
            title='My buttons sample',
            text='Hello, my buttons',
            actions=[
                URIAction(label='Go to line.me', uri='https://line.me'),
                PostbackAction(label='ping', data='ping'),
                PostbackAction(label='ping with text',
                               data='ping',
                               text='ping'),
                MessageAction(label='Translate Rice', text='米')
            ])
        template_message = TemplateSendMessage(alt_text='Buttons alt text',
                                               template=buttons_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'carousel':
        carousel_template = CarouselTemplate(columns=[
            CarouselColumn(text='hoge1',
                           title='fuga1',
                           actions=[
                               URIAction(label='Go to line.me',
                                         uri='https://line.me'),
                               PostbackAction(label='ping', data='ping')
                           ]),
            CarouselColumn(text='hoge2',
                           title='fuga2',
                           actions=[
                               PostbackAction(label='ping with text',
                                              data='ping',
                                              text='ping'),
                               MessageAction(label='Translate Rice', text='米')
                           ]),
        ])
        template_message = TemplateSendMessage(alt_text='Carousel alt text',
                                               template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'image_carousel':
        image_carousel_template = ImageCarouselTemplate(columns=[
            ImageCarouselColumn(
                image_url='https://via.placeholder.com/1024x1024',
                action=DatetimePickerAction(label='datetime',
                                            data='datetime_postback',
                                            mode='datetime')),
            ImageCarouselColumn(
                image_url='https://via.placeholder.com/1024x1024',
                action=DatetimePickerAction(
                    label='date', data='date_postback', mode='date'))
        ])
        template_message = TemplateSendMessage(
            alt_text='ImageCarousel alt text',
            template=image_carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'imagemap':
        pass
    elif text == 'flex':
        bubble = BubbleContainer(
            direction='ltr',
            hero=ImageComponent(url='https://example.com/cafe.jpg',
                                size='full',
                                aspect_ratio='20:13',
                                aspect_mode='cover',
                                action=URIAction(uri='http://example.com',
                                                 label='label')),
            body=BoxComponent(
                layout='vertical',
                contents=[
                    # title
                    TextComponent(text='Brown Cafe', weight='bold', size='xl'),
                    # review
                    BoxComponent(
                        layout='baseline',
                        margin='md',
                        contents=[
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/grey_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/grey_star.png'),
                            TextComponent(text='4.0',
                                          size='sm',
                                          color='#999999',
                                          margin='md',
                                          flex=0)
                        ]),
                    # info
                    BoxComponent(
                        layout='vertical',
                        margin='lg',
                        spacing='sm',
                        contents=[
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='Place',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(text='Shinjuku, Tokyo',
                                                  wrap=True,
                                                  color='#666666',
                                                  size='sm',
                                                  flex=5)
                                ],
                            ),
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='Time',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(
                                        text="10:00 - 23:00",
                                        wrap=True,
                                        color='#666666',
                                        size='sm',
                                        flex=5,
                                    ),
                                ],
                            ),
                        ],
                    )
                ],
            ),
            footer=BoxComponent(
                layout='vertical',
                spacing='sm',
                contents=[
                    # callAction, separator, websiteAction
                    SpacerComponent(size='sm'),
                    # callAction
                    ButtonComponent(
                        style='link',
                        height='sm',
                        action=URIAction(label='CALL', uri='tel:000000'),
                    ),
                    # separator
                    SeparatorComponent(),
                    # websiteAction
                    ButtonComponent(style='link',
                                    height='sm',
                                    action=URIAction(
                                        label='WEBSITE',
                                        uri="https://example.com"))
                ]),
        )
        message = FlexSendMessage(alt_text="hello", contents=bubble)
        line_bot_api.reply_message(event.reply_token, message)
    elif text == 'quick_reply':
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='Quick reply',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(
                        action=PostbackAction(label="label1", data="data1")),
                    QuickReplyButton(
                        action=MessageAction(label="label2", text="text2")),
                    QuickReplyButton(action=DatetimePickerAction(
                        label="label3", data="data3", mode="date")),
                    QuickReplyButton(action=CameraAction(label="label4")),
                    QuickReplyButton(action=CameraRollAction(label="label5")),
                    QuickReplyButton(action=LocationAction(label="label6")),
                ])))
    else:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=event.message.text))
Ejemplo n.º 29
0
def handle_text_message(event):
    text = event.message.text

    if text == 'profile':
        if isinstance(event.source, SourceUser):
            profile = line_bot_api.get_profile(event.source.user_id)
            line_bot_api.reply_message(event.reply_token, [
                TextSendMessage(text='Display name: ' + profile.display_name),
                TextSendMessage(text='Status message: ' +
                                profile.status_message)
            ])
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(
                    text="Bot can't use profile API without user ID"))
    elif text == 'bye':
        if isinstance(event.source, SourceGroup):
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='Leaving group'))
            line_bot_api.leave_group(event.source.group_id)
        elif isinstance(event.source, SourceRoom):
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='Leaving group'))
            line_bot_api.leave_room(event.source.room_id)
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text="Bot can't leave from 1:1 chat"))
    elif text == 'confirm':
        confirm_template = ConfirmTemplate(text='Do it?',
                                           actions=[
                                               MessageAction(label='Yes',
                                                             text='Yes!'),
                                               MessageAction(label='No',
                                                             text='No!'),
                                           ])
        template_message = TemplateSendMessage(alt_text='Confirm alt text',
                                               template=confirm_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'buttons':
        buttons_template = ButtonsTemplate(
            title='My buttons sample',
            text='Hello, my buttons',
            actions=[
                URIAction(label='Go to line.me', uri='https://line.me'),
                PostbackAction(label='ping', data='ping'),
                PostbackAction(label='ping with text',
                               data='ping',
                               text='ping'),
                MessageAction(label='Translate Rice', text='米')
            ])
        template_message = TemplateSendMessage(alt_text='Buttons alt text',
                                               template=buttons_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'carousel':
        carousel_template = CarouselTemplate(columns=[
            CarouselColumn(text='hoge1',
                           title='fuga1',
                           actions=[
                               URIAction(label='Go to line.me',
                                         uri='https://line.me'),
                               PostbackAction(label='ping', data='ping')
                           ]),
            CarouselColumn(text='hoge2',
                           title='fuga2',
                           actions=[
                               PostbackAction(label='ping with text',
                                              data='ping',
                                              text='ping'),
                               MessageAction(label='Translate Rice', text='米')
                           ]),
        ])
        template_message = TemplateSendMessage(alt_text='Carousel alt text',
                                               template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'image_carousel':
        image_carousel_template = ImageCarouselTemplate(columns=[
            ImageCarouselColumn(
                image_url='https://via.placeholder.com/1024x1024',
                action=DatetimePickerAction(label='datetime',
                                            data='datetime_postback',
                                            mode='datetime')),
            ImageCarouselColumn(
                image_url='https://via.placeholder.com/1024x1024',
                action=DatetimePickerAction(
                    label='date', data='date_postback', mode='date'))
        ])
        template_message = TemplateSendMessage(
            alt_text='ImageCarousel alt text',
            template=image_carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'imagemap':
        pass
    else:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=event.message.text))
Ejemplo n.º 30
0
def handle_text_message(event):
    inp_raw = event.message.text
    inp = inp_raw.lower()
    inp_split = inp.split()
    profile = susunhurufbot.get_profile(event.source.user_id)

    def reply_txt(msg):
        susunhurufbot.reply_message(event.reply_token,TextSendMessage(text=msg))

    def reply_img(link):
        susunhurufbot.reply_message(event.reply_token,ImageSendMessage(original_content_url=link,preview_image_url=link))

    if inp == '/help':
        carousel_template_message = TemplateSendMessage(
            alt_text='Bantuan umum',
            template=CarouselTemplate(
                columns=[
                    CarouselColumn(
                        thumbnail_image_url='https://example.com/item1.jpg',
                        title='Susun Kata Game',
                        text='Tap salah satu',
                        actions=[
                            MessageTemplateAction(
                                label='Mulai Sekarang',
                                text='/play'
                            ),
                            MessageTemplateAction(
                                label='Aturan Main',
                                text='/rule'
                            ),
                            MessageTemplateAction(
                                label='Leaderboards',
                                text='/leaderboard')]),

                    CarouselColumn(
                        thumbnail_image_url='https://example.com/item4.jpg',
                        title='Lain - lain',
                        text='Tap salah satu',
                        actions=[
                            MessageTemplateAction(
                                label='Tentang admin',
                                text='/admin'
                            ),
                            MessageTemplateAction(
                                label='Keluarkan aku',
                                text='/leave'
                            ),
                            URITemplateAction(
                                label='Kirim feedback',
                                uri='http://s.id/FeedbackSusunHurufBot')])
                ]
            )
        )
        susunhurufbot.reply_message(event.reply_token, carousel_template_message)

# ------------------------------------------- Lain - Lain ------------------------------------------ #
    if inp == '/admin':
        about_button = TemplateSendMessage(
            alt_text='Info Admin',
            template=ButtonsTemplate(
                thumbnail_image_url='https://dl.dropboxusercontent.com/s/xjgb1az7tt7p7h3/admin_logo.png',
                title='Admin Susun Huruf Bot',
                text= 'Pradipta Gitaya (21 Tahun)',
                actions=[
                    MessageTemplateAction(
                        label='Hubungi Admin',
                        text= '/contactadmin' ),
                    MessageTemplateAction(
                        label='Catatan Admin',
                        text= '/adminnotes' ),]))

        susunhurufbot.reply_message(event.reply_token, about_button)

    elif inp == '/adminnotes':
        reply_txt(admin_note_msg)
    elif inp == '/contactadmin':
        reply_txt(about_msg)

    elif inp == '/leave':

        def kick():
            confirm_template = ConfirmTemplate(text='Keluarkan bot dari obrolan?', actions=[
                MessageTemplateAction(label='Iya', text='Pergi sana!'),
                MessageTemplateAction(label='Tidak', text='Jangan keluarkan!'),])
            template_message = TemplateSendMessage(alt_text='Konfirmasi kick', template=confirm_template)
            return susunhurufbot.reply_message(event.reply_token, template_message)
            
        if isinstance(event.source, SourceGroup):
            kick()
        
        elif isinstance(event.source, SourceRoom):
            kick()

        else:
            reply_txt('Ini chat 1:1 , gimana caranya aku bisa keluar dari sini coba :(')

    elif inp == ('Pergi sana!'.lower()): # Bot kick confirmation
        reply_txt('Sampai jumpa ~')

        if isinstance(event.source, SourceGroup):
            susunhurufbot.leave_group(event.source.group_id)
        elif isinstance(event.source, SourceRoom):
            susunhurufbot.leave_room(event.source.room_id)

    elif inp == ('Jangan keluarkan!'.lower()): # Bot kick confirmation
        return 'OK'