Beispiel #1
0
def handle_text_message(event):
    if event.reply_token in ('00000000000000000000000000000000',
                             'ffffffffffffffffffffffffffffffff'):
        # Ignore a request for verification (when pressing 'VERIFY' button in developers console)
        return
    if event.message.text == 'a':
        reply_event = TemplateSendMessage(
            alt_text='Buttons template',
            template=ButtonsTemplate(
                thumbnail_image_url=
                'https://upload.wikimedia.org/wikipedia/commons/thumb/5/54/Tel_aviv_long_exposure_public_domain_3.jpg/1024px-Tel_aviv_long_exposure_public_domain_3.jpg',
                title='Menu',
                text='Please select',
                actions=[
                    PostbackTemplateAction(label='postback',
                                           data='action=buy&itemid=1'),
                    MessageTemplateAction(label='message',
                                          text='message text'),
                    URITemplateAction(label='uri', uri='http://okdtsk.info')
                ]))
    else:
        reply_event = TextSendMessage(
            text='Reply to {}'.format(event.message.text))
    line_bot_api.reply_message(event.reply_token, reply_event)
Beispiel #2
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))
def carousel_action(lists_actions):
    lists_template_action = []

    for action in lists_actions:
        if action['type'] == "message":
            template_action = MessageTemplateAction(
                label=action['label'],
                text=action['text']
            )
        elif action['type'] == "uri":
            template_action = URITemplateAction(
                label=action['label'],
                uri=action['uri']
            )
        elif action['type'] == "postback":
            template_action = PostbackTemplateAction(
                label=action['label'],
                text=action['text'],
                data=action['data']
            )

        lists_template_action.append(template_action)

    return lists_template_action
Beispiel #4
0
def sendButton(event):  #按鈕樣版
    try:
        message = TemplateSendMessage(
            alt_text='按鈕樣板',
            template=ButtonsTemplate(
                thumbnail_image_url=
                'https://media-cdn.tripadvisor.com/media/photo-s/12/56/61/11/img-20180315-192402-01.jpg',  #顯示的圖片
                title='好吃的比薩',  #主標題
                text='請選擇:',  #副標題
                actions=[
                    MessageTemplateAction(  #顯示文字計息
                        label='文字訊息', text='@購買披薩'),
                    URITemplateAction(  #開啟網頁
                        label='連結網頁', uri='http://www.e-happy.com.tw'),
                    PostbackTemplateAction(  #執行Postback功能,觸發Postback事件
                        label='回傳訊息',  #按鈕文字
                        #text='@購買披薩',  #顯示文字計息
                        data='action=buy'  #Postback資料
                    ),
                ]))
        line_bot_api.reply_message(event.reply_token, message)
    except:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text='發生錯誤!'))
Beispiel #5
0
def sendButton4(event):  #按鈕樣版
    try:
        message = TemplateSendMessage(
            alt_text='按鈕樣板',
            template=ButtonsTemplate(
                thumbnail_image_url='https://i.imgur.com/ZGaXkKd.jpg',
                title='demo',
                text='pizza demo',
                actions=[
                    MessageTemplateAction(  #顯示文字計息
                        label='文字訊息', text='@購買披薩'),
                    URITemplateAction(  #開啟網頁
                        label='website mcu',
                        uri='https://web.mcu.edu.tw/'),
                    PostbackTemplateAction(  #執行Postback功能,觸發Postback事件
                        label='回傳訊息',  #按鈕文字
                        #text='@購買披薩',  #顯示文字計息
                        data='action=buy'  #Postback資料
                    ),
                ]))
        line_bot_api.reply_message(event.reply_token, message)
    except:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text='發生錯誤!'))
Beispiel #6
0
def sendButton(event):  #按鈕樣版
    try:
        message = TemplateSendMessage(
            alt_text='按鈕樣板',
            template=ButtonsTemplate(
                thumbnail_image_url="https://i.imgur.com/4QfKuz1.png",  #顯示的圖片
                title='按鈕樣版示範',  #主標題
                text='請選擇:',  #副標題
                actions=[
                    MessageTemplateAction(  #顯示文字計息
                        label='文字訊息', text='@購買披薩'),
                    URITemplateAction(  #開啟網頁
                        label='連結網頁',
                        uri="http://*****:*****@購買披薩',  #顯示文字計息
                        data='action=buy'  #Postback資料
                    ),
                ]))
        line_bot_api.reply_message(event.reply_token, message)
    except:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text='發生錯誤!'))
Beispiel #7
0
def carousleForUser(poster_url, target_id, title):
    carousel_template = CarouselTemplate(columns=[
                                CarouselColumn(thumbnail_image_url=poster_url, title=title, text='Select one for more info', actions=[
                                        MessageTemplateAction(label='Full Data', text='Title \"'+title+'\"'),
                                        MessageTemplateAction(label='Summary', text='Plot \"'+title+'\"'),
                                        MessageTemplateAction(label='Poster', text='Poster \"'+title+'\"')
                                        ]),
                                CarouselColumn(thumbnail_image_url=poster_url, title=title, text='Select one for more info', actions=[
                                        MessageTemplateAction(label='Released Date', text='Released \"'+title+'\"'),
                                        MessageTemplateAction(label='Actors', text='Actors \"'+title+'\"'),
                                        MessageTemplateAction(label='Awards', text='Awards \"'+title+'\"')
                                        ])
                                ])
    template_message = TemplateSendMessage(alt_text='Your search result', template=carousel_template)
    line_bot_api = LineBotApi(channel_access_token)
    try:
        line_bot_api.push_message(target_id, template_message)
    except LineBotApiError as e:
        print('Exception is raised')
Beispiel #8
0
def GreetingsMessage(step=0):

    if step == 1:
        message = TextSendMessage(
            text="你好,我是台鐵訂票機器人,並不是官方機器人,如害怕個資洩漏,請至台鐵官網自行訂票,\
            請輸入「Hi」或「你好」,將會提供你工作選項,訂票時請遵守台鐵相關法律,如有違法情形,請自行負責。")
    elif step == 2:
        message = TemplateSendMessage(
            alt_text="工作選項",
            template=ButtonsTemplate(text="請選擇想要的目的(非官方機器人,但請遵守鐵路法規範)",
                                     actions=[
                                         MessageTemplateAction(
                                             label='訂票去',
                                             text='訂票去',
                                         ),
                                         MessageTemplateAction(label='未註冊',
                                                               text='未註冊'),
                                         MessageTemplateAction(label='查詢訂票',
                                                               text='查詢訂票')
                                     ]))
    elif step == 3:
        message = TemplateSendMessage(
            alt_text="訂票方式",
            template=ButtonsTemplate(text="請選擇想要的訂票方式",
                                     actions=[
                                         MessageTemplateAction(
                                             label='單程-車次',
                                             text='單程-車次',
                                         ),
                                         MessageTemplateAction(label='單程-車種',
                                                               text='單程-車種'),
                                         MessageTemplateAction(label='來回-車次',
                                                               text='來回-車次'),
                                         MessageTemplateAction(label='來回-車種',
                                                               text='來回-車種')
                                     ]))
    return message
Beispiel #9
0
 def show(self):
     return TemplateSendMessage(
         alt_text="help order carousel template message",
         template=CarouselTemplate(columns=[
             CarouselColumn(
                 title=self.title,
                 text=self.text,
                 actions=[
                     MessageTemplateAction(label='帳號', text='account'),
                     MessageTemplateAction(label='場地資訊', text='court'),
                     MessageTemplateAction(label='搜尋', text='search'),
                 ]),
             CarouselColumn(
                 title=self.title,
                 text=self.text,
                 actions=[
                     MessageTemplateAction(label='預約', text='booking'),
                     MessageTemplateAction(label='報修', text='maintain'),
                     MessageTemplateAction(label='佈告欄', text='bulletin')
                 ]),
         ]))
Beispiel #10
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"
                            }
                        ]
                    }
                ]
            }
        }]
Beispiel #12
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'
Beispiel #13
0
def message_text(event):
    text = event.message.text
    acak = np.arange(14)
    np.random.shuffle(acak)
    if text == 'Kategori':
        buttons_template = ButtonsTemplate(
            text='Daftar Kategori Berita',
            actions=[
                MessageTemplateAction(label='Tekno', text='tekno'),
                MessageTemplateAction(label='Bisnis', text='bisnis'),
                MessageTemplateAction(label='Otomotif', text='otomotif'),
                MessageTemplateAction(label='Bantuan', text='bantu')
            ])
        template_message = TemplateSendMessage(alt_text='Daftar Kategori',
                                               template=buttons_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'bye astro' or text == 'Bye Astro':
        if isinstance(event.source, SourceGroup):
            line_bot_api.reply_message(event.reply_token,
                                       TextMessage(text='Kakak jahat :('))
            line_bot_api.leave_group(event.source.group_id)
        elif isinstance(event.source, SourceRoom):
            line_bot_api.reply_message(event.reply_token,
                                       TextMessage(text='Jahat :('))
            line_bot_api.leave_room(event.source.room_id)
        else:
            line_bot_api.reply_message(event.reply_token,
                                       TextMessage(text="gabisa ih :p"))
    elif text == 'creator' or text == 'Creator':
        if isinstance(event.source, SourceGroup):
            line_bot_api.reply_message(
                event.reply_token,
                TextMessage(text='http://line.me/ti/p/OdcxbZg6gQ'))
    elif text == 'tekno':
        databerita = listBerita("http://tekno.kompas.com/business")
        daftarberita = databerita.daftarBerita()
        carousel_template = CarouselTemplate(columns=[
            CarouselColumn(
                text=daftarberita[acak[0]]['judul'],
                actions=[
                    PostbackTemplateAction(label="Ringkas",
                                           data=daftarberita[acak[0]]['link'],
                                           text='ringkas'),
                    URITemplateAction(label='Baca berita asli',
                                      uri=daftarberita[acak[0]]['link'])
                ]),
            CarouselColumn(
                text=daftarberita[acak[1]]['judul'],
                actions=[
                    PostbackTemplateAction(label="Ringkas",
                                           data=daftarberita[acak[1]]['link'],
                                           text='ringkas'),
                    URITemplateAction(label='Baca berita asli',
                                      uri=daftarberita[acak[1]]['link'])
                ]),
            CarouselColumn(
                text=daftarberita[acak[2]]['judul'],
                actions=[
                    PostbackTemplateAction(label="Ringkas",
                                           data=daftarberita[acak[2]]['link'],
                                           text='ringkas'),
                    URITemplateAction(label='Baca berita asli',
                                      uri=daftarberita[acak[2]]['link'])
                ]),
            CarouselColumn(
                text=daftarberita[acak[3]]['judul'],
                actions=[
                    PostbackTemplateAction(label="Ringkas",
                                           data=daftarberita[acak[3]]['link'],
                                           text='ringkas'),
                    URITemplateAction(label='Baca berita asli',
                                      uri=daftarberita[acak[3]]['link'])
                ])
        ])
        template_message = TemplateSendMessage(alt_text='Daftar Berita Tekno',
                                               template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'bisnis':
        databerita = listBerita("http://bisniskeuangan.kompas.com/bisnis")
        daftarberita = databerita.daftarBerita()
        carousel_template = CarouselTemplate(columns=[
            CarouselColumn(
                text=daftarberita[acak[0]]['judul'],
                actions=[
                    PostbackTemplateAction(label="Ringkas",
                                           data=daftarberita[acak[0]]['link'],
                                           text='ringkas'),
                    URITemplateAction(label='Baca berita asli',
                                      uri=daftarberita[acak[0]]['link'])
                ]),
            CarouselColumn(
                text=daftarberita[acak[1]]['judul'],
                actions=[
                    PostbackTemplateAction(label="Ringkas",
                                           data=daftarberita[acak[1]]['link'],
                                           text='ringkas'),
                    URITemplateAction(label='Baca berita asli',
                                      uri=daftarberita[acak[1]]['link'])
                ]),
            CarouselColumn(
                text=daftarberita[acak[2]]['judul'],
                actions=[
                    PostbackTemplateAction(label="Ringkas",
                                           data=daftarberita[acak[2]]['link'],
                                           text='ringkas'),
                    URITemplateAction(label='Baca berita asli',
                                      uri=daftarberita[acak[2]]['link'])
                ]),
            CarouselColumn(
                text=daftarberita[acak[3]]['judul'],
                actions=[
                    PostbackTemplateAction(label="Ringkas",
                                           data=daftarberita[acak[3]]['link'],
                                           text='ringkas'),
                    URITemplateAction(label='Baca berita asli',
                                      uri=daftarberita[acak[3]]['link'])
                ])
        ])
        template_message = TemplateSendMessage(alt_text='Daftar Berita Bisnis',
                                               template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'otomotif':
        databerita = listBerita("http://otomotif.kompas.com/news")
        daftarberita = databerita.daftarBerita()
        carousel_template = CarouselTemplate(columns=[
            CarouselColumn(
                text=daftarberita[acak[0]]['judul'],
                actions=[
                    PostbackTemplateAction(label="Ringkas",
                                           data=daftarberita[acak[0]]['link'],
                                           text='ringkas'),
                    URITemplateAction(label='Baca berita asli',
                                      uri=daftarberita[acak[0]]['link'])
                ]),
            CarouselColumn(
                text=daftarberita[acak[1]]['judul'],
                actions=[
                    PostbackTemplateAction(label="Ringkas",
                                           data=daftarberita[acak[1]]['link'],
                                           text='ringkas'),
                    URITemplateAction(label='Baca berita asli',
                                      uri=daftarberita[acak[1]]['link'])
                ]),
            CarouselColumn(
                text=daftarberita[acak[2]]['judul'],
                actions=[
                    PostbackTemplateAction(label="Ringkas",
                                           data=daftarberita[acak[2]]['link'],
                                           text='ringkas'),
                    URITemplateAction(label='Baca berita asli',
                                      uri=daftarberita[acak[2]]['link'])
                ]),
            CarouselColumn(
                text=daftarberita[acak[3]]['judul'],
                actions=[
                    PostbackTemplateAction(label="Ringkas",
                                           data=daftarberita[acak[3]]['link'],
                                           text='ringkas'),
                    URITemplateAction(label='Baca berita asli',
                                      uri=daftarberita[acak[3]]['link'])
                ])
        ])
        template_message = TemplateSendMessage(
            alt_text='Daftar Berita Otomotif', template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif "kompas.com/read" in text:
        linkBerita = Berita(text)
        rangkuman = linkBerita.rangkumanBerita()
        teks = ' '.join(rangkuman)
        if (len(teks) > 2):
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text=teks))
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(
                    text="maaf, link yang anda kirim tidak valid "))
    elif text == 'Bantu' or text == 'bantu':
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text=
                '\'Kategori\' >> untuk list Kategori \n\'Bantu\' >> list command yang ada \n\'bye astro\' >> mengusirku dari group \n\'Ping\' >> ngecek aku masih hidup ato nggak :P'
            ))
    elif text == 'ringkas':
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text='Meringkas...'))

    elif text == 'Ping' or text == 'ping':
        buttons_template = ButtonsTemplate(
            text='Ping aku',
            actions=[PostbackTemplateAction(label='ping', data='ping')])
        template_message = TemplateSendMessage(alt_text='ping',
                                               template=buttons_template)
        line_bot_api.reply_message(event.reply_token, template_message)

    else:
        profile = line_bot_api.get_profile(event.source.user_id)
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text="Hi " + profile.display_name + "\n" +
                            event.message.text + ":)"))
    '''
Beispiel #14
0
def get_template(input_text):
    endDate = datetime.today().strftime('%Y-%m-%d')
    startDate = (datetime.today() - timedelta(days=30)).strftime('%Y-%m-%d')
    if input_text == "[reset]":
        return TextSendMessage(
            text='你可以輸入任何人名,例如:蔡英文,我就會統計出他/她最近最常發生的事件種類, 並提供進一步查詢。',
            quick_reply=QuickReply(
                items=[
                    QuickReplyButton(
                        action=MessageAction(label="蔡英文", text="蔡英文")
                    ),
                    QuickReplyButton(
                        action=MessageAction(label="韓國瑜", text="韓國瑜")
                    ),
                    QuickReplyButton(
                        action=MessageAction(label="郭台銘", text="郭台銘")
                    )]
            ))

    elif ":" not in input_text:
        events = get_events(input_text, startDate, endDate)
        if len(events) == 0:
            return TextSendMessage(
                text='沒有這個人,或他/她的新聞數太少QAQ')
        elif len(events) <= 9:
            all_columns = []
            all_actions = []
            for i in range(len(events)):
                all_actions.append(MessageTemplateAction(
                    label="...".join(events[i]['term'].split()) + " (" + str(events[i]["freq"]) + ")",
                    text=input_text + ":" + events[i]['term']
                ))
                if (i + 1) % 3 == 0:
                    all_columns.append(CarouselColumn(
                        title='{}相關新聞事件'.format(input_text),
                        text='點選可獲得相關新聞',
                        actions=all_actions
                    ))
                    all_actions = []
        else:
            events = events[:8]
            all_columns = []
            all_actions = []
            for i in range(9):
                if i == 8:
                    all_actions.append(MessageTemplateAction(
                        label="more",
                        text="更多事件" + ":" + str(8) + ":" + input_text
                    ))
                else:
                    all_actions.append(MessageTemplateAction(
                        label="...".join(events[i]['term'].split()) + " (" + str(events[i]["freq"]) + ")",
                        text=input_text + ":" + events[i]['term']
                    ))

                if (i + 1) % 3 == 0:
                    all_columns.append(CarouselColumn(
                        title='{}相關新聞事件'.format(input_text),
                        text='點選可獲得相關新聞',
                        actions=all_actions
                    ))
                    all_actions = []

        buttons_template = TemplateSendMessage(
            alt_text='Carousel template',
            template=CarouselTemplate(
                columns=all_columns
            )
        )
        return buttons_template

    elif "更多事件" in input_text:
        _, id_event, input_text = input_text.split(":")
        id_event = int(id_event)
        events = get_events(input_text, startDate, endDate)
        action_lst = []
        for i in range(3):
            action_lst.append(MessageTemplateAction(
                label="...".join(events[id_event + i]['term'].split()) + " (" + str(events[id_event]["freq"]) + ")",
                text=input_text + ":" + events[id_event + i]['term']
            ))
        if len(events[id_event + 3:]) > 3:
            action_lst.append(MessageTemplateAction(
                label="more",
                text="更多事件" + ":" + str(id_event + 3) + ":" + input_text
            ))
        buttons_template = TemplateSendMessage(
            alt_text='Buttons Template',
            template=ButtonsTemplate(
                title='{}相關新聞事件'.format(input_text),
                text='點選可獲得相關新聞',
                actions=action_lst
            )
        )
        return buttons_template

    elif "more" in input_text:
        _, id, key, events = input_text.split(":")
        id = int(id)
        news = get_news(key, events, startDate, endDate)
        news_lst = news["data"][id:id + 3]
        id = id + 3
        isMore = len(news["data"][id:]) != 0
        flex_template = news_template_flex(news_lst, events, key, id, isMore)
        return flex_template
    else:
        key, events = input_text.split(":")
        news = get_news(key, events, startDate, endDate)
        news_lst = news["data"][:3]
        id = 3
        isMore = len(news["data"]) > 3
        flex_template = news_template_flex(news_lst, events, key, id, isMore)
        return flex_template
Beispiel #15
0
from linebot.models import TemplateSendMessage

confirmations = [{
    "id":"example",
    "payload":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'
                )
            ]
        )
    )
}]

def composeConfirm(alt_text, text, option1, option2):
    if option1['type'] == "postback":
        opt1_payload = PostbackTemplateAction(
                    label=option1['label'],
                    # text=option1['text'],
                    data=option1['data']
        )
    elif option1['type'] == "message":
        opt1_payload = MessageTemplateAction(
Beispiel #16
0
def user_guide():
    return TemplateSendMessage(
        alt_text='【使用說明書 ver 2.0】',
        template=CarouselTemplate(columns=[
            CarouselColumn(
                thumbnail_image_url='https://i.imgur.com/02b6MnB.jpg',
                title=' - 【使用說明書】 - ',
                text='!使用說明書、!help、!說明書',
                actions=[
                    PostbackTemplateAction(
                        label='說明書', text='!help', data='action=buy&itemid=1'),
                    MessageTemplateAction(label='readme', text='!help'),
                    # URITemplateAction(
                    # 	label='uri1',
                    # 	uri='http://example.com/1'
                    # )
                ]),
            CarouselColumn(
                thumbnail_image_url='https://i.imgur.com/02b6MnB.jpg',
                title=' - 【健康教育類】 - ',
                text='!教育/調教、!看圖、!智乃看圖片、!給智乃看圖、!智乃看圖圖、〖修復中〗!忘記',
                actions=[
                    PostbackTemplateAction(label='學習文字',
                                           text='!教育 ?',
                                           data='action=buy&itemid=1'),
                    MessageTemplateAction(label='學習圖片', text='!學圖 ?'),
                    # URITemplateAction(
                    # 	label='uri1',
                    # 	uri='http://example.com/1'
                    # )
                ]),
            CarouselColumn(
                thumbnail_image_url='https://i.imgur.com/02b6MnB.jpg',
                title=' - 【算命抽籤類】 - ',
                text='!機率、!抽數字',
                actions=[
                    PostbackTemplateAction(
                        label='機率', text='!機率 ?', data='action=buy&itemid=1'),
                    MessageTemplateAction(label='抽數字', text='!抽數字 ?'),
                    # URITemplateAction(
                    # 	label='uri1',
                    # 	uri='http://example.com/1'
                    # )
                ]),
            CarouselColumn(
                thumbnail_image_url='https://i.imgur.com/02b6MnB.jpg',
                title=' - 【遊戲抽抽類】 - ',
                text='!抽抽、!終極密碼、!幾A幾B、小遊戲、機會命運',
                actions=[
                    PostbackTemplateAction(
                        label='小遊戲', text='小遊戲', data='action=buy&itemid=1'),
                    MessageTemplateAction(label='小遊戲', text='小遊戲'),
                    # URITemplateAction(
                    # 	label='uri1',
                    # 	uri='http://example.com/1'
                    # )
                ]),
            CarouselColumn(
                thumbnail_image_url='https://i.imgur.com/02b6MnB.jpg',
                title=' - 【不知幹嘛類】 - ',
                text='貼圖辣、母湯、母湯電影版',
                actions=[
                    PostbackTemplateAction(
                        label='貼圖辣', text='貼圖辣', data='action=buy&itemid=1'),
                    MessageTemplateAction(label='貼圖辣', text='貼圖辣'),
                    # URITemplateAction(
                    # 	label='uri1',
                    # 	uri='http://example.com/1'
                    # )
                ]),
            CarouselColumn(
                thumbnail_image_url='https://i.imgur.com/02b6MnB.jpg',
                title=' - 【如果覺得太吵的話】 -',
                text='!開關',
                actions=[
                    PostbackTemplateAction(
                        label='讓智乃說話', text='!說話', data='action=buy&itemid=1'),
                    MessageTemplateAction(label='請智乃閉嘴', text='!閉嘴'),
                    # URITemplateAction(
                    # 	label='uri1',
                    # 	uri='http://example.com/1'
                    # )
                ]),
            CarouselColumn(
                thumbnail_image_url='https://i.imgur.com/02b6MnB.jpg',
                title=' - 【如果壞掉了要維修】 - ',
                text='!壞掉啦、呼叫四月、呼叫工程師',
                actions=[
                    PostbackTemplateAction(label='壞掉啦!!!',
                                           text='呼叫工程師',
                                           data='action=buy&itemid=1'),
                    MessageTemplateAction(label='呼叫工程師', text='呼叫工程師'),
                    # URITemplateAction(
                    # 	label='uri1',
                    # 	uri='http://example.com/1'
                    # )
                ]),
            CarouselColumn(
                thumbnail_image_url='https://i.imgur.com/02b6MnB.jpg',
                title=' - 【散步打排名 1】 - ',
                text='即時排名/即時戰況/排名/分數/戰況/score、%數/%、一位差、分數差',
                actions=[
                    PostbackTemplateAction(
                        label='test', text='test', data='action=buy&itemid=1'),
                    MessageTemplateAction(label='test', text='test'),
                    # URITemplateAction(
                    # 	label='uri1',
                    # 	uri='http://example.com/1'
                    # )
                ]),
            CarouselColumn(
                thumbnail_image_url='https://i.imgur.com/02b6MnB.jpg',
                title=' - 【散步打排名 2】 - ',
                text='場數差、追擊時間/脫褲子、時速、場速、活動進度/進度、剩餘時間',
                actions=[
                    PostbackTemplateAction(
                        label='test', text='test', data='action=buy&itemid=1'),
                    MessageTemplateAction(label='test', text='test'),
                    # URITemplateAction(
                    # 	label='uri1',
                    # 	uri='http://example.com/1'
                    # )
                ]),
            CarouselColumn(
                thumbnail_image_url='https://i.imgur.com/02b6MnB.jpg',
                title=' - 【散步打排名 3】 - ',
                text='房號/room/rm/R/r、r1/room1、r2/room2、!pt、!fire、!stone、!lz',
                actions=[
                    PostbackTemplateAction(
                        label='test', text='test', data='action=buy&itemid=1'),
                    MessageTemplateAction(label='test', text='test'),
                    # URITemplateAction(
                    # 	label='uri1',
                    # 	uri='http://example.com/1'
                    # )
                ])
        ]))
Beispiel #17
0
def handle_text_message(event):

	text=event.message.text
	
	if isinstance(event.source, SourceGroup):
		subject = line_bot_api.get_group_member_profile(event.source.group_id,
														event.source.user_id)
		set_id = event.source.group_id
	elif isinstance(event.source, SourceRoom):
		subject = line_bot_api.get_room_member_profile(event.source.room_id,
                                                   event.source.user_id)
		set_id = event.source.room_id
	else:
		subject = line_bot_api.get_profile(event.source.user_id)
		set_id = event.source.user_id
	
	def split1(text):
		return text.split('/wolfram ', 1)[-1]
		
	def split2(text):
		return text.split('/kbbi ', 1)[-1]
		
	def split3(text):
		return text.split('/echo ', 1)[-1]

	def split4(text):
		return text.split('/wolframs ', 1)[-1]
	
	def split5(text):
		return text.split('/trans ', 1)[-1]
	
	def split6(text):
		return text.split('/wiki ', 1)[-1]
	
	def split7(text):
		return text.split('/wikilang ', 1)[-1]
		
	def split8(text):
		return text.split('/urban ', 1)[-1]

	def split9(text):
		return text.split('/ox ', 1)[-1]
		
	def ox(keyword):
		oxdict_appid = ('7dff6c56')
		oxdict_key = ('41b55bba54078e9fb9f587f1b978121f')
		
		word = quote(keyword)
		url = ('https://od-api.oxforddictionaries.com:443/api/v1/entries/en/{}'.format(word))
		req = requests.get(url, headers={'app_id': oxdict_appid, 'app_key': oxdict_key})
		if "No entry available" in req.text:
			return 'No entry available for "{}".'.format(word)

		req = req.json()
		result = ''
		i = 0
		for each_result in req['results']:
			for each_lexEntry in each_result['lexicalEntries']:
				for each_entry in each_lexEntry['entries']:
					for each_sense in each_entry['senses']:
						if 'crossReferenceMarkers' in each_sense:
							search = 'crossReferenceMarkers'
						else:
							search = 'definitions'
						for each_def in each_sense[search]:
							i += 1
							result += '\n{}. {}'.format(i, each_def)

		if i == 1:
			result = 'Definition of {}:\n'.format(keyword) + result[4:]
		else:
			result = 'Definitions of {}:'.format(keyword) + result
		return result

	
	def wolfram(query):
		wolfram_appid = ('83L4JP-TWUV8VV7J7')

		url = 'https://api.wolframalpha.com/v2/result?i={}&appid={}'
		return requests.get(url.format(quote(query), wolfram_appid)).text
		
	def wolframs(query):
		wolfram_appid = ('83L4JP-TWUV8VV7J7')

		url = 'https://api.wolframalpha.com/v2/simple?i={}&appid={}'
		return url.format(quote(query), wolfram_appid)
	
	def trans(word):
		sc = 'en'
		to = 'id'
		
		if word[0:].lower().strip().startswith('sc='):
			sc = word.split(', ', 1)[0]
			sc = sc.split('sc=', 1)[-1]
			word = word.split(', ', 1)[1]
	
		if word[0:].lower().strip().startswith('to='):
			to = word.split(', ', 1)[0]
			to = to.split('to=', 1)[-1]
			word = word.split(', ', 1)[1]
			
		if word[0:].lower().strip().startswith('sc='):
			sc = word.split(', ', 1)[0]
			sc = sc.split('sc=', 1)[-1]
			word = word.split(', ', 1)[1]
			
		return translator.translate(word, src=sc, dest=to).text
		
	def wiki_get(keyword, set_id, trim=True):
    
		try:
			wikipedia.set_lang(wiki_settings[set_id])
		except KeyError:
			wikipedia.set_lang('en')

		try:
			result = wikipedia.summary(keyword)

		except wikipedia.exceptions.DisambiguationError:
			articles = wikipedia.search(keyword)
			result = "{} disambiguation:".format(keyword)
			for item in articles:
				result += "\n{}".format(item)
		except wikipedia.exceptions.PageError:
			result = "{} not found!".format(keyword)

		else:
			if trim:
				result = result[:2000]
				if not result.endswith('.'):
					result = result[:result.rfind('.')+1]
		return result
		
	def wiki_lang(lang, set_id):
    
		langs_dict = wikipedia.languages()
		if lang in langs_dict.keys():
			wiki_settings[set_id] = lang
			return ("Language has been changed to {} successfully."
					.format(langs_dict[lang]))

		return ("{} not available!\n"
				"See meta.wikimedia.org/wiki/List_of_Wikipedias for "
				"a list of available languages, and use the prefix "
				"in the Wiki column to set the language."
				.format(lang))	
	
	def find_kbbi(keyword, ex=True):

		try:
			entry = KBBI(keyword)
		except KBBI.TidakDitemukan as e:
			result = str(e)
		else:
			result = "Definisi {}:\n".format(keyword)
			if ex:
				result += '\n'.join(entry.arti_contoh)
			else:
				result += str(entry)
		return result
	
	def urban(keyword, ex=True):
		
		try:
			entry = udtop(keyword)
		except (TypeError, AttributeError, udtop.TermNotFound) :
			result = "{} definition not found in urbandictionary.".format(keyword)
		else:
			result = "{} definition:\n".format(keyword)
			if ex:
				result += str(entry)
			else:
				result += entry.definition
		return result
	
	if text == '/help':
		line_bot_api.reply_message(
			event.reply_token,
			TextSendMessage('I will be here for you'))
	
	elif text == '/leave':
		if isinstance(event.source, SourceGroup):
			line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage('I am leaving the group...'))
			line_bot_api.leave_group(event.source.group_id)
		
		elif isinstance(event.source, SourceRoom):
			line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage('I am leaving the group...'))
			line_bot_api.leave_room(event.source.room_id)
			
		else:
			line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage('>_< cannot do...'))
	
	elif text == '/about':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage("Hello, my name is Reika \n"
								"Nice to meet you... \n"
								"source code: https://github.com/Vetrix/ZERO"))
	
	elif text == '/cmd':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage("Without parameters: \n"
								"/about, /help, /profile, /leave, /lang \n"
								"/confirm, /buttons, /search image, \n"
								"/manga, /dots, /track, /bet \n"
								"/image_carousel, /imagemap \n"
								"\n"
								"With parameters: \n"
								"/echo, /kbbi, /wolfram, /wolframs, \n"
								"/trans, /wiki, /wikilang, /urban, /ox"))
	
	elif text == '/lang':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage("Language for translation see here \n"
								"https://github.com/Vetrix/ZERO/blob/master/Lang.txt"))
	
	elif text == '/manga':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage("mangaku.in"))
	
	elif text == '/dots':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage("https://www.instagram.com/dotaindonesia2/"))
	
	elif text == '/track':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage("http://dota2.prizetrac.kr/international2018"))
	
	elif text == '/bet':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage("dota2.com/predictions"))
	
	elif text == '/search image':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage("Try this up \n"
								"https://reverse.photos/"))
	
	elif text == '/profile':
		if isinstance(event.source, SourceGroup):
			try:
				profile = line_bot_api.get_group_member_profile(event.source.group_id, event.source.user_id)
				result = ("Display name: " + profile.display_name + "\n" +
						  "Profile picture: " + profile.picture_url + "\n" +
						  "User_ID: " + profile.user_id)
			except LineBotApiError:
				pass	
			line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage(result))
			
		
		elif isinstance(event.source, SourceRoom):
			try:
				profile = line_bot_api.get_room_member_profile(event.source.room_id, event.source.user_id)
				result = ("Display name: " + profile.display_name + "\n" +
						  "Profile picture: " + profile.picture_url + "\n" +
						  "User_ID: " + profile.user_id)
			except LineBotApiError:
				pass	
			line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage(result))
			
				
		else:
			try:
				profile = line_bot_api.get_profile(event.source.user_id)
				result = ("Display name: " + profile.display_name + "\n" +
						  "Profile picture: " + profile.picture_url + "\n" +
						  "User_ID: " + profile.user_id)
				if profile.status_message:
					result += "\n" + "Status message: " + profile.status_message
			except LineBotApiError:
				pass
			line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage(result))
	
	elif text=='/kbbi':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage('command /kbbi {input}'))
	
	elif text=='/urban':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage('command /urban {input}'))
	
	elif text=='/ox':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage('command /ox {input}'))
	
	elif text=='/wolfram':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage('command /wolfram {input}'))
				
	elif text=='/trans':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage('command /trans sc={}, to={}, {text}'))
	
	elif text=='/wiki':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage('command /wiki {text}'))
				
	elif text=='/wikilang':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage('command /wikilang {language_id}'))
	
	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 == '/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[0:].lower().strip().startswith('/wolfram '):
		line_bot_api.reply_message(
			event.reply_token,
			TextSendMessage(wolfram(split1(text))))
			
	elif text[0:].lower().strip().startswith('/wolframs '):
		line_bot_api.reply_message(
			event.reply_token,
			ImageSendMessage(original_content_url= wolframs(split4(text)),
								preview_image_url= wolframs(split4(text))))

	elif text[0:].lower().strip().startswith('/kbbi '):
		line_bot_api.reply_message(
			event.reply_token,
			TextSendMessage(find_kbbi(split2(text))))
			
	elif text[0:].lower().strip().startswith('/urban '):
		line_bot_api.reply_message(
			event.reply_token,
			TextSendMessage(urban(split8(text))))
			
	elif text[0:].lower().strip().startswith('/ox '):
		line_bot_api.reply_message(
			event.reply_token,
			TextSendMessage(ox(split9(text))))
			
	elif text[0:].lower().strip().startswith('/echo ') :
		line_bot_api.reply_message(
			event.reply_token,
			TextSendMessage(split3(text)))
			
	elif text[0:].lower().strip().startswith('/trans ') :
		line_bot_api.reply_message(
			event.reply_token,
			TextSendMessage(trans(split5(text))))
	
	elif text[0:].lower().strip().startswith('/wiki ') :
		line_bot_api.reply_message(
			event.reply_token,
			TextSendMessage(wiki_get(split6(text), set_id=set_id)))
			
	elif text[0:].lower().strip().startswith('/wikilang ') :
		line_bot_api.reply_message(
			event.reply_token,
			TextSendMessage(wiki_lang(split7(text), set_id=set_id)))
Beispiel #18
0
imgbuttons = [
    {
        "id":
        "example",
        "payload":
        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/')
                ]))
    },
    {
        "id":
        "bjpay_register",
        "payload":
        TemplateSendMessage(
            alt_text='Register BJPAY',
            template=ButtonsTemplate(
                thumbnail_image_url=
                'https://bangjoni.com/v2/carousel/greetings/bjpay.png',
                title='Register BJPAY',
                text='Buat BJPAY biar kamu gampang transaksinya',
                actions=[
Beispiel #19
0
def handle_message(event):
    global website_name
    global question
    global registering_question
    global registered
    global during_survey
    global done
    global point
    global ans_count
    global tips
    if (event.message.text != 'ยัง'):
        if (registered == False):
            # table = get_table('users')
            print("Answer: " + event.message.text)
            if (len(registering_question) != 0):
                messages = [registering_question.pop(0)]
                # if (event.message.text == 'ช'):
                # table.update_item(Key={'user-id': get_current_user_id()}, AttributeUpdates={'gender': {'Value':'male','Action':'PUT'}})
                # elif (event.message.text == '10/04/1992'):
                # table.update_item(Key={'user-id': get_current_user_id()}, AttributeUpdates={'dob': {'Value': event.message.text, 'Action': 'PUT'}, 'age':{'Value': 25, 'Action': 'PUT'}})
                # elif (event.message.type == 'location'):
                # table.update_item(Key={'user-id': get_current_user_id()}, AttributeUpdates={'address': {'Value':event.message.address, 'Action':'PUT'}, 'latitude': {'Value':event.message.latitude, 'Action':'PUT'}, 'longitude': {'Value':event.message.longitude, 'Action':'PUT'}})
            else:
                # if (event.message.text == '4'):
                # table.update_item(Key={'user-id': get_current_user_id()}, AttributeUpdates={'family-mem-no': {'Value':event.message.text, 'Action': 'PUT'}})
                registered = True
                messages = [
                    'ยินดีด้วย คุณได้กรอกประวัติเรียบร้อยแล้ว!',
                    'หากพร้อมแล้ว สามารถพิม "เริ่ม" ได้เลย'
                ]
        else:
            if (during_survey == True or event.message.text == 'เริ่ม'):
                # table = get_table('survey-answer')
                if not question and done is False:
                    question = get_questionnaire(get_current_user_id())
                if (len(question) != 0):
                    during_survey = True
                    messages = [question.pop(0)]
                    if (len(question) == 0):
                        done = True
                    if (event.message.text != 'เริ่ม'):
                        ans_count = ans_count + 1
                        print("Answer: " + event.message.text)
                        # table.put_item(Item={'survey-id':'s001', 'answer-id': ans_count, 'user-id': 1, 'ans': event.message.text})
                else:
                    ans_count = ans_count + 1
                    print("Answer: " + event.message.text)
                    # table.put_item(Item={'survey-id':'s001', 'answer-id': ans_count, 'user-id': 1, 'ans': event.message.text})
                    done = False
                    during_survey = False
                    point = point + 10
                    messages = [
                        'Done!', 'ยินดีด้วย คุณได้ {} points!'.format(point),
                        'สามารถเช็คคะแนนล่าสุดของตัวเองได้โดยพิมว่า "คะแนน"'
                    ]
            elif (event.message.text == 'คะแนน'):
                messages = [
                    'ตอนนี้คุณมีคะแนนอยู่ทั้งหมด {} คะแนน'.format(point),
                    'หากต้องการแลกรางวัล สามารถพิม "{} ได้ทันที"'.format(
                        'แลกรางวัล')
                ]
            elif (event.message.text == 'แลกรางวัล'):
                messages = ['แลกได้ที่ www.{}.com/redeem'.format(website_name)]
            elif (event.message.text == 'tips'):
                messages = [random.choice(tips)['text']]
            else:
                messages = [
                    'พิม "เริ่ม" ได้เสมอ เมื่อต้องการเริ่มเก็บคะแนนจากการทำแบบสอบถาม'
                ]
    else:
        messages = ['หากพร้อมแล้ว สามารถพิมคำว่า "สมัคร" ได้ตลอดเวลา']

    if (messages[0] != 'do you love energy'):
        line_bot_api.reply_message(
            event.reply_token, [TextSendMessage(text=msg) for msg in messages])
    else:
        line_bot_api.reply_message(
            event.reply_token,
            TemplateSendMessage(alt_text='Buttons template',
                                template=ButtonsTemplate(
                                    title=messages[0],
                                    text='Please select',
                                    actions=[
                                        MessageTemplateAction(label='A lot',
                                                              text='3'),
                                        MessageTemplateAction(label='so so',
                                                              text='2'),
                                        MessageTemplateAction(label='nah',
                                                              text='1')
                                    ])))
Beispiel #20
0
    def on_enter_help(self, event):
        '''
        Use button menu instead of text message to show avaliable options.
        Here is the only part of the code not to use text reply.
        The image is retrived from https://whatsanswer.com/maps/time-zone-map-of-north-america/
        '''
        print("I'm entering help state")

        info = ""
        text = event.message.text

        try:
            # Try to get the cmd from 'help cmd'
            postfix = text.split(' ')[1].rstrip()
        except:
            '''
            For supported devices (iOS or Android), show button menu of command info.
            For some unsupported devices (Windows), show following text message.
            For other unsupported devices (Chrome extension), show unsupported message.
            '''
            info = info + "- list: List tracked time zones with current time.\n"
            info = info + "- search [option]: Search in all avaliable time-zone.\n"
            info = info + "- add [time-zone]: Add time zone.\n"
            info = info + "- show [time-zone] [time]: Show specific time.\n"
            info = info + "- erase [option]: Erase some or all tracked time zones.\n"
            info = info + "- help [cmd]: Search for the usage of a command."

            # Create button menu
            buttons = [
                TemplateSendMessage(
                    alt_text=
                    info,  # Show if the button function is not avaliable
                    template=ButtonsTemplate(
                        thumbnail_image_url=
                        'https://upload.cc/i1/2019/12/10/KdvL7Y.jpg',
                        title='Help Menu',
                        text='Tap to see what I can do!',
                        actions=[
                            MessageTemplateAction(label='List',
                                                  text='help list'),
                            MessageTemplateAction(label='Search',
                                                  text='help search'),
                            MessageTemplateAction(label='Add', text='help add')
                        ],
                        default_action=MessageTemplateAction(label='help',
                                                             text='help'))),
                TemplateSendMessage(
                    alt_text=
                    info,  # Show if the button function is not avaliable
                    template=ButtonsTemplate(
                        text='Tap to see what I can do!',
                        actions=[
                            MessageTemplateAction(label='Show',
                                                  text='help show'),
                            MessageTemplateAction(label='Erase',
                                                  text='help erase'),
                            MessageTemplateAction(label='Help', text='help')
                        ],
                        default_action=MessageTemplateAction(label='help',
                                                             text='help')))
            ]

            # Send option message (button menu)
            reply_token = event.reply_token
            send_button_message(reply_token, buttons)
        else:
            '''
            For the command 'help cmd', get the postfix and reply the
            description and usage
            '''
            if (postfix == 'list'):
                info = info + "List tracked time zones with current time.\n\n"
                info = info + "Usage: list\n\n"
                info = info + "e.g. list"
            elif (postfix == 'search'):
                info = info + "Search in all avaliable time-zone.\n\n"
                info = info + "Usage: search [option]\n"
                info = info + "- option: all or time-zone\n\n"
                info = info + "e.g. search all\n"
                info = info + "e.g. search US"
            elif (postfix == 'add'):
                info = info + "Add time zone.\n\n"
                info = info + "Usage: add [time-zone]\n\n"
                info = info + "e.g. add ROC"
            elif (postfix == 'show'):
                info = info + "Show specific time.\n\n"
                info = info + "Usage: show [time-zone] [time]\n\n"
                info = info + "e.g. show Tokyo 1600-02-29 13:56"
            elif (postfix == 'erase'):
                info = info + "Erase some or all tracked time zones.\n\n"
                info = info + "Usage: erase [option]\n"
                info = info + "- option: all or time-zone\n\n"
                info = info + "e.g. erase all\n"
                info = info + "e.g. erase Tokyo"
            else:
                info = "Not a valid command, use 'help' to see what I can do!"
            # Send text message
            reply_token = event.reply_token
            send_text_message(reply_token, info)

        self.go_back()
Beispiel #21
0
def news_template_flex(news_list, events, key, id, isMore, alt_text='推薦新聞'):
    """ Display news data UI with FlexSendMessage.
    Parameters
    ----------
    news_list : list

    Returns
    -------
    res: FlexSendMessage
    """
    news_box_components = []
    for i, news in enumerate(news_list):
        # img = "https://cdn.pixabay.com/photo/2015/12/03/22/16/newspaper-1075795_1280.jpg"
        date = news['date']
        date = re.sub("T.*Z", "", date)
        url = news['url']

        # Add separators between news.
        if i > 0:
            news_box_components.append(SeparatorComponent(margin='lg'))
        # related_news_uri = f"{RELATED_NEWS_LIFF_URI}?cid={news['cid']}&nid={news['nid']}"

        TextComponents = []
        TextComponents.append(TextComponent(
            text=news['title'],
            wrap=True,
            size='md',
            weight='bold',
            action=URIAction(uri=url)
        ))
        TextComponents.append(TextComponent(
            text='{} - {}'.format(news['source'], date),
            wrap=True,
            size='xxs',
            color='#6c757d'
        ))
        words = []
        event_v, event_o = events.split()
        regex = "({}|{})".format(event_v, event_o)
        tokenized_sentence = re.split(regex, news['sentences'][1])
        tokenized_sentence = [t for t in tokenized_sentence if t != ""]
        tokenized_sentence = [news['sentences'][0] + " "] + tokenized_sentence + [" " + news['sentences'][2]]
        for i in tokenized_sentence:
            if i == event_v or i == event_o:
                words.append(SpanComponent(
                    text=i,
                    color="#e86d48"
                ))
            else:
                words.append(SpanComponent(
                    text=i,
                ))
        new_text_componet = TextComponent2(type="text", text="hello, world", contents=words, wrap=True)
        TextComponents.append(new_text_componet)
        TextComponents.append(BoxComponent(
            layout='horizontal',
            spacing='md',
            contents=[
                TextComponent(
                    text='查看這則新聞',
                    size='md',
                    color='#6E7DAB',
                    flex=1,
                    action=URIAction(uri=url),
                ),
            ]
        ))

        news_box_components.append(
            BoxComponent(
                layout='horizontal',
                spacing='md',
                contents=[
                    BoxComponent(
                        layout='vertical',
                        flex=2,
                        spacing='sm',
                        contents=TextComponents
                    )
                ]
            )
        )
    if isMore:
        news_box_components.append(
            ButtonComponent(style="link",
                            # margin="xs",
                            action=MessageTemplateAction(
                                label="more",
                                text="more:" + str(id) + ":" + key + ":" + events
                            )))

    bubble = BubbleContainer(
        body=BoxComponent(
            layout='vertical',
            spacing='lg',
            contents=news_box_components
        )
    )
    return FlexSendMessage(alt_text=alt_text, contents=bubble)
Beispiel #22
0
    def text_message_user(self, reply_token, text_message, profile):
        if not 'NotTest' in text_message:
            message = TextSendMessage('(=OωO=)')
            self.reply(reply_token, message)
            return

        user_id = profile.user_id
        if user_id is None:
            user_id = self._get_provider_id()

        if user_id != self._get_provider_id():
            message = TextSendMessage('にゃー!\n(Permission denied)')
            self.reply(reply_token, message)
            return

        test_messages = [
            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/')
                    ])),
            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')
                    ])),
            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')
                        ])
                ])),
            TemplateSendMessage(
                alt_text='ImageCarousel template',
                template=ImageCarouselTemplate(columns=[
                    ImageCarouselColumn(
                        image_url='https://example.com/item1.jpg',
                        action=PostbackTemplateAction(
                            label='postback1',
                            text='postback text1',
                            data='action=buy&itemid=1')),
                    ImageCarouselColumn(
                        image_url='https://example.com/item2.jpg',
                        action=PostbackTemplateAction(
                            label='postback2',
                            text='postback text2',
                            data='action=buy&itemid=2'))
                ])),
            ImagemapSendMessage(
                base_url='https://example.com/base',
                alt_text='this is an imagemap',
                base_size=BaseSize(height=1040, width=1040),
                actions=[
                    URIImagemapAction(link_uri='https://example.com/',
                                      area=ImagemapArea(x=0,
                                                        y=0,
                                                        width=520,
                                                        height=1040)),
                    MessageImagemapAction(text='hello',
                                          area=ImagemapArea(x=520,
                                                            y=0,
                                                            width=520,
                                                            height=1040))
                ])
        ]

        self.reply(reply_token, test_messages)
        return
Beispiel #23
0
 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)
Beispiel #24
0
def handle_message(event):

    if str(event.message.text[0:6]) == 'pm2.5為':
        #判別空汙等級
        if float(event.message.text[7:]) <= 11:
            pm_level = '第一等級'
            pm_advice = '(一般民眾)正常戶外活動。\n(敏感性族群)正常戶外活動。'
        elif 12 <= float(event.message.text[7:]) <= 23:
            pm_level = '第二等級'
            pm_advice = '(一般民眾)正常戶外活動。\n(敏感性族群)正常戶外活動。'
        elif 24 <= float(event.message.text[7:]) <= 35:
            pm_level = '第三等級'
            pm_advice = '(一般民眾)正常戶外活動。\n(敏感性族群)正常戶外活動。'
        elif 36 <= float(event.message.text[7:]) <= 41:
            pm_level = '第四等級'
            pm_advice = '(一般民眾)正常戶外活動。\n(敏感性族群)有心臟、呼吸道及心血管疾病的成人與孩童感受到癥狀時,應考慮減少體力消耗,特別是減少戶外活動。'
        elif 42 <= float(event.message.text[7:]) <= 47:
            pm_level = '第五等級'
            pm_advice = '(一般民眾)正常戶外活動。\n(敏感性族群)有心臟、呼吸道及心血管疾病的成人與孩童感受到癥狀時,應考慮減少體力消耗,特別是減少戶外活動。'
        elif 48 <= float(event.message.text[7:]) <= 53:
            pm_level = '第六等級'
            pm_advice = '(一般民眾)正常戶外活動。\n(敏感性族群)有心臟、呼吸道及心血管疾病的成人與孩童感受到癥狀時,應考慮減少體力消耗,特別是減少戶外活動。'
        elif 54 <= float(event.message.text[7:]) <= 58:
            pm_level = '第七等級'
            pm_advice = '(一般民眾)任何人如果有不適,如眼痛,咳嗽或喉嚨痛等,應該考慮減少戶外活動。\n(敏感性族群)1.有心臟、呼吸道及心血管疾病的成人與孩童,應減少體力消耗,特別是減少戶外活動。\n2.老年人應減少體力消耗。\n3.具有氣喘的人可能需增加使用吸入劑的頻率。'
        elif 59 <= float(event.message.text[7:]) <= 64:
            pm_level = '第八等級'
            pm_advice = '(一般民眾)任何人如果有不適,如眼痛,咳嗽或喉嚨痛等,應該考慮減少戶外活動。\n(敏感性族群)1.有心臟、呼吸道及心血管疾病的成人與孩童,應減少體力消耗,特別是減少戶外活動。\n2.老年人應減少體力消耗。\n3.具有氣喘的人可能需增加使用吸入劑的頻率。'
        elif 65 <= float(event.message.text[7:]) <= 70:
            pm_level = '第九等級'
            pm_advice = '(一般民眾)任何人如果有不適,如眼痛,咳嗽或喉嚨痛等,應該考慮減少戶外活動。\n(敏感性族群)1.有心臟、呼吸道及心血管疾病的成人與孩童,應減少體力消耗,特別是減少戶外活動。\n2.老年人應減少體力消耗。\n3.具有氣喘的人可能需增加使用吸入劑的頻率。'
        elif float(event.message.text[7:]) >= 71:
            pm_level = '第十等級'
            pm_advice = '(一般民眾)任何人如果有不適,如眼痛,咳嗽或喉嚨痛等,應減少體力消耗,特別是減少戶外活動。\n(敏感性族群)1.有心臟、呼吸道及心血管疾病的成人與孩童,應減少體力消耗,特別是減少戶外活動。\n2.具有氣喘的人可能需增加使用吸入劑的頻率。'

        reply_mes = '◆等級:' + pm_level + '\n◆貼心小建議:' + pm_advice

        output_mes = TextSendMessage(text=reply_mes)

        line_bot_api.reply_message(event.reply_token, output_mes)

    else:

        loc_dis_min = {}
        nearest_loc = []

        user_loc = event.message.text
        gecode_result = gmaps.geocode(user_loc)
        user_loc_abs = np.array(
            list(gecode_result[0]['geometry']['location'].values()))

        for i in data_pm['feeds']:

            device_loc_abs = np.array([i['gps_lat'], i['gps_lon']])

            #Euclidean Distance between two location
            loc_dis = np.sqrt(np.sum(np.square(user_loc_abs - device_loc_abs)))
            loc_dis_min[i['device_id']] = [
                i['s_d0'], loc_dis, i['gps_lat'], i['gps_lon']
            ]

        loc_dis_min = sorted(loc_dis_min.items(), key=lambda e: e[1][1])

        for i in range(5):
            gecode_result = gmaps.reverse_geocode(
                (loc_dis_min[i][1][2], loc_dis_min[i][1][3]), language='zh-TW')
            nearest_loc.append(gecode_result[0]['formatted_address'])

        for i in nearest_loc:
            print(i)

        print(loc_dis_min[0][1][0])

        #滾軸
        carousel_template = CarouselTemplate(columns=[
            CarouselColumn(
                # thumbnail_image_url='http://maps.google.com/maps/api/staticmap?center='+ str(loc_dis_min[0][1][2])+','+ str(loc_dis_min[0][1][3])+'&zoom=16&markers=color:blue%7Clabel:S%7C'+ str(loc_dis_min[0][1][2])+','+ str(loc_dis_min[0][1][3])+'&size=600x300&key='+static_maps_api_key,
                title=nearest_loc[0][3:23],
                text='距離最近的測站資料',
                actions=[
                    MessageTemplateAction(
                        label='貼心小提醒',
                        text='pm2.5為' + str(loc_dis_min[0][1][0]),
                        # data='postback1'
                    )
                ]),
            CarouselColumn(
                # thumbnail_image_url='http://maps.google.com/maps/api/staticmap?center='+ str(loc_dis_min[1][1][2])+','+ str(loc_dis_min[1][1][3])+'&zoom=16&markers=color:blue%7Clabel:S%7C'+ str(loc_dis_min[1][1][2])+','+ str(loc_dis_min[1][1][3])+'&size=600x300&key='+static_maps_api_key,
                title=nearest_loc[1][3:23],
                text='距離第二的測站資料',
                actions=[
                    MessageTemplateAction(
                        label='貼心小提醒',
                        text='pm2.5為' + str(loc_dis_min[1][1][0]),
                        # data='postback1'
                    )
                ]),
            CarouselColumn(
                # thumbnail_image_url='http://maps.google.com/maps/api/staticmap?center='+ str(loc_dis_min[2][1][2])+','+ str(loc_dis_min[2][1][3])+'&zoom=16&markers=color:blue%7Clabel:S%7C'+ str(loc_dis_min[2][1][2])+','+ str(loc_dis_min[2][1][3])+'&size=600x300&key='+static_maps_api_key,
                title=nearest_loc[2][3:23],
                text='距離第三的測站資料',
                actions=[
                    MessageTemplateAction(
                        label='貼心小提醒',
                        text='pm2.5為' + str(loc_dis_min[2][1][0]),
                        # data='postback1'
                    )
                ]),
            CarouselColumn(
                # thumbnail_image_url='http://maps.google.com/maps/api/staticmap?center='+ str(loc_dis_min[3][1][2])+','+ str(loc_dis_min[3][1][3])+'&zoom=16&markers=color:blue%7Clabel:S%7C'+ str(loc_dis_min[3][1][2])+','+ str(loc_dis_min[3][1][3])+'&size=600x300&key='+static_maps_api_key,
                title=nearest_loc[3][3:23],
                text='距離第四的測站資料',
                actions=[
                    MessageTemplateAction(
                        label='貼心小提醒',
                        text='pm2.5為' + str(loc_dis_min[3][1][0]),
                        # data='postback1'
                    )
                ]),
            CarouselColumn(
                # thumbnail_image_url='http://maps.google.com/maps/api/staticmap?center='+ str(loc_dis_min[4][1][2])+','+ str(loc_dis_min[4][1][3])+'&zoom=16&markers=color:blue%7Clabel:S%7C'+ str(loc_dis_min[4][1][2])+','+ str(loc_dis_min[3][1][3])+'&size=600x300&key='+static_maps_api_key,
                title=nearest_loc[4][3:23],
                text='距離第四的測站資料',
                actions=[
                    MessageTemplateAction(
                        label='貼心小提醒',
                        text='pm2.5為' + str(loc_dis_min[4][1][0]),
                        # data='postback1'
                    )
                ])
        ])

        template_message = TemplateSendMessage(alt_text='距離最近的五個測站',
                                               template=carousel_template)

        line_bot_api.reply_message(event.reply_token, template_message)
Beispiel #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]
Beispiel #26
0
def handle_message(event):
    text = event.message.text
    if text == 'profile':
        if isinstance(event.source, SourceUser):
            profile = line_bot_api.get_profile(event.source.user_id)
            #print(profile)
            line_bot_api.reply_message(
                event.reply_token,
                [
                    TextSendMessage(text='Display name: ' +
                                    profile.display_name),
                    TextSendMessage(
                        #text='Status message: ' + profile.status_message
                        text='Status message: ' + profile.user_id)
                ])
        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='Buttons alt text',
                                               template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'imagemap':
        pass
    elif text == '使い方':
        line_bot_api.reply_message(event.reply_token, [
            TextSendMessage(
                text=
                '使い方を説明するね。みーとあっぷは、教えてもらったグループのスケジュール調整をするよ。ちょっぴりせっかちなので、フォローしたり締め切ったりします。'
            ),
            TextSendMessage(
                text=
                'まずは、グループを作るか友達からグループの合い言葉をおしえてもらってね。合い言葉をつぶやくとグループに入ることができるよ。ただし大人の事情で、一人で入れるグループは5個まで。一つのグループの定員は150人までだから気をつけてね。'
            ),
            TextSendMessage(
                text=
                '予定を立てるとき、5個まで候補を決めれるよ。候補は、"月/日/時"で”,”で区切って教えてね。たとえば候補が3月8日9時と3月10日12時の2つだったら、'
            ),
            TextSendMessage(text='3/8/9,3/10/12'),
            TextSendMessage(text='っていう感じだよ。')
        ])
    elif text == 'グループを作る':
        if isinstance(event.source, SourceUser):
            profile = line_bot_api.get_profile(event.source.user_id)
            #print(profile)
            l_name = profile.display_name
            l_user_id = profile.user_id
            #reg = Users(l_name, l_user_id)
            #db.session.add(reg)
            #db.session.commit()

            if not db.session.query(User).filter(
                    User.u_id == l_user_id).count():
                reg = User(l_user_id, l_name, "0", "")
                db.session.add(reg)
                db.session.commit()

            entry = User.query.filter(User.u_id == l_user_id).first()
            entry.u_status = '1'
            db.session.add(entry)
            db.session.commit()

            line_bot_api.reply_message(
                event.reply_token, [TextSendMessage(text='作りたいグループ名を教えて!')])

            app.logger.info(profile.display_name + " :flag: 1")
            # user_idが未登録ならユーザー追加
            #if not db.session.query(User).filter(User.u_id == l_user_id).count():
            #    reg = User(l_user_id, l_name, "", "")
            #    db.session.add(reg)
            #    db.session.commit()
            #line_bot_api.reply_message(
            #    event.reply_token, [
            #        TextSendMessage(
            #            text='Display name: ' + profile.display_name
            #        ),
            #        TextSendMessage(
            #            #text='Status message: ' + profile.status_message
            #            text='Status message: ' + profile.user_id
            #        )
            #    ]
            #)
            #else:
            #    line_bot_api.reply_message(
            #        event.reply_token, [
            #            TextSendMessage(
            #                text='もう登録されてるよ'
            #            )
            #        ]
            #    )

    else:
        if isinstance(event.source, SourceUser):
            profile = line_bot_api.get_profile(event.source.user_id)
            #print(profile)
            l_name = profile.display_name
            l_user_id = profile.user_id
            #line_bot_api.reply_message(
            #    event.reply_token,
            #    TextMessage(text="Bot can't use profile API without user ID"))
            entry2 = User.query.filter(User.u_id == l_user_id).first()
            # グループ登録モード
            if entry2.u_status == '1':
                # グループ登録
                if not db.session.query(Groups).filter(
                        Groups.g_name == text).count():
                    group_reg = Groups()
                    group_reg.g_name = text
                    db.session.add(group_reg)
                    db.session.commit()

                    l_groups = Groups.query.filter(
                        Groups.g_name == text).first()
                    group_user_reg = Group_user()
                    group_user_reg.u_id = l_user_id
                    group_user_reg.g_id = l_groups.g_id
                    db.session.add(group_user_reg)
                    db.session.commit()

                    #entry = User.query.filter(User.u_id == l_user_id).first()
                    entry2.u_status = '0'
                    db.session.add(entry2)
                    db.session.commit()

                    line_bot_api.reply_message(event.reply_token, [
                        TextSendMessage(text=text + 'っていうグループを作ったよ。'),
                        TextSendMessage(text='次の合い言葉を友達に教えてね'),
                        TextSendMessage(text='@addG+' + text + '+' +
                                        str(l_groups.g_id))
                    ])

                #グループ名が重複
                else:
                    line_bot_api.reply_message(
                        event.reply_token,
                        [TextSendMessage(text='もう使われてるから、別のグループ名にしてね。')])
            else:
                entry = User.query.filter(User.u_id == l_user_id).first()
                entry.u_status = '0'
                db.session.add(entry)
                db.session.commit()
Beispiel #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: ' + 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
    else:
        line_bot_api.reply_message(
            event.reply_token, TextSendMessage(text=event.message.text))
Beispiel #28
0
def send_button_carousel(id):
    line_bot_api = LineBotApi(channel_access_token)
    message = TemplateSendMessage(
        alt_text='Carousel template',
        template=CarouselTemplate(columns=[
            CarouselColumn(
                thumbnail_image_url=
                'https://cdn.thewirecutter.com/wp-content/uploads/2020/04/laptops-lowres-2x1--1024x512.jpg',
                title='Laptop',
                text='What would you like to do?',
                actions=[
                    MessageTemplateAction(label='Search for a laptop',
                                          text='search laptop'),
                    MessageTemplateAction(label='Budget', text='budget'),
                    MessageTemplateAction(label='FSM', text='fsm')
                ]),
            CarouselColumn(
                thumbnail_image_url=
                'https://www.howtogeek.com/wp-content/uploads/2018/10/cpu_lede.png',
                title='CPU',
                text='What would you like to do?',
                actions=[
                    MessageTemplateAction(label='Top 5 Laptop CPU',
                                          text='top laptop cpu'),
                    MessageTemplateAction(label='Top 7 Laptop GPU',
                                          text='top gpu for laptop'),
                    MessageTemplateAction(label='Latest V.Review',
                                          text='cgpu_review'),
                ]),
            CarouselColumn(
                thumbnail_image_url=
                'https://www.reviewsontop.com/wp-content/uploads/2020/03/X5TyA8uvkGXoNyjFzxcowS-1200-80.jpg',
                title='New to buying your own laptop?',
                text='click here to find the right one',
                actions=[
                    MessageTemplateAction(label='High Tier Gaming',
                                          text='high game'),
                    MessageTemplateAction(label='Mid Tier Gaming',
                                          text='mid game'),
                    MessageTemplateAction(label='Programming', text='program')
                ]),
            CarouselColumn(
                thumbnail_image_url=
                'https://www.reviewsontop.com/wp-content/uploads/2020/03/X5TyA8uvkGXoNyjFzxcowS-1200-80.jpg',
                title='Shopping for Laptop',
                text='Choose a Site to begin',
                actions=[
                    MessageTemplateAction(label='Pchome', text='pchome_link'),
                    MessageTemplateAction(label='CoolPc', text='coolpc_link'),
                    MessageTemplateAction(label='Apple', text='apple_link')
                ])
        ]))
    line_bot_api.push_message(id, message)

    return "OK"
Beispiel #29
0
if channel_secret is None:
    print("Specify LINE_CHANNEL_SECRET as environment variable.")
    sys.exit(1)
if channel_access_token is None:
    print("Specify LINE_CHANNEL_ACCESS_TOKEN as environment variable.")
    sys.exit(1)

line_bot_api = LineBotApi(channel_access_token)
parser = WebhookParser(channel_secret)
canmessage = TemplateSendMessage(
    alt_text='Buttons template',
    template=ButtonsTemplate(thumbnail_image_url='https://ppt.cc/[email protected]',
                             title='請問需要什麼服務?',
                             text='如需更多功能請按其他鍵或輸入"其他"',
                             actions=[
                                 MessageTemplateAction(label='今日運勢',
                                                       text='今日運勢'),
                                 MessageTemplateAction(label='火車訂票',
                                                       text='火車訂票'),
                                 MessageTemplateAction(label='高鐵訂票',
                                                       text='高鐵訂票'),
                                 MessageTemplateAction(label='其他', text='其他')
                             ]))
canmessage1 = TemplateSendMessage(
    alt_text='Buttons template',
    template=ButtonsTemplate(thumbnail_image_url='https://ppt.cc/[email protected]',
                             title='請問需要什麼服務?',
                             text='如需返回上一頁請按返回鍵或輸入"返回"',
                             actions=[
                                 MessageTemplateAction(label='今日各地天氣預報',
                                                       text='今日各地天氣預報'),
                                 MessageTemplateAction(label='不要按我',
def handle_message(event):
    print(event.message)
    if event.message.text.lower() in ['codejob','soho','nctu_talk']:
        if event.message.text.lower() == 'codejob':
            board = 'CodeJob'
        elif event.message.text.lower() == 'soho':
            board = 'soho'
        elif event.message.text.lower() == 'nctu_talk':
            board = 'NCTU_TALK'

        aritcles = getCaseJobArticles(board)
        action_list = []
        for article in aritcles:
            action_list.append(URITemplateAction(
                label=article['title'],
                uri='https://www.ptt.cc'+article['link']))
        buttons_message = TemplateSendMessage(
                alt_text='PTT {0}'.format(board),
                template=ButtonsTemplate(
                    thumbnail_image_url='https://i.imgur.com/prgAiYk.jpg',
                    title='PTT {0}'.format(board),
                    text='選選選',
                    actions=action_list)
        )
        line_bot_api.reply_message(
            event.reply_token,
            buttons_message
        )
        return 0
    if event.message.text.lower() in ['tech_job','soft_job','stupidclown']:
        if event.message.text.lower() == 'tech_job':
            board = 'Tech_job'
        elif event.message.text.lower() == 'soft_job':
            board = 'Soft_Job'
        elif event.message.text.lower() == 'stupidclown':
            board = 'StupidClown'
        
        aritcles = getDiscussionArticles(board)
        action_list = []
        for article in aritcles:
            action_list.append(URITemplateAction(
                label=article['title'],
                uri='https://www.ptt.cc'+article['link']))
        buttons_message = TemplateSendMessage(
            alt_text='PTT {0}'.format(board),
            template=ButtonsTemplate(
                thumbnail_image_url='https://i.imgur.com/WBdWmBt.jpg',
                title='PTT {0}'.format(board),
                text='選選選',
                actions=action_list
            )
        )
        line_bot_api.reply_message(
            event.reply_token,
            buttons_message
        )
        return 0
    
    caseJobBoard = CarouselColumn(
        thumbnail_image_url='https://i.imgur.com/tUiZQdV.png',
        title='Menu',
        text='Please select',
        actions=[
            MessageTemplateAction(
                label='CodeJob',
                text='CodeJob'
                ),
            MessageTemplateAction(
                label='soho',
                text='soho'
                ),
            MessageTemplateAction(
                label='NCTU_TALK',
                text='NCTU_TALK'
                )
        ]
    )
    discussionBoard = CarouselColumn(
        thumbnail_image_url='https://i.imgur.com/QgxjXUf.jpg',
        title='Discussion board',
        text='Please select',
        actions=[
            MessageTemplateAction(
                label='Soft Job',
                text='Soft_job'
                ),
            MessageTemplateAction(
                label='Tech Job',
                text='Tech_job'
                ),
            MessageTemplateAction(
                label='StupidClown',
                text='StupidClown'
                )
        ]
    )
    carousel_template_message = TemplateSendMessage(
        alt_text='PTT cralwer',
        template=CarouselTemplate(
            columns=[
                caseJobBoard,
                discussionBoard
            ]
        )
    )
    print(carousel_template_message)
    line_bot_api.reply_message(
        event.reply_token,
        carousel_template_message)