Esempio n. 1
0
def handle_message(event):
    if event.message.text == 'おは':
        message = TemplateSendMessage(alt_text='Buttons template',
                                      template=ButtonsTemplate(
                                          title='必須項目',
                                          text='タップして選択してください',
                                          actions=[
                                              PostbackAction(label='機種を選ぶ',
                                                             data='machine'),
                                              PostbackAction(label='現在回転数/回転率',
                                                             data='count_rate')
                                          ]))
    elif regular_int(event.message.text) is not None:
        count = regular_int(event.message.text).group()
        message = TemplateSendMessage(alt_text='Confirm template',
                                      template=ConfirmTemplate(
                                          text=f'現在の回転数は{count}ですね?',
                                          actions=[
                                              PostbackAction(label='はい',
                                                             data=count),
                                              PostbackAction(label='やり直す',
                                                             data='count_rate')
                                          ]))
    elif regular_float(event.message.text) is not None:
        rate = regular_float(event.message.text).group()
        message = TemplateSendMessage(alt_text='Confirm template',
                                      template=ConfirmTemplate(
                                          text=f'回転率は{rate}ですね?',
                                          actions=[
                                              PostbackAction(label='はい',
                                                             data=rate),
                                              PostbackAction(label='やり直す',
                                                             data='count_rate')
                                          ]))
    else:
        message = TextSendMessage(text='入力が正しくありません。')

    line_bot_api.reply_message(event.reply_token, message)
Esempio n. 2
0
def setElselang(event):  #設定其他語言
    try:
        message = TextSendMessage(
            alt_text="其他語言",
            text='請選擇語言:',
            quick_reply=QuickReply(  #使用快速選單
                items=[
                    QuickReplyButton(
                        action=PostbackAction(label='英文', data='item=en')),
                    QuickReplyButton(
                        action=PostbackAction(label='日文', data='item=ja')),
                    QuickReplyButton(
                        action=PostbackAction(label='韓文', data='item=ko')),
                    QuickReplyButton(
                        action=PostbackAction(label='泰文', data='item=th')),
                    QuickReplyButton(
                        action=PostbackAction(label='越南文', data='item=vi')),
                    QuickReplyButton(
                        action=PostbackAction(label='法文', data='item=fr')),
                ]))
        line_bot_api.reply_message(event.reply_token, message)
    except:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text='發生錯誤!'))
Esempio n. 3
0
def handle_message(event):
    if event.message.text == "呼叫助理":
        flex_message = FlexSendMessage(
            alt_text="呼叫助理 Flex",
            contents=BubbleContainer(
                body=BoxComponent(
                    layout="vertical",
                    contents=[
                        TextComponent(text="排程",
                                      align="center",
                                      weight="bold",
                                      size="xl"),
                        BoxComponent(layout="baseline",
                                     contents=[
                                         TextComponent(text="沒事幹"),
                                         TextComponent(text="20/04/31 00:00",
                                                       align="end")
                                     ])
                    ]),
                footer=BoxComponent(
                    layout="horizontal",
                    spacing="md",
                    contents=[
                        ButtonComponent(action=URIAction(
                            label="我要排程",
                            uri=
                            "https://liff.line.me/1654548127-50gGKZyE/Manager"
                        ),
                                        style="primary"),
                        ButtonComponent(action=URIAction(
                            label="修改行程",
                            uri=
                            "https://liff.line.me/1654548127-50gGKZyE/Manager"
                        ),
                                        style="primary")
                    ])))
        line_bot_api.reply_message(event.reply_token, flex_message)
    elif event.message.text == "推薦行程":
        carousel_template = TemplateSendMessage(
            alt_text="Carousel Template 推薦行程",
            template=CarouselTemplate(columns=[
                CarouselColumn(thumbnail_image_url=locations[0][4],
                               title=locations[0][0],
                               text="天氣:" + locations[0][2] + " 溫度:" +
                               str(locations[0][3]) + "°C" + "\n" +
                               locations[0][1],
                               actions=[
                                   MessageTemplateAction(label="開始導航",
                                                         text="開始導航" +
                                                         locations[0][0]),
                                   MessageTemplateAction(label="這個我不喜歡",
                                                         text="不喜歡" +
                                                         locations[0][0])
                               ]),
                CarouselColumn(thumbnail_image_url=locations[1][4],
                               title=locations[1][0],
                               text="天氣:" + locations[1][2] + " 溫度:" +
                               str(locations[1][3]) + "°C" + "\n" +
                               locations[1][1],
                               actions=[
                                   MessageTemplateAction(label="開始導航",
                                                         text="開始導航" +
                                                         locations[1][0]),
                                   MessageTemplateAction(label="這個我不喜歡",
                                                         text="不喜歡" +
                                                         locations[1][0])
                               ])
            ]))
        line_bot_api.reply_message(event.reply_token, carousel_template)
    elif "開始導航" in event.message.text:
        if locations[0][0] in event.message.text:
            flex_message = FlexSendMessage(
                alt_text="導航 Flex",
                contents=BubbleContainer(
                    body=BoxComponent(
                        layout="vertical",
                        contents=[TextComponent(text=locations[0][0] + "導航")]),
                    footer=BoxComponent(
                        layout="horizontal",
                        contents=[
                            ButtonComponent(action=URIAction(
                                label="開啟 Google 地圖",
                                uri=
                                ("https://www.google.com/maps/search/?api=1&query="
                                 + locations[0][0])))
                        ])))
        elif locations[1][0] in event.message.text:
            flex_message = FlexSendMessage(
                alt_text="導航 Flex",
                contents=BubbleContainer(
                    body=BoxComponent(
                        layout="vertical",
                        contents=[TextComponent(text=locations[1][0] + "導航")]),
                    footer=BoxComponent(
                        layout="horizontal",
                        contents=[
                            ButtonComponent(action=URIAction(
                                label="開啟 Google 地圖",
                                uri=
                                ("https://www.google.com/maps/search/?api=1&query="
                                 + locations[1][0])))
                        ])))
        line_bot_api.reply_message(event.reply_token, flex_message)
    elif event.message.text == "記帳小本本":

        money = 69
        budget = 420

        flex_message = FlexSendMessage(
            alt_text="記帳小本本 Flex",
            contents=BubbleContainer(
                body=BoxComponent(
                    layout="vertical",
                    contents=[
                        TextComponent(text="記帳小本本",
                                      align="center",
                                      weight="bold",
                                      size="xl"),
                        BoxComponent(layout="horizontal",
                                     contents=[
                                         TextComponent(text="當前餘額"),
                                         TextComponent(text=str(money) + " 元",
                                                       align="end")
                                     ]),
                        BoxComponent(layout="horizontal",
                                     contents=[
                                         TextComponent(text="每日可用餘額"),
                                         TextComponent(text=str(budget) + " 元",
                                                       align="end")
                                     ])
                    ]),
                footer=BoxComponent(
                    layout="horizontal",
                    spacing="md",
                    contents=[
                        ButtonComponent(action=URIAction(
                            label="開始記帳",
                            uri=
                            "https://liff.line.me/1654548127-50gGKZyE/Account"
                        ),
                                        style="primary"),
                        ButtonComponent(action=URIAction(
                            label="餘額設定",
                            uri=
                            "https://liff.line.me/1654548127-50gGKZyE/Account"
                        ),
                                        style="primary")
                    ])))
        line_bot_api.reply_message(event.reply_token, flex_message)
    elif event.message.text == "天氣及空氣品質":
        flex_message = FlexSendMessage(
            alt_text="天氣及空氣品質 Flex",
            contents=CarouselContainer(contents=[
                BubbleContainer(
                    size="kilo",
                    body=BoxComponent(
                        layout="vertical",
                        spacing="sm",
                        contents=[
                            BoxComponent(
                                layout="horizontal",
                                spacing="sm",
                                contents=[
                                    ButtonComponent(action=PostbackAction(
                                        label="臺北", data="臺北-天氣及空氣品質"),
                                                    style="secondary",
                                                    color="#94d3e2"),
                                    ButtonComponent(action=PostbackAction(
                                        label="新北", data="新北-天氣及空氣品質"),
                                                    style="secondary",
                                                    color="#94d3e2"),
                                    ButtonComponent(action=PostbackAction(
                                        label="基隆", data="基隆-天氣及空氣品質"),
                                                    style="secondary",
                                                    color="#94d3e2")
                                ]),
                            BoxComponent(
                                layout="horizontal",
                                spacing="sm",
                                contents=[
                                    ButtonComponent(action=PostbackAction(
                                        label="桃園", data="桃園-天氣及空氣品質"),
                                                    style="secondary",
                                                    color="#94d3e2"),
                                    ButtonComponent(action=PostbackAction(
                                        label="新竹", data="新竹-天氣及空氣品質"),
                                                    style="secondary",
                                                    color="#94d3e2"),
                                    ButtonComponent(action=PostbackAction(
                                        label="苗栗", data="苗栗-天氣及空氣品質"),
                                                    style="secondary",
                                                    color="#94d3e2")
                                ]),
                            BoxComponent(
                                layout="horizontal",
                                spacing="sm",
                                contents=[
                                    ButtonComponent(action=PostbackAction(
                                        label="臺中", data="臺中-天氣及空氣品質"),
                                                    style="secondary",
                                                    color="#94d3e2"),
                                    ButtonComponent(action=PostbackAction(
                                        label="彰化", data="彰化-天氣及空氣品質"),
                                                    style="secondary",
                                                    color="#94d3e2"),
                                    ButtonComponent(action=PostbackAction(
                                        label="南投", data="南投-天氣及空氣品質"),
                                                    style="secondary",
                                                    color="#94d3e2")
                                ]),
                        ])),
                BubbleContainer(
                    size="kilo",
                    body=BoxComponent(
                        layout="vertical",
                        spacing="sm",
                        contents=[
                            BoxComponent(
                                layout="horizontal",
                                spacing="sm",
                                contents=[
                                    ButtonComponent(action=PostbackAction(
                                        label="雲林", data="雲林-天氣及空氣品質"),
                                                    style="secondary",
                                                    color="#94d3e2"),
                                    ButtonComponent(action=PostbackAction(
                                        label="嘉義", data="嘉義-天氣及空氣品質"),
                                                    style="secondary",
                                                    color="#94d3e2"),
                                    ButtonComponent(action=PostbackAction(
                                        label="臺南", data="臺南-天氣及空氣品質"),
                                                    style="secondary",
                                                    color="#94d3e2")
                                ]),
                            BoxComponent(
                                layout="horizontal",
                                spacing="sm",
                                contents=[
                                    ButtonComponent(action=PostbackAction(
                                        label="高雄", data="高雄-天氣及空氣品質"),
                                                    style="secondary",
                                                    color="#94d3e2"),
                                    ButtonComponent(action=PostbackAction(
                                        label="屏東", data="屏東-天氣及空氣品質"),
                                                    style="secondary",
                                                    color="#94d3e2"),
                                    ButtonComponent(action=PostbackAction(
                                        label="宜蘭", data="宜蘭-天氣及空氣品質"),
                                                    style="secondary",
                                                    color="#94d3e2"),
                                ]),
                            BoxComponent(
                                layout="horizontal",
                                spacing="sm",
                                contents=[
                                    ButtonComponent(action=PostbackAction(
                                        label="花蓮", data="花蓮-天氣及空氣品質"),
                                                    style="secondary",
                                                    color="#94d3e2"),
                                    ButtonComponent(action=PostbackAction(
                                        label="臺東", data="臺東-天氣及空氣品質"),
                                                    style="secondary",
                                                    color="#94d3e2"),
                                    TextComponent(text=" ")
                                ]),
                        ]))
            ]))
        line_bot_api.reply_message(event.reply_token, flex_message)

    elif event.message.text == "油價":
        try:
            ssl._create_default_https_context = ssl._create_unverified_context
            data = pd.read_html(
                'https://www2.moeaboe.gov.tw/oil102/oil2017/A01/A0108/tablesprices.asp',
                header=0)[0]  # 取得網頁上的表格資訊
        except:
            ssl._create_default_https_context = ssl._create_unverified_context
            data = pd.read_html(
                'https://www2.moeaboe.gov.tw/oil102/oil2017/A01/A0108/tablesprices.asp',
                header=0)[0]
            print("Second Try")

        response = requests.get("https://m.gas.goodlife.tw/")
        soup = BeautifulSoup(response.text, "html.parser")

        def printt(response, soup):
            timer = soup.find("ul", {"id": "gas-price"}).find("li").find("p")
            if "明日" in timer.get_text():
                return timer.get_text().replace(" ", "")[8:-5]
            elif "今日" in timer.get_text():
                return timer.get_text().replace(" ", "")[8:-5]
            else:
                return timer.get_text().replace(" ", "")[:-10]

        def printgas(response, soup):
            if soup.find("h2", {"class": "down"}) != None:
                pregas = "汽油每公升降"
            elif soup.find("h2", {"class": "up"}) != None:
                pregas = "汽油每公升漲"
            if soup.find("h2").find("em") == None:
                return "汽油每公升不調整"
            gas = soup.find("h2").find("em").get_text()
            return pregas + gas + "元"

        def printdiesel(response, soup):
            diesel = soup.find("ul", {"id": "gas-price"}).find_all("li")[1]
            unwanted = diesel.find('h3')
            unwanted.extract()
            diesel = diesel.get_text().replace(" ", "").strip("元").strip("\n")
            if "0.0" in diesel:
                return "柴油每公升不調整"
            elif "-" in diesel:
                prediesel = "柴油每公升降"
                diesel = diesel.strip("-")
                return prediesel + diesel + "元"
            elif "+" in diesel:
                prediesel = "柴油每公升漲"
                diesel = diesel.strip("+")
                return prediesel + diesel + "元"

        flex_message = FlexSendMessage(
            alt_text="油價 Flex",
            contents=BubbleContainer(
                size="giga",
                body=BoxComponent(
                    layout="vertical",
                    contents=[
                        TextComponent(text="今日油價", size="lg", align="center"),
                        TextComponent(text=" ", size="xxs"),
                        BoxComponent(layout="horizontal",
                                     contents=[
                                         TextComponent(text="供應商", size="xs"),
                                         TextComponent(text="98無鉛", size="xs"),
                                         TextComponent(text="95無鉛", size="xs"),
                                         TextComponent(text="92無鉛", size="xs"),
                                         TextComponent(text="柴油", size="xs"),
                                         TextComponent(text=" ", size="xs")
                                     ]),
                        BoxComponent(layout="horizontal",
                                     contents=[
                                         TextComponent(text="中油"),
                                         TextComponent(text=str(data.iloc[1,
                                                                          1]),
                                                       weight="bold"),
                                         TextComponent(text=str(data.iloc[1,
                                                                          2]),
                                                       weight="bold"),
                                         TextComponent(text=str(data.iloc[1,
                                                                          3]),
                                                       weight="bold"),
                                         TextComponent(text=str(data.iloc[1,
                                                                          4]),
                                                       weight="bold"),
                                         TextComponent(text="元/公升",
                                                       size="xs",
                                                       gravity="bottom")
                                     ]),
                        BoxComponent(layout="horizontal",
                                     contents=[
                                         TextComponent(text="台塑"),
                                         TextComponent(text=str(data.iloc[0,
                                                                          1]),
                                                       weight="bold"),
                                         TextComponent(text=str(data.iloc[0,
                                                                          2]),
                                                       weight="bold"),
                                         TextComponent(text=str(data.iloc[0,
                                                                          3]),
                                                       weight="bold"),
                                         TextComponent(text=str(data.iloc[0,
                                                                          4]),
                                                       weight="bold"),
                                         TextComponent(text="元/公升",
                                                       size="xs",
                                                       gravity="bottom")
                                     ]),
                        TextComponent(text=" ", size="xxs"),
                        TextComponent(text=printt(response, soup),
                                      align="center",
                                      size="sm"),
                        TextComponent(text=str(
                            printgas(response, soup) + " " +
                            printdiesel(response, soup)),
                                      align="center"),
                        TextComponent(text="*實際漲幅受亞洲鄰國油價限制",
                                      size="xs",
                                      align="center")
                    ])))
        line_bot_api.reply_message(event.reply_token, flex_message)
    elif event.message.text == "幫助":
        flex_message = FlexSendMessage(
            alt_text="幫助 Flex",
            contents=CarouselContainer(contents=[
                BubbleContainer(size="kilo",
                                body=BoxComponent(
                                    layout="vertical",
                                    spacing="sm",
                                    contents=[
                                        ButtonComponent(action=PostbackAction(
                                            label="呼叫助理", data="呼叫助理-幫助"),
                                                        style="secondary"),
                                        ButtonComponent(action=PostbackAction(
                                            label="推薦行程", data="推薦行程-幫助"),
                                                        style="secondary"),
                                        ButtonComponent(action=PostbackAction(
                                            label="記帳小本本", data="記帳小本本-幫助"),
                                                        style="secondary")
                                    ])),
                BubbleContainer(
                    size="kilo",
                    body=BoxComponent(
                        layout="vertical",
                        spacing="sm",
                        contents=[
                            ButtonComponent(action=PostbackAction(
                                label="天氣及空氣品質", data="天氣及空氣品質-幫助"),
                                            style="secondary"),
                            ButtonComponent(action=PostbackAction(
                                label="油價", data="油價-幫助"),
                                            style="secondary"),
                            TextComponent(text=" ")
                        ]))
            ]))
        line_bot_api.reply_message(event.reply_token, [
            TextSendMessage(text="歡迎加入行動助理\n讓你輕鬆管理生活大小事\n以下是此助理的功能說明"),
            flex_message
        ])
    elif event.message.text == "小遊戲":
        flex_message = FlexSendMessage(
            alt_text="小遊戲 Flex",
            contents=CarouselContainer(contents=[
                BubbleContainer(
                    size="micro",
                    action=URIAction(
                        label="Snake",
                        uri="https://www.google.com/fbx?fbx=snake_arcade"),
                    hero=ImageComponent(url="https://i.imgur.com/tUXJI3R.png",
                                        size="full",
                                        aspectMode="cover"),
                    body=BoxComponent(
                        layout="vertical",
                        contents=[
                            ButtonComponent(action=URIAction(
                                label="Snake",
                                uri=
                                "https://www.google.com/fbx?fbx=snake_arcade"))
                        ])),
                BubbleContainer(
                    size="micro",
                    action=URIAction(
                        label="Tetris",
                        uri="https://binaryify.github.io/vue-tetris/?lan=en"),
                    hero=ImageComponent(url="https://i.imgur.com/nuxsFbb.png",
                                        size="full",
                                        aspectMode="cover"),
                    body=BoxComponent(
                        layout="vertical",
                        contents=[
                            ButtonComponent(action=URIAction(
                                label="Tetris",
                                uri=
                                "https://binaryify.github.io/vue-tetris/?lan=en"
                            ))
                        ])),
                BubbleContainer(
                    size="micro",
                    action=URIAction(label="Tower Game",
                                     uri="https://www.towergame.app/"),
                    hero=ImageComponent(url="https://i.imgur.com/uzzivML.png",
                                        size="full",
                                        aspectMode="cover"),
                    body=BoxComponent(
                        layout="vertical",
                        contents=[
                            ButtonComponent(action=URIAction(
                                label="Tower Game",
                                uri="https://www.towergame.app/"))
                        ]))
            ]))
        line_bot_api.reply_message(event.reply_token, flex_message)

    elif event.message.text == "RNG":
        RNGmsg = ""
        ran = random.randrange(3)
        if ran == 0:
            RNGmsg = "https://youtu.be/keXfiffBzFw"
        elif ran == 1:
            RNGmsg = "https://youtu.be/EWKX3wass9s"
        elif ran == 2:
            RNGmsg = "https://youtu.be/1snEYPg8TXs"
        elif ran == 3:
            RNGmsg = "https://youtu.be/joZaJqyl2S0"
        elif ran == 4:
            RNGmsg = "https://youtu.be/96HtY9XJSMA"
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=RNGmsg))
    elif "=" in event.message.text:
        x = event.message.text.split("=", 1)
        try:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text=eval(x[0], {"__builtins__": None}, {})))
        except:
            line_bot_api.reply_message(event.reply_token, "計算有誤")
    elif event.message.text == "send nudes":
        message = ImageSendMessage(
            original_content_url=
            "https://danbooru.donmai.us/data/__atlanta_kantai_collection_drawn_by_rui_shi_rayze_ray__c62475e083da5351641192f3569a3412.jpg",
            preview_image_url=
            "https://pbs.twimg.com/media/EdNl79IUYAAh_68?format=jpg&name=small"
        )
        line_bot_api.reply_message(event.reply_token, message)
    else:
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text="未知Message:\n" + event.message.text))
Esempio n. 4
0
def message_text(event):
    # check bot prefix
    if event.message.text.startswith(BOT_PREFIX):
        # seperate message contents as command and arguments
        message_body = event.message.text.strip()[1:].split()
        command = message_body[0]
        if(len(message_body) >= 2):
            arguments_list = message_body[1:]
            arguments_string = ' '.join(arguments_list)
        else:
            arguments_list = []
            arguments_string = ''

        # echo command: reply arguments to user
        if command == 'echo':
            if(arguments_string != ''):
                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(text=arguments_string)
                )

        elif command == 'flex':
            bubble = BubbleContainer(
                direction='ltr',
                hero=ImageComponent(
                    url='https://img.wongnai.com/p/1920x0/2017/12/30/19f2934940cf47669b2d1336feea0b97.jpg',
                    size='full',
                    aspect_ratio='4:3',
                    aspect_mode='cover',
                    action=URIAction(uri='https://github.com/miner46er/python-line-bot-sparta', label='label')
                ),
                body=BoxComponent(
                    layout='vertical',
                    contents=[
                        # title
                        TextComponent(text='Brown Cafe', weight='bold', size='xl'),
                        # review
                        BoxComponent(
                            layout='baseline',
                            margin='md',
                            contents=[
                                IconComponent(size='sm', url='https://cdn2.iconfinder.com/data/icons/default-1/100/.svg-4-512.png'),
                                IconComponent(size='sm', url='https://freeiconshop.com/wp-content/uploads/edd/star-curved-outline.png'),
                                IconComponent(size='sm', url='https://cdn2.iconfinder.com/data/icons/default-1/100/.svg-4-512.png'),
                                IconComponent(size='sm', url='https://cdn2.iconfinder.com/data/icons/default-1/100/.svg-4-512.png'),
                                IconComponent(size='sm', url='https://freeiconshop.com/wp-content/uploads/edd/star-curved-outline.png'),
                                TextComponent(text='4.0', size='sm', color='#999999', margin='md',
                                              flex=0)
                            ]
                        ),
                        # info
                        BoxComponent(
                            layout='vertical',
                            margin='lg',
                            spacing='sm',
                            contents=[
                                BoxComponent(
                                    layout='baseline',
                                    spacing='sm',
                                    contents=[
                                        TextComponent(
                                            text='Place',
                                            color='#aaaaaa',
                                            size='sm',
                                            flex=1
                                        ),
                                        TextComponent(
                                            text='Shinjuku, Tokyo',
                                            wrap=True,
                                            color='#666666',
                                            size='sm',
                                            flex=5
                                        )
                                    ],
                                ),
                                BoxComponent(
                                    layout='baseline',
                                    spacing='sm',
                                    contents=[
                                        TextComponent(
                                            text='Time',
                                            color='#aaaaaa',
                                            size='sm',
                                            flex=1
                                        ),
                                        TextComponent(
                                            text="10:00 - 23:00",
                                            wrap=True,
                                            color='#666666',
                                            size='sm',
                                            flex=5,
                                        ),
                                    ],
                                ),
                            ],
                        )
                    ],
                ),
                footer=BoxComponent(
                    layout='vertical',
                    spacing='sm',
                    contents=[
                        # callAction, separator, websiteAction
                        SpacerComponent(size='sm'),
                        # callAction
                        ButtonComponent(
                            style='link',
                            height='sm',
                            action=URIAction(label='CALL', uri='tel:000000'),
                        ),
                        # separator
                        SeparatorComponent(),
                        # websiteAction
                        ButtonComponent(
                            style='link',
                            height='sm',
                            action=URIAction(label='WEBSITE', uri="https://github.com/miner46er/python-line-bot-sparta")
                        )
                    ]
                ),
            )
            message = FlexSendMessage(alt_text="hello", contents=bubble)
            line_bot_api.reply_message(
                event.reply_token,
                message
            )
        
        elif command == 'buttons':
            buttons_template = ButtonsTemplate(
                title='My buttons sample', text='Hello, my buttons', actions=[
                    URIAction(label='Go to line.me', uri='https://line.me'),
                    PostbackAction(label='ping', data='ping'),
                    PostbackAction(label='ping with text', data='ping', text='ping'),
                    MessageAction(label='Translate Rice', text='米')
                ])
            menu_pesan = TemplateSendMessage(
                alt_text='Buttons alt text', template=buttons_template)

            line_bot_api.reply_message(event.reply_token, menu_pesan)
        
        elif command == 'pesan':
            order_memo = BOT_PREFIX + command + ' ' + arguments_string
            if len(arguments_list) == 0:
                pilihan_menu = ImageCarouselTemplate(columns=[
                    ImageCarouselColumn(
                        image_url='https://via.placeholder.com/512x512',
                        action=MessageAction(label='Nasi Putih', text=BOT_PREFIX + command + ' putih')
                        ),
                    ImageCarouselColumn(
                        image_url='https://via.placeholder.com/512x512',
                        action=MessageAction(label='Nasi Umami', text=BOT_PREFIX + command + ' umami')
                        )
                ])
                menu_pesan = TemplateSendMessage(
                    alt_text='Menu pesanan', template=pilihan_menu)
                
                line_bot_api.reply_message(event.reply_token, menu_pesan)
            
            elif len(arguments_list) == 1:
                if RICE_TYPE.count(arguments_list[0]) == 1:
                    pilihan_menu = ImageCarouselTemplate(columns=[
                        ImageCarouselColumn(
                            image_url='https://via.placeholder.com/512x512',
                            action=MessageAction(label='Ayam', text=order_memo + ' ayam')
                            ),
                        ImageCarouselColumn(
                            image_url='https://via.placeholder.com/512x512',
                            action=MessageAction(label='Cumi', text=order_memo + ' cumi')
                            ),
                        ImageCarouselColumn(
                            image_url='https://via.placeholder.com/512x512',
                            action=MessageAction(label='Campur', text=order_memo + ' campur')
                            )
                    ])
                    menu_pesan = TemplateSendMessage(
                        alt_text='Menu pesanan', template=pilihan_menu)
                    
                    line_bot_api.reply_message(event.reply_token, menu_pesan)

                else:
                    order_mistake(event)

            elif 2 <= len(arguments_list) <= 5 and arguments_list[-1] != 'selesai':
                if validate_order(arguments_list, -1):
                    sauce_template = ImageCarouselTemplate(columns=[
                        ImageCarouselColumn(
                            image_url='https://via.placeholder.com/512x512',
                            action=MessageAction(label='XO', text=order_memo + ' xo')
                            ),
                        ImageCarouselColumn(
                            image_url='https://via.placeholder.com/512x512',
                            action=MessageAction(label='Mayonnaise', text=order_memo + ' mayo')
                            ),
                        ImageCarouselColumn(
                            image_url='https://via.placeholder.com/512x512',
                            action=MessageAction(label='Bumbu Bali', text=order_memo + ' bali')
                            ),
                        ImageCarouselColumn(
                            image_url='https://via.placeholder.com/512x512',
                            action=MessageAction(label='Blackpepper', text=order_memo + ' blackpepper')
                            )
                    ])
                    sauce_choice = TemplateSendMessage(
                        alt_text='Menu saus', template=sauce_template)
                    
                    confirm_button = ButtonsTemplate(
                        text=('Pesananmu sekarang:' +
                            '\nNasi       : ' + arguments_list[0] +
                            '\nTopping    : ' + arguments_list[1] +
                            '\nSaus(max 4): ' + ', '.join(arguments_list[2:])),
                        actions=[
                            MessageAction(label='Selesai memesan', text=order_memo + ' selesai')
                        ])
                    order_confirm = TemplateSendMessage(
                        alt_text='Pesanan saat ini', template=confirm_button)

                    line_bot_api.reply_message(event.reply_token, [sauce_choice, order_confirm])
                
                else:
                    order_mistake(event)

            elif (len(arguments_list) == 6) and (arguments_list[-1] != 'selesai'):
                if validate_order(arguments_list, -1):
                    summary_button = ButtonsTemplate(
                        text=('Apakah pesanan sudah benar?' +
                            '\nNasi       : ' + arguments_list[0] +
                            '\nTopping    : ' + arguments_list[1] +
                            '\nSaus(max 4): ' + ', '.join(arguments_list[2:])),
                        actions=[
                            MessageAction(label='Selesai memesan', text=order_memo + ' selesai')
                        ])
                    order_summary = TemplateSendMessage(
                        alt_text='Konfirmasi pesanan', template=summary_button)

                    line_bot_api.reply_message(event.reply_token, order_summary)

            elif len(arguments_list) >= 3 and arguments_list[-1] == 'selesai':
                if validate_order(arguments_list, -2):
                    line_bot_api.reply_message(
                        event.reply_token,
                        TextSendMessage(text='Pesanan dikirim!')
                    )
                else:
                    order_mistake(event)

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

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

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

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

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

        score.sort(reverse=True)
        idx = score[0][1]
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text='{}\n成人剩餘{}個、小孩剩餘{}個'.format(
                DataAll[idx][1], DataAll[idx][4], DataAll[idx][5])))
Esempio n. 6
0
def handle_message(event):
    rawText = event.message.text
    text = rawText.lower().strip()
    data = rawText.lower().strip().split(' ')

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

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


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

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

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


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

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

#MULT CHOICE
    

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




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

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

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

#LEAVE GRUP / MPC
    if text=="/bye":
        if isinstance(event.source, SourceGroup):
            line_bot_api.push_message(event.source.group_id, TextSendMessage(text='***Snap!***'))
            line_bot_api.push_message(event.source.group_id, TextSendMessage(text="Mr. Stark, I don't feel so good" ))
            line_bot_api.push_message(event.source.group_id, TextSendMessage(text='Parah, '+profile.display_name+' jahat bgt'))
            line_bot_api.leave_group(event.source.group_id)
        elif isinstance(event.source, SourceRoom):
            line_bot_api.push_message(event.source.group_id, TextSendMessage(text='***Snap!***'))
            line_bot_api.push_message(event.source.group_id, TextSendMessage(text="Mr. Stark, I don't feel so good" ))
            line_bot_api.push_message(event.source.group_id, TextSendMessage(text='Parah, '+profile.display_name+' jahat bgt'))
            line_bot_api.leave_room(event.source.room_id)
Esempio n. 7
0
def handle_message(event):
    text = event.message.text

    if text == "学部再登録":
        userid = event.source.user_id
        user_db.del_userinfo(userid)  # user情報を削除

        line_bot_api.reply_message(event.reply_token, [
            TextSendMessage(text="現在登録されていた学部は削除されました。"),
            TextSendMessage(
                text="もう一度下のボタンから学部を選択してください。",
                quick_reply=QuickReply(items=[
                    QuickReplyButton(
                        action=PostbackAction(label=major, data=major))
                    for major in major_list
                ]))
        ])

    elif text == "送信フォーム":
        line_bot_api.reply_message(
            event.reply_token,
            TemplateSendMessage(
                alt_text="送信フォーム",
                template=ButtonsTemplate(
                    text="送信フォーム",
                    image_size="cover",
                    actions=[
                        URIAction(uri="https://forms.gle/cAMusm8ZN8i4SmbL8",
                                  label="ご感想、ご要望はこちら")
                    ])))
    elif text == "ゼミ協":
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text="https://lin.ee/bOegrZ3\n上記のリンクより友だち追加できます!"))

    #教官または講義名いずれかが送信されたとき.もしくはもう一度探すとき
    elif "_" not in text or "でもう一度探す" in text:
        if "でもう一度探す" in text:
            text = text.split("_")[0]
        teacherList = onihotoke_db.searchTeacher(text, False)  #教員列からワードを検索
        lectureList = onihotoke_db.searchLecture(text, False)  #講義列からワードを検索
        kibutsuList = []  #2つのリストを結合 1つは空であるはず.
        kibutsuList.extend(teacherList)
        kibutsuList.extend(lectureList)

        #検索結果が空でないとき,その検索結果をlabelにもつボタンを送信.
        if kibutsuList:
            #kibutsuListの要素数が20を超えないようにする.
            if len(kibutsuList) > 19:
                kibutsuList = random.sample(
                    kibutsuList, 19)  #一応シャッフルする.何回か表示すればすべての講義を見れるように.
            kibutsuList.extend(["でもう一度探す"])  #20個目
            buttons_templates = []
            roop = (len(kibutsuList) + 3) // 4  #最大4つまで表示できるテンプレートを何回表示すればいいか.

            for i in range(roop):  #その回数だけ回す.
                if i == roop - 1:  #最後は4つ以下になるからスライス部分を変える必要あり.
                    buttons_templates.append(
                        ButtonsTemplate(title='講義名を選択してください',
                                        text='choose the lecture name',
                                        actions=[
                                            MessageAction(
                                                label=text + " " + name[:10],
                                                text=text + "_" + name)
                                            for name in kibutsuList[4 * i:]
                                        ]))
                    break
                buttons_templates.append(
                    ButtonsTemplate(
                        title='講義名を選択してください',
                        text='choose the lecture name',
                        actions=[
                            MessageAction(label=text + " " + name[:10],
                                          text=text + "_" + name)
                            for name in kibutsuList[4 * i:4 * (i + 1)]
                        ]))
            try:
                line_bot_api.reply_message(event.reply_token, [
                    TemplateSendMessage(alt_text='講義を選択してください',
                                        template=buttons_template)
                    for buttons_template in buttons_templates
                ])
                # slackに報告
                requests.post(SLACKBOT_SEARCH_KEYWORD,
                              data=json.dumps({'text': "検索ワード : " + text}))
            except:
                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(text="エラーのため講義情報を表示できません。エラーは報告済みです。"))
                # slackに報告
                requests.post(SLACKBOT_ERROR_KEYWORD,
                              data=json.dumps({'text': "エラー検索ワード : " + text}))

        # 該当する講義がなかったとき
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text='該当する講義情報が見つかりませんでした。'))
            # slackに報告
            requests.post(SLACKBOT_ERROR_KEYWORD,
                          data=json.dumps({'text': "見つからなかった検索ワード : " + text}))

    #教官名と講義名のどちらも送信されたとき、その講義の鬼仏情報をユーザーに送信
    elif "_" in text:
        texts = text.split("_")  #『教官名_講義名』 という入力を期待している
        kibutsuList = onihotoke_db.searchAll(texts[0], texts[1].split(",")[0])
        print(texts[1].split(",")[0])  #講義情報の辞書のリスト
        # print(kibutsuList)
        if kibutsuList:
            if len(kibutsuList) > 10:
                kibutsuList = random.sample(
                    kibutsuList, 10)  #一応シャッフルする.何回か表示すればすべての講義を見れるように.

            try:
                line_bot_api.reply_message(
                    event.reply_token,
                    FlexSendMessage(alt_text='鬼仏情報',
                                    contents=CarouselContainer([
                                        gen_card_onihotoke(dic)
                                        for dic in kibutsuList
                                    ])))
                # slackに報告
                requests.post(SLACKBOT_SEARCH_KEYWORD,
                              data=json.dumps({'text': "検索ワード : " + text}))
            except:
                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(text="エラーのため講義情報を表示できません。エラーは報告済みです。"))
                # slackに報告
                SLACKBOT_WEBHOOK_URL = os.environ["SLACKBOT_ERROR_KEYWORD"]
                requests.post(SLACKBOT_ERROR_KEYWORD,
                              data=json.dumps({'text': "エラー検索ワード : " + text}))

        # 該当する講義がなかったとき
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text='該当する講義情報が見つかりませんでした。'))
            # slackに報告
            SLACKBOT_WEBHOOK_URL = os.environ["SLACKBOT_ERROR_KEYWORD"]
            requests.post(SLACKBOT_ERROR_KEYWORD,
                          data=json.dumps({'text': "見つからなかった検索ワード : " + text}))

    #検索結果が空だったとき、その旨をユーザーに送信
    else:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text='教官名または講義名を入力してください.'))
        # slackに報告
        SLACKBOT_WEBHOOK_URL = os.environ["SLACKBOT_ERROR_KEYWORD"]
        requests.post(SLACKBOT_ERROR_KEYWORD,
                      data=json.dumps({'text': "たぶん適当な検索ワード : " + text}))
Esempio n. 8
0
        SLACKBOT_WEBHOOK_URL = os.environ["SLACKBOT_ERROR_KEYWORD"]
        requests.post(SLACKBOT_ERROR_KEYWORD,
                      data=json.dumps({'text': "たぶん適当な検索ワード : " + text}))


#####################################################################################

rich_menu_to_create = RichMenu(
    size=RichMenuSize(width=2500, height=1686),
    selected=False,
    name='richmenu for randomchat',
    # chat_bar_text = 'id_default',
    chat_bar_text="基幹科目等の検索はこちら",
    areas=[
        RichMenuArea(bounds=RichMenuBounds(x=0, y=93, width=675, height=750),
                     action=PostbackAction(data="人間論")),
        RichMenuArea(bounds=RichMenuBounds(x=0, y=843, width=675, height=750),
                     action=PostbackAction(data="人文科学")),
        RichMenuArea(bounds=RichMenuBounds(x=675, y=93, width=575, height=750),
                     action=PostbackAction(data="自然論")),
        RichMenuArea(bounds=RichMenuBounds(x=675, y=843, width=575,
                                           height=750),
                     action=PostbackAction(data="自然科学")),
        RichMenuArea(bounds=RichMenuBounds(x=1250, y=93, width=575,
                                           height=750),
                     action=PostbackAction(data="社会論")),
        RichMenuArea(bounds=RichMenuBounds(x=1250,
                                           y=843,
                                           width=575,
                                           height=750),
                     action=PostbackAction(data="社会科学")),
Esempio n. 9
0
def message_text(event):

    user = User.query.filter_by(line_id=line_bot_api.get_profile(
        event.source.user_id).user_id).first()
    greeting = setGreeting(
        datetime.fromtimestamp(event.timestamp // 1000).time().hour)

    if event.message.text in MSGS_IGNORED:
        pass
    elif not user.name:
        user.name = event.message.text
        db.session.commit()
        line_bot_api.reply_message(
            event.reply_token,
            [
                TextSendMessage(text=user.name + 'さん、はじめまして!'),
                TextSendMessage(
                    text='続いて、頻繁に使用するメールアドレスを教えてください。' \
                    'すでにサプリメントを購入された方は、「診断時に入力したメールアドレス」を教えてください。')
            ]
        )
    # WIP: Check if it matches email registered on ECF
    elif not user.email:
        if '@' not in event.message.text or len(event.message.text) < 4:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text='有効なメールアドレスではないようです。もう一度入力してください。'))
        else:
            user.email = event.message.text
            db.session.commit()

            items = [
                QuickReplyButton(action=PostbackAction(
                    label="オンにする", text="オンにする", data='enabled_weather=1')),
                QuickReplyButton(action=PostbackAction(
                    label="オフにする", text="オフにする", data='enabled_weather=0'))
            ]

            line_bot_api.reply_message(event.reply_token, [
                TextSendMessage(text='メールアドレスを ' + user.email + ' に設定しました。'),
                TextSendMessage(
                    text='このボットは、日々の天気予報をお知らせすることもできます。天気予報機能をオンにしますか?',
                    quick_reply=QuickReply(items=items))
            ])
    # Use card (or image) for production
    elif not user.init_coupon:
        user.init_coupon = ''.join(
            random.choices(string.ascii_letters + string.digits, k=10))
        user.init_coupon_issued_at = datetime.now()
        db.session.commit()

        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='初期設定は以上となります。今後の基本操作は、画面下のメニューから行なってください。\n\n' \
                    'またこの度、LINE Botに登録してくださったお礼に、月々のお支払い等でご利用頂ける限定クーポンを発行致しました。\n\n' \
                    +user.name+'さんのクーポンコードは、\n\n'+user.init_coupon+'\n\nです。\n\n' \
                    'このコードを決済画面で入力することで、決済金額が1000円引きとなります。' \
                    'ただし、本クーポンのご利用期限は本日より3ヶ月となっておりますので、予めご注意ください。' \
                    'クーポンコードは、画面下メニューの「登録情報」よりご確認頂けます。'
            )
        )
    elif event.message.text == '登録情報':
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text=user.name+'さんの登録情報は以下の通りです。\n\n' \
                    'LINE ID: '+user.line_id+'\n' \
                    'Email: '+user.email+'\n' \
                    '初回登録クーポンコード: '+user.init_coupon+'\n' \
                    '定期購入: '+('定期購入中' if user.is_subscribing else '設定されていません')+'\n' \
                    'サプリ摂取時刻: '+(user.default_time if user.default_time else '設定されていません')+'\n' \
                    '天気予報: '+('オン' if user.enabled_weather else 'オフ')+'\n' \
                    'Twitter連携: '+('オン' if user.enabled_twitter else 'オフ')+'\n' \
                    '招待人数: '+str(user.num_of_referrals)
            )
        )
    elif event.message.text == '設定変更':
        items = [
            QuickReplyButton(action=PostbackAction(
                label='ユーザー名を変更', text='ユーザー名を変更', data='name')),
            QuickReplyButton(action=PostbackAction(
                label='位置情報を変更', text='位置情報を変更', data='location')),
            QuickReplyButton(action=PostbackAction(
                label='サプリ摂取時刻を変更', text='サプリ摂取時刻を変更', data='defaulttime')),
            QuickReplyButton(action=PostbackAction(
                label='天気予報設定を変更', text='天気予報設定を変更', data='enabled_weather')),
            QuickReplyButton(action=PostbackAction(label='Twitter連携設定を変更',
                                                   text='Twitter連携設定を変更',
                                                   data='enabled_twitter'))
        ]
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text='変更したい項目を下から選択してください。',
                            quick_reply=QuickReply(items=items)))
    elif event.message.text == 'フィードバック':
        if not Feedback.query.filter_by(line_id=line_bot_api.get_profile(
                event.source.user_id).user_id).first():
            db.session.add(
                Feedback(line_id=line_bot_api.get_profile(
                    event.source.user_id).user_id))
            db.session.commit()
        sendQuickReply_FB(event, 1)
    elif event.message.text == 'FAQ':
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='何かお困りですか?\n下記の該当する項目から選んでください。',
                quick_reply=QuickReply(items=generateFAQCategories())))
    elif event.message.text == '天気' or event.message.text == '天気予報':
        if not user.enabled_weather:
            items = [
                QuickReplyButton(action=PostbackAction(
                    label="オンにする", text="オンにする", data='enabled_weather=1')),
                QuickReplyButton(action=PostbackAction(
                    label="オフにする", text="オフにする", data='enabled_weather=0'))
            ]
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text='天気予報機能がオフになっているようです。天気予報機能をオンにしますか?',
                                quick_reply=QuickReply(items=items)))
        elif not user.location:
            items = [QuickReplyButton(action=LocationAction(label="位置情報を送る"))]
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(
                    text='位置情報が設定されていないようです。正確な天気予報のため、下記ボタンより位置情報を送ってください。',
                    quick_reply=QuickReply(items=items)))
        else:
            pref, city = parse_address(user.location)
            with open('src/areas.json') as f:
                city_ids = json.load(f)
                if not city in city_ids[pref]:
                    line_bot_api.reply_message(
                        event.reply_token,
                        TextSendMessage(
                            text=
                            'この天気予報はお住まいの地域には対応していないようです...\n今後のアップデートをお待ちください。'
                        ))
                else:
                    items = [
                        QuickReplyButton(action=PostbackAction(
                            label=time, text=time, data='display_time=' +
                            time)) for time in [
                                'すべてみる', '9時', '12時', '15時', '18時', '21時',
                                '0時', '3時', '6時'
                            ]
                    ]
                    line_bot_api.reply_message(
                        event.reply_token,
                        TextSendMessage(text='何時頃の天気予報を表示しますか?',
                                        quick_reply=QuickReply(items=items)))
    # WIP
    elif event.message.text == 'Twitter':
        line_bot_api.reply_message(
            event.reply_token, TextSendMessage(text='Twitter連携機能は現在開発中です...'))
    elif '感謝' in event.message.text or 'ありがとう' in event.message.text:
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text=random.choice(
                ['どういたしまして!', 'こちらこそ製品を使用頂きありがとうございます!', 'いえいえ!'])))
    elif user.name == ' ':
        user.name = event.message.text
        db.session.commit()
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text='ユーザー名を ' + user.name + ' に変更しました。'),
        )
    # WIP
    else:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text='会話機能は現在開発中です...'))
Esempio n. 10
0
def handle_text_message(event):
    # LINE DevelopersからこのreplyTokenが来たときにエラーになるのを回避
    if event.reply_token == "00000000000000000000000000000000":
        return

    # ユーザから受信したメッセージのテキスト
    text = event.message.text

    if text == '避難場所の確認':
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text="{}\n\n{}\n{}\n{}".format(
                    "いちばん近い避難場所を確認するよ"+chr(0x100003),
                    "避難場所は、災害の種類別に指定されているよ",
                    "災害の種類を選んでね",
                    "表示されていない災害は、横にスクロールすると出てくるよ"
                ),
                # クイックリプライ設定
                quick_reply=QuickReply(
                    items=[
                        QuickReplyButton(
                            action=PostbackAction(
                                label="地震",
                                text="地震",
                                data="request_location"
                            )
                        ),
                        QuickReplyButton(
                            action=PostbackAction(
                                label="津波",
                                text="津波",
                                data="request_location"
                            )
                        ),
                        QuickReplyButton(
                            action=PostbackAction(
                                label="洪水",
                                text="洪水",
                                data="request_location"
                            )
                        ),
                        QuickReplyButton(
                            action=PostbackAction(
                                label="土砂災害",
                                text="土砂災害",
                                data="request_location"
                            )
                        ),
                        QuickReplyButton(
                            action=PostbackAction(
                                label="内水氾濫",
                                text="内水氾濫",
                                data="request_location"
                            )
                        ),
                        QuickReplyButton(
                            action=PostbackAction(
                                label="高潮",
                                text="高潮",
                                data="request_location"
                            )
                        ),
                        QuickReplyButton(
                            action=PostbackAction(
                                label="大規模火災",
                                text="大規模火災",
                                data="request_location"
                            )
                        ),
                        QuickReplyButton(
                            action=PostbackAction(
                                label="火山噴火",
                                text="火山噴火",
                                data="request_location"
                            )
                        ),
                    ]
                )
            )
        )

    elif text in [
        "地震", "津波", "洪水", "土砂災害", "内水氾濫", "高潮", "大規模火災",
        "火山噴火"
    ]:
        global which_disaster_value
        which_disaster_value = text

    elif text == "お役立ちリンク集":
        buttons_template = ButtonsTemplate(
            text="どのリンク集を見る?",
            actions=[
                MessageAction(label="日頃の備え",
                              text="日頃の備え"),
                MessageAction(label="安否確認サービス",
                              text="安否確認サービス"),
                MessageAction(label="災害情報",
                              text="災害情報"),
            ]
        )
        template_message = TemplateSendMessage(
            alt_text='Buttons alt text', template=buttons_template)
        line_bot_api.reply_message(event.reply_token, template_message)

    elif text == "日頃の備え":
        line_bot_api.reply_message(
            event.reply_token, [
                TextSendMessage(text="日頃の備えに役立つサイトの一部を紹介するね"
                                     +chr(0x100003)),
                TextSendMessage(text="{}\n{}\n\n{}\n{}\n\n{}\n{}\n".format(
                    "NHK そなえる防災",
                    "https://www.nhk.or.jp/sonae/",
                    "東京都 防災ブック「東京防災」",
                    "https://www.bousai.metro.tokyo.lg.jp/1002147/index.html",
                    "Yahoo! JAPAN 天気・災害 「防災手帳」",
                    "https://emg.yahoo.co.jp/notebook/"
                ))
            ]
        )

    elif text == "安否確認サービス":
        line_bot_api.reply_message(
            event.reply_token, [
                TextSendMessage(text="もしものときのために、使い方を確認しておこうね"
                                     +chr(0x100003)),
                TextSendMessage(text="{}\n\n{}\n{}\n\n{}\n{}\n\n{}\n{}\n\n{}\n{}\
                \n\n{}\n{}\n\n{}\n{}\n".format(
                    "●文字で登録するもの",
                    "NTT東日本・NTT西日本 「災害用伝言板(web171)」",
                    "https://www.web171.jp/web171app/topRedirect/",
                    "NTTドコモ 「災害用伝言板」",
                    "https://www.nttdocomo.co.jp/info/disaster/disaster_board/index.html",
                    "au「災害用伝言板サービス」",
                    "https://www.au.com/mobile/anti-disaster/saigai-dengon/",
                    "ソフトバンク「災害用伝言板」",
                    "https://www.softbank.jp/mobile/service/dengon/",
                    "Y! mobile(ワイモバイル)「災害用伝言板サービス」",
                    "https://www.ymobile.jp/service/dengon/",
                    "Google 「パーソンファインダー(安否情報)」",
                    "https://www.google.org/personfinder/japan/"
                )),
                TextSendMessage(text="{}\n\n{}\n{}\n".format(
                    "●音声で登録するもの",
                    "NTT東日本・NTT西日本 「災害用伝言ダイヤル(171)」",
                    "http://www.ntt-east.co.jp/saigai/voice171/index.html"
                )),
                TextSendMessage(text="{}\n\n{}\n{}\n".format(
                    "●各サービスに登録された情報を一括検索",
                    "NTT・NHK 「J-anpi 安否情報まとめて検索」",
                    "https://anpi.jp/top"
                ))
            ]
        )

    elif text == "災害情報":
        line_bot_api.reply_message(
            event.reply_token, [
                TextSendMessage(text="災害が発生したとき、情報の確認に役立つサイトの一部を紹介するね"
                                     +chr(0x100003)),
                TextSendMessage(text="{}\n{}\n\n{}\n{}\n\n{}\n{}\n\n{}\n{}\n".format(
                    "気象庁 防災情報",
                    "https://www.jma.go.jp/jma/menu/menuflash.html",
                    "国土交通省 災害・防災情報",
                    "http://www.mlit.go.jp/saigai/index.html",
                    "NHK NEWS WEB",
                    "https://www3.nhk.or.jp/news/?utm_int=all_header_logo_news",
                    "Yahoo! JAPAN 天気・災害",
                    "https://weather.yahoo.co.jp/weather/"
                ))
            ]
        )

    elif text == "避難のQ&A":
        buttons_template = ButtonsTemplate(
            text="どのQ&Aを見る?",
            actions=[
                MessageAction(label="避難場所と避難所は違う?",
                              text="避難場所と避難所は違う?"),
                MessageAction(label="そもそも避難って何?",
                              text="そもそも避難って何?"),
                MessageAction(label="避難するタイミングは?",
                              text="避難するタイミングは?"),
                MessageAction(label="ハザードマップって何?",
                              text="ハザードマップって何?")
            ]
        )
        template_message = TemplateSendMessage(
            alt_text='Buttons alt text', template=buttons_template)
        line_bot_api.reply_message(event.reply_token, template_message)

    elif text == "避難場所と避難所は違う?":
        line_bot_api.reply_message(
            event.reply_token, [
                TextSendMessage(text="避難場所と避難所は、名前は似ているけど違うものだよ"
                                     +chr(0x100002)),
                TextSendMessage(text="{}\n{}\n\n{}\n\n{}".format(
                    "「避難場所」(正式には「指定緊急避難場所」)は、",
                    "「切迫した災害の危険から命を守るために避難する場所として、\
あらかじめ市町村が指定した施設・場所」",
                    "つまり、命を守るために緊急的に避難する場所だよ",
                    "「洪水」「崖崩れ、土石流及び地滑り」「高潮」「地震」\
「津波」「大規模な火事」「内水氾濫」「火山現象」の種類ごとに指定されているよ"
                )),
                TextSendMessage(text="{}\n{}\n\n{}".format(
                    "「避難所」(正式には「指定避難所」)は、",
                    "「災害により住宅を失った場合等において、一定期間\
避難生活をする場所として、あらかじめ市町村が指定した施設」",
                    "つまり、災害で家に戻れなくなった場合などに避難生活を送る場所だよ"
                )),
                TextSendMessage(text="{}\n\n{}\n{}\n\n{}\n{}\n".format(
                    "詳しく知りたい場合はこれを見てね"+chr(0x100003),
                    "内閣府 「避難勧告等に関するガイドライン① (避難行動・情報伝達編)」",
                    "http://www.bousai.go.jp/oukyu/hinankankoku/pdf/hinan_guideline_01.pdf",
                    "国土地理院 防災関連 「指定緊急避難場所データ」",
                    "https://www.gsi.go.jp/bousaichiri/hinanbasho.html"
                ))
            ]
        )

    elif text == "そもそも避難って何?":
        line_bot_api.reply_message(
            event.reply_token, [
                TextSendMessage(text="{}\n\n{}\n\n{}\n{}\n{}".format(
                    "数分から数時間後に起こるかもしれない自然災害から「命を守るための行動」だよ"
                    +chr(0x100002),
                    "内閣府の「避難勧告等に関するガイドライン」では、命を守るためにとる、\
次の全ての行動を避難行動としているよ",
                    "①指定緊急避難場所への立退き避難",
                    "②「近隣の安全な場所」(近隣のより安全な場所・建物等)への立退き避難",
                    "③「屋内安全確保」(その時点に居る建物内において、より安全な部屋等への移動)"
                )),
                TextSendMessage(text="{}\n\n{}\n{}".format(
                    "詳しく知りたい場合はこれを見てね" + chr(0x100003),
                    "内閣府 「避難勧告等に関するガイドライン① (避難行動・情報伝達編)」",
                    "http://www.bousai.go.jp/oukyu/hinankankoku/pdf/hinan_guideline_01.pdf"
                ))
            ]
        )

    elif text == "避難するタイミングは?":
        line_bot_api.reply_message(
            event.reply_token, [
                TextSendMessage(text="{}\n\n{}\n\n{}\n{}\n{}\n{}\n\n{}\n{}".format(
                    "「自分の命は自分で守る」という意識を持って、自分の判断で避難するのが原則だよ"
                    +chr(0x100002),
                    "災害が発生する危険性が高まったら、市町村から避難情報が出ることになっているよ",
                    "でも、急な災害では避難情報を出すのが間に合わないこともあるし、",
                    "人によって住んでいる場所の地形や家の構造、家族構成などは違うから、",
                    "自分で防災気象情報などを見て避難するかどうか判断して、",
                    "身の危険を感じたらすぐに避難することが大切だよ",
                    "あらかじめ、ハザードマップなどであなたの地域の災害リスクを確認して、",
                    "災害ごとに、どのタイミングでどの避難行動をとるか考えておこうね"
                )),
                TextSendMessage(text="{}\n\n{}\n{}\n{}\n{}".format(
                    "市町村が出す「避難情報」と国や都道府県が出す「防災気象情報」は、\
5段階の「警戒レベル」に対応しているよ",
                    "ポイントは、",
                    "「警戒レベル3」→高齢者等の要配慮者は避難",
                    "「警戒レベル4」→全員避難",
                    "だよ"
                )),
                TextSendMessage(text="{}\n\n{}\n{}\n\n{}\n{}\n\n{}\n{}\n".format(
                    "詳しく知りたい場合はこれを見てね"+chr(0x100003),
                    "内閣府 「警戒レベルに関するチラシ」",
                    "http://www.bousai.go.jp/oukyu/hinankankoku/h30_hinankankoku_guideline/\
pdf/keikai_level_chirashi.pdf",
                    "内閣府 「避難勧告等に関するガイドライン① (避難行動・情報伝達編)」",
                    "http://www.bousai.go.jp/oukyu/hinankankoku/pdf/hinan_guideline_01.pdf",
                    "内閣府 「避難勧告等に関するガイドラインの改定(平成31年3月29日)」",
                    "http://www.bousai.go.jp/oukyu/hinankankoku/h30_hinankankoku_guideline/\
index.html"
                ))
            ]
        )

    elif text == "ハザードマップって何?":
        line_bot_api.reply_message(
            event.reply_token, [
                TextSendMessage(text="{}\n\n{}\n\n{}".format(
                    "災害が発生したら被害が出そうな範囲や、避難場所・避難経路などを、\
地域ごとにまとめた地図のことだよ"+chr(0x100002),
                    "「洪水」「内水」「ため池」「高潮」「津波」「土砂災害」「火山」の\
種類別に作られているよ",
                    "「ハザード(hazard)」は「危険」という意味の英語だよ"
                )),
                TextSendMessage(text="{}\n\n{}\n{}\n".format(
                    "あなたの地域のハザードマップを確認したい場合は、自治体のサイトか、これを見てね"
                    +chr(0x100003),
                    "国土交通省 「ハザードマップポータルサイト」",
                    "https://disaportal.gsi.go.jp/index.html"
                ))
            ]
        )

    elif text == "このBotを友だちに教える":
        buttons_template = ButtonsTemplate(
            text="どの方法で教える?",
            actions=[
                URIAction(label="LINEで送る", uri="line://nv/recommendOA/@087yncti"),
                URIAction(label="QRコードを表示", uri="https://qr-official.line.me/\
sid/M/087yncti.png"),
                MessageAction(label="LINE IDを表示", text="LINE IDを表示")
            ]
        )
        template_message = TemplateSendMessage(
            alt_text='Buttons alt text', template=buttons_template)
        line_bot_api.reply_message(event.reply_token, template_message)

    elif text == "LINE IDを表示":
        line_bot_api.reply_message(
            event.reply_token, TextSendMessage(text="@087yncti"))

    elif "ありがと" in text:
        line_bot_api.reply_message(
            event.reply_token, TextSendMessage(text="どういたしまして"+chr(0x100004)))

    elif "こんにちは" in text:
        line_bot_api.reply_message(
            event.reply_token, TextSendMessage(text="こんにちは"+chr(0x100003)))

    elif "バイバイ" in text or "ばいばい" in text or "またね" in text or \
            "さよなら" in text or "さようなら" in text:
        line_bot_api.reply_message(
            event.reply_token, TextSendMessage(text="バイバイ、またね"+chr(0x100003)))

    # 登録されていないメッセージを受信した場合の処理
    else:
        line_bot_api.reply_message(
            event.reply_token, TextSendMessage(text="{}\n{}".format(
                "ごめんね、その言葉はわからないの…"+chr(0x100011),
                "メニューから選んでね"
            ))
        )
Esempio n. 11
0
def handle_text_message(event):
    global cool_pc_data
    # read text from user
    text = event.message.text
    if text == "!我想重來" or text == "!使用教學":
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='好的,沒問題!\n請問您有明確想找的商品嗎?',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(
                        action=MessageAction(label="是", text="!我有明確想找的商品")),
                    QuickReplyButton(
                        action=MessageAction(label="否", text="!我沒有明確想找的商品"))
                ])))
    elif text == "!我有明確想找的商品":
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='請問您曉得確切的商品名稱嗎?',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(
                        action=MessageAction(label="是", text="!我知道我想找的商品名稱")),
                    QuickReplyButton(
                        action=MessageAction(label="否", text="!我不知道我想找的商品名稱")),
                    QuickReplyButton(
                        action=MessageAction(label="重來", text="!我想重來"))
                ])))
    elif text == "!我沒有明確想找的商品":
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='那麼您有特別想了解的商品類別嗎?例如:處理器 CPU',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(
                        action=MessageAction(label="是", text="!我有想了解的商品類別")),
                    QuickReplyButton(action=MessageAction(
                        label="否", text="!我沒有特別想了解的商品類別")),
                    QuickReplyButton(
                        action=MessageAction(label="重來", text="!我想重來"))
                ])))
    elif text == "!我有想了解的商品類別" or text == '!我想看第一頁的分類':
        # update data
        soup = CoolPcCrawler.get_response()
        cool_pc_data = CoolPcCrawler.get_data(soup)
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='愛你所擇,擇你所愛。',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(action=MessageAction(
                        label=dataset[0], text="!我想查看分類 {}".format(
                            dataset[0]))) for dataset in cool_pc_data[0:11]
                ] + [
                    QuickReplyButton(action=MessageAction(label="看其他的分類",
                                                          text="!我想看第二頁的分類"))
                ] + [
                    QuickReplyButton(
                        action=MessageAction(label="重來", text="!我想重來"))
                ])))
    elif text == "!我想看第二頁的分類":
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='愛你所擇,擇你所愛。',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(action=MessageAction(
                        label=dataset[0], text="!我想查看分類 {}".format(
                            dataset[0]))) for dataset in cool_pc_data[11:21]
                ] + [
                    QuickReplyButton(
                        action=MessageAction(label="上一頁", text="!我想看第一頁的分類"))
                ] + [
                    QuickReplyButton(
                        action=MessageAction(label="下一頁", text="!我想看第三頁的分類"))
                ] + [
                    QuickReplyButton(
                        action=MessageAction(label="重來", text="!我想重來"))
                ])))
    elif text == "!我想看第三頁的分類":
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='愛你所擇,擇你所愛。',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(action=MessageAction(
                        label=dataset[0], text="!我想查看分類 {}".format(
                            dataset[0]))) for dataset in cool_pc_data[21:]
                ] + [
                    QuickReplyButton(
                        action=MessageAction(label="上一頁", text="!我想看第二頁的分類"))
                ] + [
                    QuickReplyButton(
                        action=MessageAction(label="重來", text="!我想重來"))
                ])))
    elif text == "!我沒有特別想了解的商品類別":
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='那麼您願意參考一下促銷商品嗎?',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(
                        action=MessageAction(label="是", text="!我想參考促銷商品")),
                    QuickReplyButton(
                        action=MessageAction(label="否", text="!我沒有特別想了解促銷商品")),
                    QuickReplyButton(
                        action=MessageAction(label="查看功能選單", text="!我想查看功能選單"))
                ])))
    elif re.match(r"!\u6211\u60f3\u67e5\u770b\u5206\u985e\s",
                  text):  # !我想查看分類\s
        # title = re.sub(r'!\u6211\u60f3\u67e5\u770b\u5206\u985e\s', '', text)
        # for dataset in cool_pc_data:
        #     if title == dataset[0]:
        #         image_carousel_template_message = TemplateSendMessage(
        #             alt_text='ImageCarousel template', template=ImageCarouselTemplate(columns=[
        #                 ImageCarouselColumn(
        #                     image_url=CoolPcCrawler.get_feebee_image(' '.join(re.findall(
        #                         re.compile(u"[\u4e00-\u9fa5a-zA-Z0-9]+"), dataset[-1][0]))),
        #                     action=PostbackAction(
        #                         label='GG',
        #                         display_text='postback text1',
        #                         data='action=buy&itemid=1'
        #                     )
        #                 ),
        #                 ImageCarouselColumn(
        #                     image_url='https://a32ac8b205b1.ap.ngrok.io/images?name=panda.jpg',
        #                     action=PostbackAction(
        #                         label='看日出',
        #                         display_text='postback text2',
        #                         data='action=buy&itemid=2'
        #                     )
        #                 )
        #             ]))
        #         line_bot_api.reply_message(event.reply_token, image_carousel_template_message)
        image_carousel_template_message = TemplateSendMessage(
            alt_text='ImageCarousel template',
            template=ImageCarouselTemplate(columns=[
                ImageCarouselColumn(
                    image_url=
                    'https://a32ac8b205b1.ap.ngrok.io/images?name=panda.jpg',
                    action=PostbackAction(label='限制14個字元也太少了吧',
                                          display_text='postback text1',
                                          data='action=buy&itemid=1')),
                ImageCarouselColumn(
                    image_url=
                    'https://a32ac8b205b1.ap.ngrok.io/images?name=panda.jpg',
                    action=PostbackAction(label='測試',
                                          display_text='postback text2',
                                          data='action=buy&itemid=2'))
            ]))
        line_bot_api.reply_message(event.reply_token,
                                   image_carousel_template_message)

    elif re.match(r"!限時下殺", text):  # 限時下殺
        soup = CoolPcCrawler.get_response()
        cool_pc_data = CoolPcCrawler.get_data(soup)
        limited_sale = []
        for dataset in cool_pc_data:
            limited_sale += dataset[3]
        if re.match(r"!限時下殺$", text):
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(
                    text='愛你所擇,擇你所愛。',
                    quick_reply=QuickReply(items=[
                        QuickReplyButton(
                            action=MessageAction(label="第{}頁".format(i + 1),
                                                 text="!限時下殺{}".format(i + 1)))
                        for i in range(0, math.ceil(len(limited_sale) / 5))
                    ])))
        elif re.match(r"!限時下殺\d+$", text):
            index = int(re.sub("!限時下殺", "", text))
            try:
                line_bot_api.reply_message(event.reply_token, [
                    TextSendMessage(limited_sale[i - 1])
                    for i in range(((index - 1) * 5), index * 5)
                ])
            except IndexError:
                last_index = (index - 1) * 5
                try:
                    line_bot_api.reply_message(event.reply_token, [
                        TextSendMessage(limited_sale[i - 1])
                        for i in range(last_index, last_index +
                                       len(limited_sale) % 5)
                    ])
                except IndexError:
                    line_bot_api.reply_message(
                        event.reply_token,
                        TextSendMessage(text="好像哪裡怪怪的哦,請重新查詢看看"))
        else:
            line_bot_api.reply_message(
                event.reply_token, TextSendMessage(text="好像哪裡怪怪的哦,請重新查詢看看"))
    elif re.match(r"!熱賣商品", text):  # 熱賣商品
        soup = CoolPcCrawler.get_response()
        cool_pc_data = CoolPcCrawler.get_data(soup)
        if re.match(r"!熱賣商品$", text) or not re.match(r"!熱賣商品:\s", text):
            if text == "!熱賣商品!第一頁" or text == "!熱賣商品":
                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(
                        text='愛你所擇,擇你所愛。',
                        quick_reply=QuickReply(items=[
                            QuickReplyButton(action=MessageAction(
                                label=dataset[0],
                                text="!熱賣商品: {}".format(dataset[0])))
                            for dataset in cool_pc_data[0:11]
                        ] + [
                            QuickReplyButton(action=MessageAction(
                                label="看其他的分類", text="!熱賣商品!第二頁"))
                        ] + [
                            QuickReplyButton(
                                action=MessageAction(label="重來", text="!我想重來"))
                        ])))
            elif text == "!熱賣商品!第二頁":
                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(
                        text='愛你所擇,擇你所愛。',
                        quick_reply=QuickReply(items=[
                            QuickReplyButton(action=MessageAction(
                                label=dataset[0],
                                text="!熱賣商品: {}".format(dataset[0])))
                            for dataset in cool_pc_data[11:21]
                        ] + [
                            QuickReplyButton(action=MessageAction(
                                label="上一頁", text="!熱賣商品!第一頁"))
                        ] + [
                            QuickReplyButton(action=MessageAction(
                                label="下一頁", text="!熱賣商品!第三頁"))
                        ] + [
                            QuickReplyButton(
                                action=MessageAction(label="重來", text="!我想重來"))
                        ])))
            elif text == "!熱賣商品!第三頁":
                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(
                        text='愛你所擇,擇你所愛。',
                        quick_reply=QuickReply(items=[
                            QuickReplyButton(action=MessageAction(
                                label=dataset[0],
                                text="!熱賣商品: {}".format(dataset[0])))
                            for dataset in cool_pc_data[21:]
                        ] + [
                            QuickReplyButton(action=MessageAction(
                                label="上一頁", text="!熱賣商品!第二頁"))
                        ] + [
                            QuickReplyButton(
                                action=MessageAction(label="重來", text="!我想重來"))
                        ])))
            else:
                line_bot_api.reply_message(event.reply_token,
                                           TextSendMessage(text='阿鬼說中文'))
        elif re.match(r"!熱賣商品:\s", text):
            sample_items = []
            try:
                for dataset in cool_pc_data:
                    if re.sub(r"\s", "",
                              dataset[0]) == re.sub(r"!熱賣商品:|\s", "", text):
                        sample_items = random.sample(dataset[4], k=5)
                        break
                if sample_items:
                    line_bot_api.reply_message(event.reply_token, [
                        TextSendMessage(text=item)
                        for item in sample_items[:-1]
                    ] + [
                        TextSendMessage(
                            text=sample_items[-1],
                            quick_reply=QuickReply(items=[
                                QuickReplyButton(action=MessageAction(
                                    label="顯示更多", text=text))
                            ]))
                    ])
                else:
                    # print('no data matched')
                    raise IndexError
            except IndexError:
                line_bot_api.reply_message(
                    event.reply_token, TextSendMessage(text="好像怪怪的哦,請重新查詢看看"))
        else:
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text="好像怪怪的哦,請重新查詢看看"))
    elif re.match(r"!價格異動", text):  # 價格異動
        soup = CoolPcCrawler.get_response()
        cool_pc_data = CoolPcCrawler.get_data(soup)
        if re.match(r"!價格異動$", text) or not re.match(r"!價格異動:\s", text):
            if text == '!價格異動!第一頁' or text == "!價格異動":
                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(
                        text='愛你所擇,擇你所愛。',
                        quick_reply=QuickReply(items=[
                            QuickReplyButton(action=MessageAction(
                                label=dataset[0],
                                text="!價格異動: {}".format(dataset[0])))
                            for dataset in cool_pc_data[0:11]
                        ] + [
                            QuickReplyButton(action=MessageAction(
                                label="看其他的分類", text="!價格異動!第二頁"))
                        ] + [
                            QuickReplyButton(
                                action=MessageAction(label="重來", text="!我想重來"))
                        ])))
            elif text == "!價格異動!第二頁":
                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(
                        text='愛你所擇,擇你所愛。',
                        quick_reply=QuickReply(items=[
                            QuickReplyButton(action=MessageAction(
                                label=dataset[0],
                                text="!價格異動: {}".format(dataset[0])))
                            for dataset in cool_pc_data[11:21]
                        ] + [
                            QuickReplyButton(action=MessageAction(
                                label="上一頁", text="!價格異動!第一頁"))
                        ] + [
                            QuickReplyButton(action=MessageAction(
                                label="下一頁", text="!價格異動!第三頁"))
                        ] + [
                            QuickReplyButton(
                                action=MessageAction(label="重來", text="!我想重來"))
                        ])))
            elif text == "!價格異動!第三頁":
                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(
                        text='愛你所擇,擇你所愛。',
                        quick_reply=QuickReply(items=[
                            QuickReplyButton(action=MessageAction(
                                label=dataset[0],
                                text="!價格異動: {}".format(dataset[0])))
                            for dataset in cool_pc_data[21:]
                        ] + [
                            QuickReplyButton(action=MessageAction(
                                label="上一頁", text="!價格異動!第二頁"))
                        ] + [
                            QuickReplyButton(
                                action=MessageAction(label="重來", text="!我想重來"))
                        ])))
            else:
                line_bot_api.reply_message(event.reply_token,
                                           TextSendMessage(text='阿鬼說中文'))
        elif re.match(r"!價格異動:\s", text):
            sample_items = []
            try:
                for dataset in cool_pc_data:
                    if re.sub(r"\s", "",
                              dataset[0]) == re.sub(r"!價格異動:|\s", "", text):
                        sample_items = random.sample(dataset[5], k=5)
                        break
                if sample_items:
                    line_bot_api.reply_message(event.reply_token, [
                        TextSendMessage(text=item)
                        for item in sample_items[:-1]
                    ] + [
                        TextSendMessage(
                            text=sample_items[-1],
                            quick_reply=QuickReply(items=[
                                QuickReplyButton(action=MessageAction(
                                    label="顯示更多", text=text))
                            ]))
                    ])
                else:
                    raise IndexError
            except IndexError:
                line_bot_api.reply_message(
                    event.reply_token, TextSendMessage(text="好像怪怪的哦,請重新查詢看看"))
        else:
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text="好像怪怪的哦,請重新查詢看看"))

    elif re.match(r"^\?", text) or re.match(r"^\uff1f", text):
        soup = CoolPcCrawler.get_response()
        _all_data = CoolPcCrawler.get_all_data(soup)
        _keyword_list = re.sub(r"[??]", "", text).split(' ')
        _keyword_list.reverse()

        # do something for searching
        def keyword_mapping(keyword_list, all_data):
            if not keyword_list:
                return all_data
            else:
                pop = keyword_list.pop()
                all_data = [data for data in all_data if pop in data]
                return keyword_mapping(keyword_list, all_data)

        result_list = keyword_mapping(_keyword_list, _all_data)

        if result_list:
            if len(result_list) >= 5:
                line_bot_api.reply_message(event.reply_token, [
                    TextSendMessage(text=result)
                    for result in random.sample(result_list, k=5)
                ])
            else:
                line_bot_api.reply_message(event.reply_token, [
                    TextSendMessage(text=result)
                    for result in random.sample(result_list,
                                                k=len(result_list))
                ])
        else:
            try:
                data_tuple = CoolPcCrawler.get_feebee_result(
                    re.sub(r"[??]", "", text))
                image_name = ''.join(re.findall(u"[a-zA-Z0-9]+",
                                                data_tuple[0]))
                image_url = "https://dfba704bd8c0.ap.ngrok.io/images?name={}.jpg".format(
                    image_name)
                messages = '{} ${}'.format(data_tuple[0], data_tuple[1])
                # image_url = "https://dfba704bd8c0.ap.ngrok.io/images?name=panda.jpg"
                if data_tuple:
                    line_bot_api.reply_message(event.reply_token, [
                        TextSendMessage(text="找不到商品哦\n以下是網路上的查詢結果。"),
                        ImageSendMessage(original_content_url=image_url,
                                         preview_image_url=image_url),
                        TextSendMessage(text=messages)
                    ])
                else:
                    line_bot_api.reply_message(event.reply_token,
                                               TextSendMessage(text="找不到商品哦"))
            except Exception as e:
                print(e)
                line_bot_api.reply_message(event.reply_token,
                                           TextSendMessage(text="找不到商品哦"))

    elif not re.match("!", text) and not re.match(
            r"^\?", text) and not re.match(r"^\uff1f", text):
        response = chat_bot.get_response(text)
        response_data = response.serialize()
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=response_data['text']))
    else:
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text="功能尚未開放哦!\n支付1+1份大薯以解鎖進階功能"))
def test(questiontype, user_id, questionid):
    #由於只有100題,所以超過之後回傳一個訊息
    if (questionid == '101'):
        #並將它歸零
        redis.hmset(user_id, {
            'result': 0,
            "total": 0,
            "sa_qid": 0,
            "dev_qid": 0,
            "sys_qid": 0
        })

        #回覆訊息
        reply_message_list = [
            TextSendMessage(
                text=
                "Congratulation!!!!\nYou already finish 100 question about %s"
                % (questiontype)),
        ]
        return reply_message_list
    else:
        # question_id沒問題後取得指定的考題資訊
        a = answer(questiontype, questionid)
        #這邊使用quick reply的方式,QuickReply算是一種TextSendMessage
        quickreply = TextSendMessage(
            text='Choose your answer:',
            quick_reply=QuickReply(items=[
                QuickReplyButton(
                    #使用postback action類似按鈕的概念
                    action=PostbackAction(
                        label="A",
                        #使用了data裝query string的方式,一次裝多個變數
                        #這邊使用true_answer()來幫助取得result的值(判斷對或錯)
                        data=
                        "type=answer&question_type=%s&question_id=%s&result=%s"
                        % (questiontype, questionid, true_answer(a, 'A')),
                        #按了按鈕之後的會有的回覆
                        text='choose:A')),
                QuickReplyButton(action=PostbackAction(
                    label="B",
                    data="type=answer&question_type=%s&question_id=%s&result=%s"
                    % (questiontype, a['question_id'], true_answer(a, 'B')),
                    text='choose:B')),
                QuickReplyButton(action=PostbackAction(
                    label="C",
                    data="type=answer&question_type=%s&question_id=%s&result=%s"
                    % (questiontype, a['question_id'], true_answer(a, 'C')),
                    text='choose:C')),
                QuickReplyButton(action=PostbackAction(
                    label="D",
                    data="type=answer&question_type=%s&question_id=%s&result=%s"
                    % (questiontype, a['question_id'], true_answer(a, 'D')),
                    text='choose:D'))
            ]))
        #包裝一個回傳的list
        reply_message_list = [
            # 考題的題目
            TextSendMessage(text=a["question_content"]),
            # 考題的選項
            TextSendMessage(
                text=a["answer1_content"] + "\n\n" + a["answer2_content"] +
                "\n\n" + a["answer3_content"] + "\n\n" + a["answer4_content"]),
            #回傳quick reply選單
            quickreply
        ]
        return reply_message_list
Esempio n. 13
0
line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(YOUR_CHANNEL_SECRET)

list_displayer = LineListDisplayer()
random_extractor = RandomlyStationExtractor()
center_calculator = CenterStationCalculator()

DISPLAY = 'display_line_list'
RANDOM = 'extract_station_randomly'
CENTER = 'calculate_center_station'
CAROUSEL_TEMPLATE = TemplateSendMessage(
    alt_text='Carousel template',
    template=CarouselTemplate(columns=[
        CarouselColumn(title='路線一覧',
                       text='都道府県の路線一覧を表示します。',
                       actions=[PostbackAction(label='都道府県を入力', data=DISPLAY)
                                ]),
        CarouselColumn(
            title='駅名選択',
            text='指定した都道府県/路線からランダムに一駅選びます。',
            actions=[PostbackAction(label='都道府県/路線を入力', data=RANDOM)]),
        CarouselColumn(title='中間地点',
                       text='指定した駅の中間地点にある駅を算出します。',
                       actions=[PostbackAction(label='駅を入力', data=CENTER)])
    ]))


@app.route("/callback", methods=['POST'])
def callback():
    # get X-Line-Signature header value
    signature = request.headers['X-Line-Signature']
Esempio n. 14
0
File: app.py Progetto: Jameshakim1/b
def handle_message(event):
    text = event.message.text  #simplify for receove message
    sender = event.source.user_id  #get user_id
    gid = event.source.sender_id  #get group_id
    try:
        if veri[gid] == True:
            codex[gid] = codex[gid] + 1
    except:
        veri[gid] = False
        codex[gid] = 0
    try:
        if veri[gid] == True:
            if codex[gid] == 5:
                line_bot_api.push_message(
                    gid, TextSendMessage(text="โค้ดหมดอายุแล้ว"))
                veri[gid] = False
                codex[gid] = 0
    except:
        veri[gid] = False
        codex[gid] = 0
    if text.startswith("/verify"):
        try:
            if veri[gid] == True:
                line_bot_api.push_message(
                    gid,
                    TextSendMessage(text="บอทได้รับการยืนยันเรียบร้อยแล้ว"))
            else:
                try:
                    separate = text.split(" ")
                    search = text.replace(separate[0] + " ", "")
                    if search == code[gid]:
                        line_bot_api.push_message(
                            gid, TextSendMessage(text="ยืนยันสำเร็จ"))
                        veri[gid] = True
                    else:
                        line_bot_api.push_message(
                            gid, TextSendMessage(text="โค้ดยืนยันไม่ถูกต้อง"))
                except:
                    return
        except:
            veri[gid] = False
            line_bot_api.push_message(
                gid, TextSendMessage(text="บอทได้รับการยืนยันเรียบร้อยแล้ว"))
    if text.startswith("/"):
        try:
            if veri[gid] == False:
                n = [
                    "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "A", "B",
                    "C", "D", "E", "F", "G"
                ]
                b = ""
                for x in range(5):
                    b += random.choice(n)
                try:
                    code[gid] = b
                    line_bot_api.push_message(
                        gid,
                        TextSendMessage(text="พิพม์ /verify " + code[gid] +
                                        "\nเพื่อยืนยันบอท"))
                    return
                except:
                    code[gid] = b
                    line_bot_api.push_message(
                        gid,
                        TextSendMessage(text="พิพม์ /verify " + code[gid] +
                                        "\nเพื่อยืนยันบอท"))
                    return
        except:
            code[gid] = ""
            veri[gid] = False
            return
    if groupcastt != "no":
        try:
            if groupcast[gid] == False:
                groupcast[gid] = True
                h = "[ ประกาศ ]\n\n" + groupcastt
                line_bot_api.push_message(gid, TextSendMessage(text=h))
        except:
            groupcast[gid] = False
    """if text.startswith("/broadcast"):
        separate = text.split(" ")
        textt = text.replace(separate[0] + " ","")
        if(event.source.user_id == "Udaa0a2f396dd41e4398b106d903d92fd"):
            line_bot_api.reply_message(gid, TextSendMessage(text="ตั้งข้อความประกาศว่า " + textt))
            groupcastt = textt
            groupcast = {}
        else:
            line_bot_api.reply_message(event.reply_token, TextSendMessage(text="ผู้ใช้นี้ไม่ได้รับอนุญาต"))	"""
    #try:
    #    if groupcast[gid] == True:
    #        line_bot_api.push_message(gid, TextSendMessage(text="[ ประกาศ ]\n"+groupcastt))
    #        groupcast[gid] = False
    #    elif groupcast[gid] == False:
    #        groupcast = False
    #    else:
    #        line_bot_api.push_message(gid, TextSendMessage(text="[ ประกาศ ]\n"+groupcastt))
    #        groupcast[gid] = True
    #except Exception as Error:
    #    groupcast[gid] = False
    #    line_bot_api.push_message(gid, TextSendMessage(text="[ ประกาศ ]\n"+groupcastt))
    try:
        if veri[gid] == True:
            if text.isdigit():
                b = int(text)
                reverse = 0
                while (b > 0):
                    reminder = b % 10
                    reverse = (reverse * 10) + reminder
                    b = b // 10
                x = int(text) + 1
                line_bot_api.push_message(gid, TextSendMessage(text=x))
    except:
        veri[gid] = False
    """if text.startswith("/graph"):
        try:
            headers = {"Authorization": "Bearer ya29.GlsMBisE2cNscXj8RW1UP32SVEkIOJ8z1rx4oE2tQGRXxomt1t6rxoM9L11EH3pm5mKK3uIlxfytEuwN3y-4uM0eoMsFo8BjpQglayMH1E-0y5tNW0wwr4MP2nc4"}
            x = [1,2,3]
            y = [2,4,1]
            plt.plot(x, y)
            plt.xlabel('x - axis')
            plt.ylabel('y - axis')
            plt.title('[ By PASUNx ]')
            plt.savefig('b.png', dpi=100)
            para = {
                "name": "b.png",
                "parents": ["1ohcThxOTwMY-wLeP4UWaBTf_Dc7Fyr-b"]
            }
            files = {
                'data': ('metadata', json.dumps(para), 'application/json; charset=UTF-8'),
                'file': open("./b.png", "rb")
            }
            r = requests.post(
                "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart",
                headers=headers,
                files=files
            )
            t = r.json()
            txt = "https://drive.google.com/file/d/" + t["id"] + "/view"
            line_bot_api.push_message(gid, TextSendMessage(text=txt))
        except Exception as Err:
            line_bot_api.push_message(gid, TextSendMessage(text="THIS IS BETA"))"""
    if text.startswith("/weather"):
        weatherurl = 'https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text%3D%22bangkok%2C%20th%22)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys'
        req = requests.get(weatherurl)
        x = req.json()
        aa = x["query"]["results"]["channel"]["location"]
        ab = x["query"]["results"]["channel"]["wind"]
        ac = x["query"]["results"]["channel"]["atmosphere"]
        ad = x["query"]["results"]["channel"]["astronomy"]
        b = aa["city"]
        c = ab["chill"]
        d = ab["direction"]
        e = ab["speed"]
        f = ac["humidity"]
        g = ac["pressure"]
        h = ac["rising"]
        i = ac["visibility"]
        j = ad["sunrise"]
        k = ad["sunset"]
        o = str((int(c) - 32) / 1.8)
        o = o[:o.index('.')]
        txt = "สภาพอากาศ กรุงเทพมหานคร" + "\n──────────────\n"
        txt += "อุณหถูมิ " + o + " ℃"
        txt += "\nลม\nความเย็น " + c
        txt += "\nทิศทาง " + d
        txt += "\nความเร็ว " + e + " mph"
        txt += "\n\nบรรยากาศ\nความชื้น " + f
        txt += "\nความดัน " + g + " in"
        txt += "\nที่เพิ่มสูงขึ้น " + h
        txt += "\nความชัดเจน " + i
        txt += "\n\nพระอาทิตย์ขึ้น " + j
        txt += "\nพระอาทิตย์ตกดิน " + k
        line_bot_api.push_message(gid, TextSendMessage(text=txt))
    if text.startswith("/divide"):
        separate = text.split(" ")
        try:
            t1 = int(text.split(" ")[1])
            t2 = int(text.split(" ")[2])
            txt = str(t1) + " / " + str(t2) + "\n──────────────"
            txt += "\n" + str(t1 / t2)
            line_bot_api.push_message(gid, TextSendMessage(text=txt))
        except:
            line_bot_api.push_message(
                gid,
                TextSendMessage(
                    text="วิธีการใช้งาน:\n/divide [ ตัวเลข ] [ ตัวเลข ]"))
    if text.startswith("/plus"):
        separate = text.split(" ")
        try:
            t1 = int(text.split(" ")[1])
            t2 = int(text.split(" ")[2])
            txt = str(t1) + " + " + str(t2) + "\n──────────────"
            txt += "\n" + str(t1 + t2)
            line_bot_api.push_message(gid, TextSendMessage(text=txt))
        except:
            line_bot_api.push_message(
                gid,
                TextSendMessage(
                    text="วิธีการใช้งาน:\n/plus [ ตัวเลข ] [ ตัวเลข ]"))
    if text.startswith("/minus"):
        separate = text.split(" ")
        try:
            t1 = int(text.split(" ")[1])
            t2 = int(text.split(" ")[2])
            txt = str(t1) + " - " + str(t2) + "\n──────────────"
            txt += "\n" + str(t1 - t2)
            line_bot_api.push_message(gid, TextSendMessage(text=txt))
        except:
            line_bot_api.push_message(
                gid,
                TextSendMessage(
                    text="วิธีการใช้งาน:\n/minus [ ตัวเลข ] [ ตัวเลข ]"))
    if text.startswith("/sqrt"):
        separate = text.split(" ")
        try:
            m = int(text.replace(separate[0] + " ", ""))
            txt = "สแควรูท " + str(m) + "\n──────────────"
            txt += "\n" + str(math.sqrt(m))
            line_bot_api.push_message(gid, TextSendMessage(text=txt))
        except:
            line_bot_api.push_message(
                gid, TextSendMessage(text="วิธีการใช้งาน:\n/sql [ ตัวเลข ]"))

    if text.startswith("/mtpt"):
        separate = text.split(" ")
        try:
            m = int(text.replace(separate[0] + " ", ""))
            txt = "สูตรคูณแม่ " + str(m) + "\n──────────────"
            for i in range(12):
                x = i + 1
                txt += "\n" + str(m) + " * " + str(x) + " = " + str(m * x)
            line_bot_api.push_message(gid, TextSendMessage(text=txt))
        except:
            line_bot_api.push_message(
                gid, TextSendMessage(text="วิธีการใช้งาน:\n/mtpt [ ตัวเลข ]"))
    elif text.startswith("/mtp"):
        separate = text.split(" ")
        try:
            t1 = int(text.split(" ")[1])
            t2 = int(text.split(" ")[2])
            txt = str(t1) + " * " + str(t2) + "\n──────────────"
            txt += "\n" + str(t1 * t2)
            line_bot_api.push_message(gid, TextSendMessage(text=txt))
        except:
            line_bot_api.push_message(
                gid,
                TextSendMessage(
                    text="วิธีการใช้งาน:\n/mtp [ ตัวเลข ] [ ตัวเลข ]"))
    if text.startswith("/spam "):
        separate = text.split(" ")
        texxt = text.replace(separate[0] + " ", "")
        textt = texxt.replace(separate[1] + " ", "")
        textx = "จำนวน " + separate[1] + "\nข้อความ " + textt
        line_bot_api.push_message(gid, TextSendMessage(text=textx))
        try:
            x = int(separate[1])
            if x < 21:
                for i in range(x):
                    line_bot_api.push_message(gid, TextSendMessage(text=textt))
            else:
                line_bot_api.push_message(
                    gid,
                    TextSendMessage(text="ไม่สามารถสแปมมากกว่า 20 ข้อความได้"))
        except:
            pass
    if text == "/group":
        member_ids_res = line_bot_api.get_group_member_ids(group_id)
        line_bot_api.push_message(gid, member_ids_res.member_ids)
        line_bot_api.push_message(gid, member_ids_res.next)
    if text.startswith("/yt"):
        separate = text.split(" ")
        search = text.replace(separate[0] + " ", "")
        url = requests.get(
            "http://api.w3hills.com/youtube/search?keyword={}&api_key=86A7FCF3-6CAF-DEB9-E214-B74BDB835B5B"
            .format(search))
        data = url.json()
        no = 0
        result = "ยูทูป ( ค้นหา " + search + " )\n──────────────"
        for anu in data["videos"]:
            no += 1
            result += "\n{}. {}\n{}\n".format(str(no), str(anu["title"]),
                                              str(anu["webpage"]))
        result += "\nทั้งหมด {}".format(str(len(data["videos"])))
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=result))
    if text.startswith("/news"):
        try:
            separate = text.split(" ")
            country = text.replace(separate[0] + " ", "")
            if (country == None): country == "th"
            user_agent = {'User-agent': 'Mozilla/5.0'}
            url = requests.get(
                "https://newsapi.org/v2/top-headlines?country={}&apiKey=763b6fc67a594a4e9e0f9d29303f83dd"
                .format(country))
            data = url.json()
            result = "ข่าวใหม่ ( " + country.upper(
            ) + " )" + "\n──────────────"
            n = 0
            for anu in data["articles"]:
                if len(result) > 500:
                    result += "\nทั้งหมด {}".format(n)
                    line_bot_api.reply_message(event.reply_token,
                                               TextSendMessage(text=result))
                else:
                    n = n + 1
                    result += "\n" + anu["title"] + "\n" + anu["url"] + "\n"
            result += "\nทั้งหมด {}".format(n)
            line_bot_api.push_message(gid, TextSendMessage(text=result))
        except Exception as Error:
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text=Error))
    if text.startswith("/share"):
        quandl.ApiConfig.api_key = 'sSGoP_R7-sNMXusmJr7p'
        data = quandl.get("THAISE/INDEX")
        line_bot_api.push_message(gid, TextSendMessage(text=data))
    if text.startswith("/snews"):
        separate = text.split(" ")
        searchx = text.replace(separate[0] + " ", "")
        search = searchx
        gs = goslate.Goslate()
        search = gs.translate(searchx, 'en')
        r = requests.get("http://www.google.co.th/search?q=" + search +
                         "&tbm=nws")
        content = r.text
        news_summaries = []
        soup = BeautifulSoup(content, "html.parser")
        st_divs = soup.findAll("div", {"class": "st"})
        g_divs = soup.findAll("div", {"class": "g"})
        trs = "ข่าวเกี่ยวกับ " + searchx + "\n──────────────"
        news_d = []
        for g_div in g_divs:
            news_d.append(g_div.text)
        for st_div in st_divs:
            news_summaries.append(st_div.text)
        for i in news_summaries:
            for x in news_d:
                try:
                    if len(trs) > 600:
                        line_bot_api.reply_message(event.reply_token,
                                                   TextSendMessage(text=trs))
                    else:
                        gs = goslate.Goslate()
                        x = gs.translate(x, 'th')
                        trs += "\n\n" + x + "\nอ่านเพิ่มเติมได้ที่"
                except Exception as error:
                    line_bot_api.reply_message(event.reply_token,
                                               TextSendMessage(text=error))
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=trs))
    if text == "/bye":
        if (event.source.user_id == "Udaa0a2f396dd41e4398b106d903d92fd"):
            confirm_template_message = TemplateSendMessage(
                alt_text='God message',
                template=ConfirmTemplate(text='จะลบบอทออก? คุณแน่ใจหรือ?',
                                         actions=[
                                             PostbackAction(
                                                 label='แน่ใจ',
                                                 text='goodbye',
                                                 data='action=buy&itemid=1'),
                                             MessageAction(label='ไม่',
                                                           text='...')
                                         ]))
            line_bot_api.reply_message(event.reply_token,
                                       confirm_template_message)
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text="ผู้ใช้นี้ไม่ได้รับอนุญาต"))
    if "/ti/g/" in text:
        link_re = re.compile(
            '(?:line\:\/|line\.me\/R)\/ti\/g\/([a-zA-Z0-9_-]+)?')
        links = link_re.findall(text)
        n_links = []
        for l in links:
            if l not in n_links:
                n_links.append(l)
        for ticket_id in n_links:
            line_bot_api.push_message(gid, TextSendMessage(text="Joined"))
            line_bot_api.acceptGroupInvitationByTicket(gid, ticket_id)
    if text == '/contact':
        buttons_template_message = TemplateSendMessage(
            alt_text='God message',
            template=ButtonsTemplate(
                thumbnail_image_url=
                'https://gamingroom.co/wp-content/uploads/2017/11/CyCYOArUoAA2T6d.jpg',
                title='ติดต่อ',
                text='ช่องทางการติดต่อ',
                actions=[
                    PostbackAction(label='ไลน์',
                                   text='http://line.me/ti/p/~esci_',
                                   data='action=buy&itemid=1'),
                    MessageAction(label="เฟซบุ๊ค",
                                  text='https://www.facebook.com/pasun.cf'),
                    URIAction(label='ติดต่อ', uri='http://line.me/ti/p/~esci_')
                ]))
        line_bot_api.push_message(gid, buttons_template_message)
    if '/wiki ' in text:
        try:
            wiki = text.replace("/wiki ", "")
            wikipedia.set_lang("th")
            pesan = "วิกิพีเดียเกี่ยวกับ "
            pesan += wikipedia.page(wiki).title
            pesan += "\n\n"
            pesan += wikipedia.summary(wiki, sentences=1)
            pesan += "\n\nอ่านเพิ่มเติม\n"
            pesan += wikipedia.page(wiki).url
            titlex = wikipedia.page(wiki).title
            textx = wikipedia.summary(wiki, sentences=1)
            urlx = wikipedia.page(wiki).url
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text=pesan))
        except:
            try:
                pesan = "เกินขีด จำกัด ข้อความ! โปรดคลิกลิงก์ข้างล่างเพื่ออ่านเพิ่มเติม\n"
                pesan += wikipedia.page(wiki).url
                line_bot_api.reply_message(event.reply_token,
                                           TextSendMessage(text=pesan))
            except Exception as e:
                line_bot_api.reply_message(event.reply_token,
                                           TextSendMessage(text=str(e)))
    if text == "/kick":
        line_bot_api.kickoutFromGroup(0, gid,
                                      "Udaa0a2f396dd41e4398b106d903d92fd")
    if text == "/profile":
        profile = line_bot_api.get_profile(event.source.user_id)
        line_bot_api.push_message(gid,
                                  TextSendMessage(text=event.source.user_id))
        line_bot_api.push_message(gid,
                                  TextSendMessage(text=profile.display_name))
        line_bot_api.push_message(gid,
                                  TextSendMessage(text=profile.status_message))
        line_bot_api.push_message(gid,
                                  TextSendMessage(text=profile.picture_url))
    if text == '/id':
        profile = line_bot_api.get_profile(event.source.user_id)
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.display_name))
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=event.source.user_id))
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.picture_url))
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.status_message))
    if text == '/bio':
        profile = line_bot_api.get_profile(event.source.user_id)
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.display_name))
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=event.source.user_id))
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.picture_url))
        line_bot_api.reply_message(
            event.reply_token, TextSendMessage(text=profile.status_message))
    if text == '/pic':
        profile = line_bot_api.get_profile(event.source.user_id)
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.display_name))
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=event.source.user_id))
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=profile.picture_url))
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.status_message))
    if text == '/name':
        profile = line_bot_api.get_profile(event.source.user_id)
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=profile.display_name))
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=event.source.user_id))
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.picture_url))
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.status_message))
    if text == 'goodbye':
        if (event.source.user_id == "Udaa0a2f396dd41e4398b106d903d92fd"):
            if isinstance(event.source, SourceGroup):
                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(text='กำลังออกกลุ่ม...'))
                line_bot_api.leave_group(event.source.group_id)
            elif isinstance(event.source, SourceRoom):
                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(text='กำลังออกกลุ่ม...'))
                line_bot_api.leave_room(event.source.room_id)
            else:
                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(text="บอทไม่สามารถออกแชท 1:1 ได้"))

    elif "/idline " in event.message.text:
        skss = event.message.text.replace('/idline ', '')
        sasa = "http://line.me/R/ti/p/~" + skss
        text_message = TextSendMessage(text=sasa)
        line_bot_api.reply_message(event.reply_token, text_message)
    elif text.startswith('/check'):
        originURLx = text.split(" ")
        originURL = text.replace(originURLx[0] + " ", "")
        result = requests.get(
            "http://shorturlbyzefyrinusx.000webhostapp.com/api/check.php?id=" +
            originURL + "&type=api").text
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=result))
    elif text.startswith('/shorturl'):
        originURLx = text.split(" ")
        originURL = text.replace(originURLx[0] + " ", "")
        result = requests.get(
            "http://shorturlbyzefyrinusx.000webhostapp.com/api/urlshorten.php?url="
            + originURL).text
        buttons_template_message = TemplateSendMessage(
            alt_text='God message',
            template=ButtonsTemplate(
                thumbnail_image_url=
                'https://gamingroom.co/wp-content/uploads/2017/11/CyCYOArUoAA2T6d.jpg',
                title='RESULT',
                text=result,
                actions=[
                    PostbackAction(label='ข้อมูล URL',
                                   text='/check ' + result,
                                   data='action=buy&itemid=1'),
                    MessageAction(label="URL", text=result),
                    URIAction(label='เปิด URL', uri=result)
                ]))
        line_bot_api.reply_message(event.reply_token, buttons_template_message)

    elif '/help' == text:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=helpmessage))

    elif '/test' == text:
        buttons_template_message = TemplateSendMessage(
            alt_text='Buttons template',
            template=ButtonsTemplate(
                thumbnail_image_url='https://example.com/image.jpg',
                title='Menu',
                text='God message',
                actions=[
                    PostbackAction(label='postback',
                                   text='postback text',
                                   data='action=buy&itemid=1'),
                    MessageAction(label='message', text='message text'),
                    URIAction(label='uri', uri='http://example.com/')
                ]))
        line_bot_api.reply_message(event.reply_token,
                                   image_carousel_template_message)
Esempio n. 15
0
def handle_text_message(event):
    text = event.message.text
    if text == 'Hello':
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage('Hi There!!'))
    elif text.lower() == 'getridch':
        carousel_template = CarouselTemplate(columns=[
            CarouselColumn(
                text='What you can do',
                title='Seller',
                actions=[
                    CameraAction(label='Take a photo'),
                    # CameraRollAction(label='Choose a photo'),
                ]),
            CarouselColumn(
                text='What you can do',
                title='Buyer',
                actions=[
                    PostbackAction(label='Get near by trash',
                                   data='getNearbyLocation',
                                   text='Show location'),
                    # MessageAction(label='Translate Rice', text='米')
                ]),
        ])
        template_message = TemplateSendMessage(alt_text='Carousel alt text',
                                               template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'menu':
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='Quick reply',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(action=PostbackAction(label="getridch",
                                                           data="getridch")),
                    QuickReplyButton(action=CameraAction(label="Camera")),
                    QuickReplyButton(action=CameraRollAction(
                        label="Camera Roll")),
                    QuickReplyButton(action=LocationAction(label="Location")),
                    QuickReplyButton(action=DatetimePickerAction(
                        label="Date", data="data3", mode="date")),
                ])))
    elif 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.user_id))
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(
                    text="Bot can't use profile API without user ID"))
    elif text == 'flex':
        bubble = BubbleContainer(
            direction='ltr',
            hero=ImageComponent(url='https://example.com/cafe.jpg',
                                size='full',
                                aspect_ratio='20:13',
                                aspect_mode='cover',
                                action=URIAction(uri='http://example.com',
                                                 label='label')),
            body=BoxComponent(
                layout='vertical',
                contents=[
                    # title
                    TextComponent(text='Brown Cafe', weight='bold', size='xl'),
                    # review
                    BoxComponent(
                        layout='baseline',
                        margin='md',
                        contents=[
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/grey_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/grey_star.png'),
                            TextComponent(text='4.0',
                                          size='sm',
                                          color='#999999',
                                          margin='md',
                                          flex=0)
                        ]),
                    # info
                    BoxComponent(
                        layout='vertical',
                        margin='lg',
                        spacing='sm',
                        contents=[
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='Place',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(text='Shinjuku, Tokyo',
                                                  wrap=True,
                                                  color='#666666',
                                                  size='sm',
                                                  flex=5)
                                ],
                            ),
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='Time',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(
                                        text="10:00 - 23:00",
                                        wrap=True,
                                        color='#666666',
                                        size='sm',
                                        flex=5,
                                    ),
                                ],
                            ),
                        ],
                    )
                ],
            ),
            footer=BoxComponent(
                layout='vertical',
                spacing='sm',
                contents=[
                    # callAction, separator, websiteAction
                    SpacerComponent(size='sm'),
                    # callAction
                    ButtonComponent(
                        style='link',
                        height='sm',
                        action=URIAction(label='CALL', uri='tel:000000'),
                    ),
                    # separator
                    SeparatorComponent(),
                    # websiteAction
                    ButtonComponent(style='link',
                                    height='sm',
                                    action=URIAction(
                                        label='WEBSITE',
                                        uri="https://example.com"))
                ]),
        )
        message = FlexSendMessage(alt_text="hello", contents=bubble)
        line_bot_api.reply_message(event.reply_token, message)
    elif text == 'confirm':
        confirm_template = ConfirmTemplate(text='Do it?',
                                           actions=[
                                               MessageAction(label='Yes',
                                                             text='Yes!'),
                                               MessageAction(label='No',
                                                             text='No!')
                                           ])
        template_message = TemplateSendMessage(alt_text='Confirm alt text',
                                               template=confirm_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'list':
        carousel_template = CarouselTemplate(columns=[
            CarouselColumn(text='What you can do',
                           title='Seller',
                           actions=[
                               CameraAction(label='Take a photo'),
                               PostbackAction(label='ping', data='ping')
                           ]),
            CarouselColumn(text='Options',
                           title='Buyer',
                           actions=[
                               PostbackAction(label='Test ping with text',
                                              data='ping',
                                              text='ping'),
                               MessageAction(label='Translate Rice', text='米')
                           ]),
        ])
        template_message = TemplateSendMessage(alt_text='Carousel alt text',
                                               template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'KBTG':
        confirm_template = ConfirmTemplate(text='Confirm Address : KBTG ?',
                                           actions=[
                                               PostbackAction(
                                                   label='Confirm',
                                                   data='cfaddress'),
                                               PostbackAction(label='cancel',
                                                              data='getridch',
                                                              text='cancel'),
                                           ])
        template_message = TemplateSendMessage(alt_text='Confirm alt text',
                                               template=confirm_template)
        line_bot_api.reply_message(event.reply_token, template_message)
Esempio n. 16
0
def get_result(user_id):
    return QuickReply(items=[
        QuickReplyButton(action=PostbackAction(label="查看結果", data=user_id)),
        QuickReplyButton(action=MessageAction(label="不看了", text="不看了")),
    ])
Esempio n. 17
0
def handle_text_message(event):
    text = event.message.text

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

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

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

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

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

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

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

    else:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=event.message.text))
Esempio n. 18
0
def handle_postback(event):
    reply_token = event.reply_token
    user_id = event.source.user_id
    data = event.postback.data
    if data == '開立投信帳戶(1-4項)':
        buttons_template = ButtonsTemplate(
            title='野村開立投信帳戶表單。',
            text='親愛的投資朋友,您好:開立投信帳戶將包含以下1-4的表單。',
            actions=[
                PostbackAction(label='表一, 開戶申請書', data='開戶申請書'),
                PostbackAction(label='表二, 投資人風險屬性評估表', data='投資人風險屬性評估表'),
                PostbackAction(label='表三, 自我證明表', data='自我證明表'),
                PostbackAction(label='表四, 個人資料相關告知事項',
                               data='蒐集、處理及利用個人資料告知事項'),
            ])
        template_message = TemplateSendMessage(
            alt_text='野村投信您好!這是我們野村開立投信帳戶表單。', template=buttons_template)
        line_bot_api.reply_message(reply_token, template_message)
    elif data == '開立投信帳戶(5-6項)':
        buttons_template = ButtonsTemplate(
            title='野村開立投信帳戶表單。',
            text='親愛的投資朋友,您好:開立投信帳戶將包含以下5-6的表單。',
            actions=[
                PostbackAction(label='表五, 投信身分證明文件聲明書', data='野村投信身分證明文件聲明書'),
                PostbackAction(label='表六, 投信基金扣款轉帳授權書', data='投信基金扣款轉帳授權書'),
            ])
        template_message = TemplateSendMessage(
            alt_text='野村投信您好!這是我們野村開立投信帳戶表單。', template=buttons_template)
        line_bot_api.reply_message(reply_token, template_message)
    elif data == '開立投信+境外帳戶':
        buttons_template = ButtonsTemplate(
            title='野村開立投信帳戶+境外帳戶。',
            text='親愛的投資朋友,您好:請先確認您已填寫開立投信帳戶表單, 再進行以下流程:',
            actions=[
                PostbackAction(label='我尚未填寫野村開立投信帳戶表單', data='開立投信帳戶(1-4項)'),
                # PostbackAction(label='我尚未填寫野村開立投信帳戶表單(5-6)', data='開立投信帳戶(5-6項)'),
                PostbackAction(label='我已填寫野村開立投信帳戶表單', data='境外帳戶')
            ])
        template_message = TemplateSendMessage(alt_text='野村投信您好!我們將進行境外帳戶的流程。',
                                               template=buttons_template)
        line_bot_api.reply_message(reply_token, template_message)
    elif data == '境外帳戶':
        buttons_template = ButtonsTemplate(
            title='野村開立境外帳戶。',
            text='親愛的投資朋友,您好:開立野村境外帳戶需填寫以下表單。',
            actions=[
                PostbackAction(label='表七, 境外基金帳授權書(外幣)', data='境外基金授權書(外幣)'),
                PostbackAction(label='表八, 境外基金授權書(台幣)', data='境外基金授權書(台幣)')
            ])
        template_message = TemplateSendMessage(
            alt_text='野村投信您好!這是我們野村開立境外帳戶表單。', template=buttons_template)
        line_bot_api.reply_message(reply_token, template_message)
    elif data == '舊戶升級加開境外帳戶':
        buttons_template = ButtonsTemplate(
            title='舊戶升級加開境外帳戶。',
            text='親愛的投資朋友,您好:欲辦理舊戶升級加開境外帳戶,請依循下列方式:',
            actions=[
                PostbackAction(label='請填寫服務異動申請書', data='請填寫服務異動申請書'),
                PostbackAction(label='請洽客服專線索取申請書', data='請洽客服專線索取申請書')
            ])
        template_message = TemplateSendMessage(
            alt_text='野村投信您好!這是我們野村舊戶升級加開境外帳戶流程。', template=buttons_template)
        line_bot_api.reply_message(reply_token, template_message)
    elif data == '開戶申請書':
        line_bot_api.push_message(
            user_id, TextSendMessage(text='以下開立投信帳戶流程將包含4個項目, 請詳閱。'))
        message = ImageSendMessage('https://i.imgur.com/03BsqWKl.png',
                                   'https://i.imgur.com/03BsqWKt.png')
        line_bot_api.reply_message(reply_token, message)
    elif data == '投資人風險屬性評估表':
        line_bot_api.push_message(
            user_id, TextSendMessage(text='以下投資人風險屬性評估表將包含2頁, 請詳閱。'))
        message = ImageSendMessage('https://imgur.com/ebig8EHl.png',
                                   'https://imgur.com/ebig8EHt.png')
        line_bot_api.push_message(user_id, message)
        message = ImageSendMessage('https://i.imgur.com/nLEKdLgl.png',
                                   'https://i.imgur.com/nLEKdLgt.png')
        line_bot_api.reply_message(reply_token, message)
    elif data == '自我證明表':
        line_bot_api.push_message(user_id,
                                  TextSendMessage(text='以下為自我證明表, 請詳閱。'))
        message = ImageSendMessage('https://imgur.com/nLEKdLgl.png',
                                   'https://imgur.com/nLEKdLgt.png')
        line_bot_api.reply_message(reply_token, message)
    elif data == '蒐集、處理及利用個人資料告知事項':
        line_bot_api.push_message(
            user_id, TextSendMessage(text='以下為蒐集、處理及利用個人資料告知事項, 請詳閱。'))
        message = ImageSendMessage('https://imgur.com/nYlDwwql.png',
                                   'https://imgur.com/nYlDwwqt.png')
        line_bot_api.reply_message(reply_token, message)
    elif data == '野村投信身分證明文件聲明書':
        line_bot_api.push_message(
            user_id, TextSendMessage(text='以下為野村投信身分證明文件聲明書, 請詳閱。'))
        message = ImageSendMessage('https://i.imgur.com/13GhNm0l.png',
                                   'https://i.imgur.com/13GhNm0t.png')
        line_bot_api.reply_message(reply_token, message)
    elif data == '投信基金扣款轉帳授權書':
        line_bot_api.push_message(
            user_id, TextSendMessage(text='以下為投信基金扣款轉帳授權書將包含2頁, 請詳閱。'))
        message = ImageSendMessage('https://i.imgur.com/krxXqUwl.png',
                                   'https://i.imgur.com/krxXqUwt.png')
        line_bot_api.push_message(user_id, message)
        message = ImageSendMessage('https://i.imgur.com/dnpQlzUl.png',
                                   'https://i.imgur.com/dnpQlzUt.png')
        line_bot_api.reply_message(reply_token, message)
    elif data == '境外基金授權書(外幣)':
        line_bot_api.push_message(
            user_id, TextSendMessage(text='以下為境外基金授權書(外幣)將包含2頁, 請詳閱。'))
        message = ImageSendMessage('https://imgur.com/fx9ma4Rl.jpg',
                                   'https://imgur.com/fx9ma4Rt.jpg')
        line_bot_api.push_message(user_id, message)
        message = ImageSendMessage('https://imgur.com/g4pXszOl.jpg',
                                   'https://imgur.com/g4pXszOt.jpg')
        line_bot_api.reply_message(reply_token, message)
    elif data == '境外基金授權書(台幣)':
        line_bot_api.push_message(
            user_id, TextSendMessage(text='以下為境外基金授權書(台幣)將包含2頁, 請詳閱。'))
        message = ImageSendMessage('https://imgur.com/q0UBhhX.jpg',
                                   'https://imgur.com/q0UBhhX.jpg')
        line_bot_api.push_message(user_id, message)
        message = ImageSendMessage('https://imgur.com/ty9GFc7.jpg',
                                   'https://imgur.com/ty9GFc7.jpg')
        line_bot_api.reply_message(reply_token, message)
Esempio n. 19
0
def on_postback(event):
    user = User.query.filter_by(line_id=line_bot_api.get_profile(
        event.source.user_id).user_id).first()

    if event.postback.data == 'name' or event.postback.data == 'location' or event.postback.data == 'defaulttime':
        sendQuickReply_settings(event, event.postback.data)
    elif event.postback.data == 'set_default_time':
        user.default_time = event.postback.params['time']
        db.session.commit()
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text='サプリメントのリマインド時刻を ' + user.default_time +
                            ' に設定しました。'))
    elif event.postback.data == 'enabled_weather':
        items = [
            QuickReplyButton(
                action=PostbackAction(label="はい",
                                      text="はい",
                                      data='enabled_weather=' +
                                      ('0' if user.enabled_weather else '1'))),
            QuickReplyButton(
                action=PostbackAction(label="いいえ",
                                      text="いいえ",
                                      data='enabled_weather=' +
                                      ('1' if user.enabled_weather else '0')))
        ]
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='現在は、天気予報機能が' + ('オン' if user.enabled_weather else 'オフ') +
                'になっています。天気予報機能を' + ('オフ' if user.enabled_weather else 'オン') +
                'にしますか?',
                quick_reply=QuickReply(items=items)))
    elif event.postback.data == 'enabled_twitter':
        items = [
            QuickReplyButton(
                action=PostbackAction(label="はい",
                                      text="はい",
                                      data='enabled_twitter=' +
                                      ('0' if user.enabled_twitter else '1'))),
            QuickReplyButton(
                action=PostbackAction(label="いいえ",
                                      text="いいえ",
                                      data='enabled_twitter=' +
                                      ('1' if user.enabled_twitter else '0')))
        ]
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text='現在は、Twitter連携機能が' +
                            ('オン' if user.enabled_twitter else 'オフ') +
                            'になっています。Twitter連携機能を' +
                            ('オフ' if user.enabled_twitter else 'オン') +
                            'にしますか?',
                            quick_reply=QuickReply(items=items)))
    elif 'modify' in event.postback.data:
        keyword = event.postback.data.split('=')[0].split('_')[1]
        yes = event.postback.data.split('=')[1]
        if yes == '1':
            modify_settings(event, user, keyword)
        else:
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='変更を取りやめました。'))
    elif 'category_id' in event.postback.data:
        if 'question_id' in event.postback.data:
            category_id = event.postback.data.split('=')[1].split('&')[0]
            question_id = event.postback.data.split('=')[2]
            line_bot_api.reply_message(event.reply_token, [
                TextSendMessage(text=FAQs[int(category_id)]['questions'][int(
                    question_id)]['A']),
                TextSendMessage(
                    text='その他にお困りのことはありますか?',
                    quick_reply=QuickReply(items=generateFAQCategories(True)))
            ])
        else:
            category_id = event.postback.data.split('=')[1]
            questions = [
                QuickReplyButton(action=PostbackAction(
                    label=FAQs[int(
                        category_id)]['questions'][question_id]['Q'],
                    text=FAQs[int(category_id)]['questions'][question_id]['Q'],
                    data='category_id=' + category_id + '&question_id=' +
                    str(question_id)))
                for question_id in FAQs[int(category_id)]['questions']
            ]
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text=FAQs[int(category_id)]['category'] +
                                'のお問い合わせですね。\n詳細を下記からお選びください。',
                                quick_reply=QuickReply(items=questions)))
    elif event.postback.data == 'faq_done=1':
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='FAQは随時追加しておりますので、またご不明点などありましたら画面最下部のメニューよりご確認ください。'))
    elif 'enabled_weather' in event.postback.data:
        if event.postback.data.split('=')[1] == '1':
            if user.enabled_weather:
                if not user.location:
                    items = [
                        QuickReplyButton(action=LocationAction(
                            label="位置情報を送る"))
                    ]
                    line_bot_api.reply_message(event.reply_token, [
                        TextSendMessage(text='天気予報機能をオンのままに設定しました。'),
                        TextSendMessage(
                            text=
                            '位置情報が設定されていないようです。正確な天気予報のため、下記ボタンより位置情報を送ってください。',
                            quick_reply=QuickReply(items=items))
                    ])
                else:
                    line_bot_api.reply_message(
                        event.reply_token,
                        TextSendMessage(
                            text=
                            '天気予報機能をオンのままに設定しました。メニュー内の「天気予報」から、いつでも天気の確認ができます。'
                        ))
            else:
                user.enabled_weather = True
                db.session.commit()

                items = [
                    QuickReplyButton(action=LocationAction(label="位置情報を送る"))
                ]
                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(
                        text='天気予報機能をオンにしました。正確な天気予報のため、下記ボタンより位置情報を送ってください。',
                        quick_reply=QuickReply(items=items)))
        elif event.postback.data.split('=')[1] == '0':
            if user.enabled_weather == False:
                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(
                        text=
                        '天気予報機能をオフのままに設定しました。メニュー内の「天気予報」から、いつでも設定の変更ができます。'))
            else:
                user.enabled_weather = False
                db.session.commit()

                items = [
                    QuickReplyButton(
                        action=MessageAction(label="了解", text="了解"))
                ]

                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(
                        text='天気予報機能をオフにしました。メニュー内の「天気予報」から、いつでも設定の変更ができます。',
                        quick_reply=QuickReply(items=items)))
    elif 'display_time' in event.postback.data:
        pref, city = parse_address(user.location)
        forecast = fetch_weather_driver(pref, city)
        display_weather_info(event,
                             event.postback.data.split('=')[1], pref, city,
                             forecast)
    elif 'enabled_twitter' in event.postback.data:
        line_bot_api.reply_message(
            event.reply_token, TextSendMessage(text='Twitter連携機能は現在開発中です...'))
    elif 'qid' in event.postback.data:
        FB = Feedback.query.filter_by(line_id=line_bot_api.get_profile(
            event.source.user_id).user_id).first()
        if event.postback.data.split('&')[0] == 'qid=1':
            FB.Q1 = int(event.postback.data.split('=')[2])
            db.session.commit()
            sendQuickReply_FB(event, 2)
        elif event.postback.data.split('&')[0] == 'qid=2':
            FB.Q2 = int(event.postback.data.split('=')[2])
            db.session.commit()
            sendQuickReply_FB(event, 3)
        elif event.postback.data.split('&')[0] == 'qid=3':
            FB.Q3 = int(event.postback.data.split('=')[2])
            db.session.commit()
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(
                    text='ご回答ありがとうございます!フィードバックは、今後のサービス改善に役立たせて頂きます。'))
Esempio n. 20
0
def message_text(event):
    # your code is here
    repmsg = ""
    text = event.message.text
    userid = event.source.user_id
    reply_token = event.reply_token
    # GDriveJSON就輸入下載下來Json檔名稱
    # GSpreadSheet是google試算表名稱
    GDriveJSON = 'FinTech.json'
    GSpreadSheet = 'FinTech'
    try:
        scope = [
            'https://www.googleapis.com/auth/spreadsheets',
            "https://www.googleapis.com/auth/drive.file",
            "https://www.googleapis.com/auth/drive"
        ]
        key = SAC.from_json_keyfile_name(GDriveJSON, scope)
        gc = gspread.authorize(key)
        worksheet = gc.open(GSpreadSheet).worksheet('sheet2')
    except Exception as ex:
        print('無法連線Google試算表', ex)
        sys.exit(1)

    index = 0
    flowid = 0
    name = ''
    values_list = worksheet.col_values(1)
    if (userid in values_list):
        index = values_list.index(userid) + 1
        flowid = int(worksheet.acell('B' + str(index)).value)
        name = worksheet.acell('C' + str(index)).value
        print('狀態:', flowid)
    if (text == '野村投信開戶流程'):
        buttons_template = ButtonsTemplate(
            title='野村投信線上表單。',
            text='親愛的投資朋友,您好:感謝您選擇野村投信做為您的理財夥伴,以下將為您介紹我們的三種開戶方式。',
            actions=[
                PostbackAction(label='開立投信帳戶(1-4項)', data='開立投信帳戶(1-4項)'),
                PostbackAction(label='開立投信帳戶(5-6項)', data='開立投信帳戶(5-6項)'),
                PostbackAction(label='開立投信+境外帳戶', data='開立投信+境外帳戶'),
                PostbackAction(label='舊戶升級加開境外帳戶', data='舊戶升級加開境外帳戶'),
            ])
        template_message = TemplateSendMessage(
            alt_text='野村投信您好!這是我們目前提供的線上表單。', template=buttons_template)
        line_bot_api.reply_message(reply_token, template_message)
    elif (text == '即時客服' or flowid > 0):
        if (flowid == 0):
            repmsg = "客戶您好,請問該怎麼稱呼您呢?"
            flowid += 1
            if (index != 0):
                cellsite = 'B' + str(index)
                worksheet.update_acell(cellsite, flowid)
            else:
                worksheet.append_row((userid, flowid))
        elif (flowid == 1):
            repmsg = text + ",您好,請問有什麼能為您服務的嗎?"
            flowid += 1
            worksheet.update_acell('B' + str(index), flowid)
            worksheet.update_acell('C' + str(index), text)
            socketio.emit('server_msg', {
                'data': "客戶 " + text + ",已在線上。",
                'token': event.reply_token
            },
                          broadcast=True)
        else:
            if (text == "再見" or text == "Bye"):
                flowid = 0
                cellsite = 'B' + str(index)
                worksheet.update_acell(cellsite, flowid)
                repmsg = "很高興為您服務"
                socketio.emit('server_response', {
                    'data': text,
                    'token': '',
                    'userid': '',
                    'name': name
                },
                              broadcast=True)
                socketio.emit('server_msg', {'data': '客戶' + name + '已結束對話。'},
                              broadcast=True)
            else:
                socketio.emit('server_response', {
                    'data': text,
                    'token': event.reply_token,
                    'userid': userid,
                    'name': name
                },
                              broadcast=True)

        if (repmsg != ""):
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text=repmsg))
        if text != "":
            pass
            while True:
                try:
                    scope = [
                        'https://www.googleapis.com/auth/spreadsheets',
                        "https://www.googleapis.com/auth/drive.file",
                        "https://www.googleapis.com/auth/drive"
                    ]
                    key = SAC.from_json_keyfile_name(GDriveJSON, scope)
                    gc = gspread.authorize(key)
                    worksheet = gc.open(GSpreadSheet).sheet1
                except Exception as ex:
                    print('無法連線Google試算表', ex)
                    sys.exit(1)
                textt = ""
                textt += text
                if textt != "":
                    d = json.dumps(datetime.datetime.now(),
                                   default=myconverter)
                    worksheet.append_row((d, 'Customer', userid, textt))
                    print('新增一列資料到試算表', GSpreadSheet)
                    if repmsg != "":
                        d = json.dumps(datetime.datetime.now(),
                                       default=myconverter)
                        worksheet.append_row((d, 'IM', userid, repmsg))
                        print('新增一列資料到試算表', GSpreadSheet)
                    return textt
    else:
        line_bot_api.reply_message(
            event.reply_token, TextSendMessage(text="客戶您好,請利用下方選單選取您所需要的服務:)"))
Esempio n. 21
0
def on_postback(event):
    user_id = event.source.user_id
    reply_token = event.reply_token
    post_data = event.postback.data

    if post_data == "工学部":
        line_bot_api.reply_message(event.reply_token, [
            TextSendMessage(
                text="下のボタンから学科を選択してください。",
                quick_reply=QuickReply(items=[
                    QuickReplyButton(
                        action=PostbackAction(label=major, data=major))
                    for major in major_list["工学部"]
                ]))
        ])

    elif post_data == "ヘルプ":
        line_bot_api.reply_message(event.reply_token, [
            TextSendMessage(text="""再登録をしたいとき・・・
下の「学部再登録」のボタンを押してください。もう一度下にボタンが出現します。\n
ご感想、エラー報告・・・
「送信フォーム」のボタンを押してください。Googleフォームが現れ、匿名で送信できます。\n
鬼仏情報の投稿・・・
「トンペー鬼仏表」のボタンを押してください。サイトに移動します。\n
経済学部の方・・・
「ゼミ協」とテキストを送信してください。ゼミ協(東北大学経済学部)が運営するLINEbotの紹介リンクを送信します。"""),
            TemplateSendMessage(
                alt_text="選択ボタン",
                template=ButtonsTemplate(
                    text="以下から選択してください",
                    image_size="cover",
                    actions=[
                        MessageAction(text="学部再登録", label="学部再登録"),
                        URIAction(uri="https://forms.gle/XmjrKMPacj9H7nDH9",
                                  label="送信フォーム"),
                        URIAction(uri="https://www.tonpe.site/toppages/index",
                                  label="トンペー鬼仏表")
                    ]))
        ])

    # 絞り込み検索
    elif post_data[-1] == "論" or post_data[-1] == "学" or post_data[-1] == "語":
        lecture_group = post_data
        user_major = get_usermajor(user_id)
        if user_major:
            lecture_info = syllabus_db.search_lecture_info(
                lecture_group, user_major)  # 講義情報の辞書のリストが返ってくる
            if (user_major == "機知" or user_major == "情物" or user_major == "化バイ"
                    or user_major == "材料" or user_major == "建築"
                    or user_major == "理") and post_data == "自然科学":
                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(text="工,理は件数が多いため表示できません"))

            if len(lecture_info) < 10:
                line_bot_api.reply_message(event.reply_token, [
                    FlexSendMessage(alt_text='シラバス情報',
                                    contents=CarouselContainer([
                                        gen_card_syllabus(dic, post_data)
                                        for dic in lecture_info[:10]
                                    ])),
                    TextSendMessage(text=f"上記{len(lecture_info)}件の講義が見つかりました")
                ])

            elif 10 < len(lecture_info) and len(lecture_info) <= 20:
                line_bot_api.reply_message(event.reply_token, [
                    FlexSendMessage(alt_text='シラバス情報',
                                    contents=CarouselContainer([
                                        gen_card_syllabus(dic, post_data)
                                        for dic in lecture_info[:10]
                                    ])),
                    FlexSendMessage(alt_text='シラバス情報',
                                    contents=CarouselContainer([
                                        gen_card_syllabus(dic, post_data)
                                        for dic in lecture_info[10:20]
                                    ])),
                    TextSendMessage(text=f"上記{len(lecture_info)}件の講義が見つかりました")
                ])

            elif 20 < len(lecture_info) and len(lecture_info) <= 30:
                line_bot_api.reply_message(event.reply_token, [
                    FlexSendMessage(alt_text='シラバス情報',
                                    contents=CarouselContainer([
                                        gen_card_syllabus(dic, post_data)
                                        for dic in lecture_info[:10]
                                    ])),
                    FlexSendMessage(alt_text='シラバス情報',
                                    contents=CarouselContainer([
                                        gen_card_syllabus(dic, post_data)
                                        for dic in lecture_info[10:20]
                                    ])),
                    FlexSendMessage(alt_text='シラバス情報',
                                    contents=CarouselContainer([
                                        gen_card_syllabus(dic, post_data)
                                        for dic in lecture_info[20:30]
                                    ])),
                    TextSendMessage(text=f"上記{len(lecture_info)}件の講義が見つかりました")
                ])
        # 所属登録が済んでいない場合
        else:
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text="所属を登録してください"))

    else:  # ユーザ情報をDBに格納
        if post_data[-1] == "部":
            user_major = post_data[0]
        else:
            user_major = post_data
        user_db.add_userinfo(user_major, user_id)
        line_bot_api.reply_message(
            event.reply_token, TextSendMessage(text=post_data + "で登録しました!"))
Esempio n. 22
0
def handle_price_message(event):
    global interest
    try:
        if int(event.message.text):
            a = int(event.message.text)
            if interest in ['iphone,not_have,', 'iphone,have,']:
                interest = interest + event.message.text
                if a > 35900 * 1.05:
                    result = "你高估囉!官方價格目前是35900元"
                elif a < 35900 * 0.95:
                    result = "你低估囉!官方價格目前是35900元"
                else:
                    result = "猜得很準喔!官方價格目前是35900元"
                reply_message = TextSendMessage("你猜的價格為" + event.message.text +
                                                "元\n" + result)

            elif interest in ['switch,not_have,', 'switch,have,']:
                interest = interest + event.message.text
                if a > 9780 * 1.05:
                    result = "你高估囉!官方價格目前是9780元"
                elif a < 9780 * 0.95:
                    result = "你低估囉!官方價格目前是9780元"
                else:
                    result = "猜得很準喔!官方價格目前是9780元"
                reply_message = TextSendMessage("你猜的價格為" + event.message.text +
                                                "元\n" + result)

            text_quickreply1 = QuickReplyButton(
                action=MessageAction(label="正確", text="就猜這個"))
            text_quickreply2 = QuickReplyButton(
                action=MessageAction(label="錯誤", text="再玩一次"))
            quick_reply_array = QuickReply(
                items=[text_quickreply1, text_quickreply2])

            reply_text_message = TextSendMessage(reply_message.text,
                                                 quick_reply=quick_reply_array)
            line_bot_api.reply_message(event.reply_token, reply_text_message)
            with open("guesslist.csv", "a") as csvfile:
                writer = csv.writer(csvfile)
                li = interest.split(",")
                writer.writerow(li)

    except:
        if event.message.text == "就猜這個":
            static_chart = ImageSendMessage(
                original_content_url=
                "https://images.plurk.com/29raxzfw1iC52tLqlPTVz1.jpg",
                preview_image_url=
                "https://images.plurk.com/2nA3V4zBaRMtPicEvrK4pC.jpg")
            # text_quickreply1 = QuickReplyButton(action=MessageAction(label="猜猜別的", text="再玩一次"))
            # text_quickreply2 = QuickReplyButton(action=MessageAction(label="不想猜了", text="我不玩了"))
            # quick_reply_array = QuickReply(items=[text_quickreply1, text_quickreply2])
            # test_reply = TextSendMessage("要猜猜看別的嗎?")
            # reply_text_message = TextSendMessage(test_reply, quick_reply=quick_reply_array)
            line_bot_api.reply_message(event.reply_token, [static_chart])
        elif event.message.text == "再玩一次":
            buttons_template_message = TemplateSendMessage(
                alt_text='Buttons template',
                template=ButtonsTemplate(
                    thumbnail_image_url=
                    'https://c0.wallpaperflare.com/preview/124/695/733/doors-choices-choose-open.jpg',
                    title='我想猜這個',
                    text='選一個有興趣的領域吧!',
                    actions=[
                        PostbackAction(label='3c (iPhone)',
                                       display_text='我想猜猜iPhone的價格',
                                       data='iphone,'),
                        PostbackAction(label='電玩 (Switch)',
                                       display_text='我想猜猜看Switch的價格',
                                       data='switch,'),
                        # PostbackAction(
                        #     label='甜點',
                        #     display_text='我想猜猜甜點價位',
                        #     data='"theme":3,'
                        # )
                    ]))
            line_bot_api.reply_message(event.reply_token,
                                       buttons_template_message)
    interest = ""
    return interest
Esempio n. 23
0
def handle_message(event):
    # 抓使用者資訊
    profile = line_bot_api.get_profile(event.source.user_id)
    usern = profile.display_name
    
    msg = event.message.text
    if msg == '上衣':
        myans = getinfoRand('上衣')
        mymessage = TemplateSendMessage(
            alt_text='ImageCarousel template',
            template=ImageCarouselTemplate(
                columns=[
                    ImageCarouselColumn(
                        image_url=myans[0][5],
                        action=PostbackAction(label=myans[0][2], text=myans[0][2], 
                                              data='action=buy&itemid=1')),
                    ImageCarouselColumn(
                        image_url=myans[1][5],
                        action=PostbackAction(label=myans[1][2], text=myans[1][2], 
                                              data='action=buy&itemid=1')),
                    ImageCarouselColumn(
                        image_url=myans[2][5],
                        action=PostbackAction(label=myans[2][2], text=myans[2][2], 
                                              data='action=buy&itemid=1')), ]))
        line_bot_api.reply_message(event.reply_token, mymessage)
    elif msg == '裙子':
        myans = getinfoRand('裙子')
        line_bot_api.reply_message(
            event.reply_token, 
            [TextSendMessage(text=myans[0][2]), 
             ImageSendMessage(original_content_url=myans[0][5], preview_image_url=myans[0][5]), 
             TextSendMessage(text=myans[1][2]), 
             ImageSendMessage(original_content_url=myans[1][5], preview_image_url=myans[1][5]),])
    elif msg == '褲子':
        myans = getinfoRand('褲子')
        image_carousel_template = TemplateSendMessage(
            alt_text='Carousel template',
            template=CarouselTemplate(
                columns=[
                    CarouselColumn(
                        thumbnail_image_url=myans[0][5],
                        title=myans[0][1], text=myans[0][2],
                        actions=[PostbackAction(label='褲子類', data='ping', text='褲子類'),]),
                    CarouselColumn(
                        thumbnail_image_url=myans[1][5],
                        title=myans[1][1], text=myans[1][2],
                        actions=[PostbackAction(label='褲子類', data='ping', text='褲子類'),]),
                    CarouselColumn(
                        thumbnail_image_url=myans[2][5],
                        title=myans[2][1], text=myans[2][2],
                        actions=[PostbackAction(label='褲子類', data='ping', text='褲子類'),])]))
        line_bot_api.reply_message(event.reply_token, image_carousel_template)
    elif msg == '尋問店家':
        line_bot_api.reply_message(event.reply_token, 
                                   [TextSendMessage(text='歡迎加line: goodbabyworker 或 email: [email protected]')])
    elif msg == '門市訊息':
        line_bot_api.reply_message(event.reply_token, 
                                   [TextSendMessage(text='營業時間:全年無休,請打給寶寶:0933584513')]) 
    else:
        line_bot_api.reply_message(event.reply_token, 
                                   [TextSendMessage(text='營業時間:全年無休,請打給寶寶:0933584513')])
Esempio n. 24
0
def handle_postback(event):
    """
    ポストバックに対応したメソッド。
    性別の登録。
    質問の投稿。
    回答の投稿。
    """
    user_id = event.source.user_id
    profiles = line_bot_api.get_profile(user_id=user_id)
    display_name = profiles.display_name

    if event.postback.data == 'no':
        sql = "delete from " + REMOTE_DB_TB + " where user_id='" + str(
            user_id) + "';"
        c.execute(sql)
        conn.commit()

        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='帰ってしまいますか?もしよければ理由をお聞かせください。',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(
                        action=PostbackAction(label="間違え", data="wrong_room")),
                    QuickReplyButton(
                        action=PostbackAction(label="待てない", data="long_que")),
                    QuickReplyButton(action=PostbackAction(
                        label="吸えない状況になった", data="uncomfortable_situation")),
                ])))

    elif event.postback.data == "wrong_room" or event.postback.data == "long_que" or event.postback.data == "uncomfortable_situation" or event.postback.data == "not_ask":
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text="我慢できたあなたはえらい!"))

    elif event.postback.data == 'regular' or event.postback.data == "electric":
        #sql = "select * from "+REMOTE_DB_TB3+ " WHERE user_id = '"+str(user_id)+"';"
        sql = "select MAX(date) from " + REMOTE_DB_TB3 + " WHERE user_id = '" + str(
            user_id) + "';"
        c.execute(sql)
        ret = c.fetchall()
        latest = str(ret[0][0])

        preference1 = event.postback.data
        sql = "update " + REMOTE_DB_TB3 + " set preference1 = '" + preference1 + "' WHERE user_id = '" + str(
            user_id) + "' and date = '" + latest + "';"
        #sql="update "+REMOTE_DB_TB3+ " set preference1 = '"+preference1+"' WHERE user_id = '"+str(user_id)+"';"
        c.execute(sql)
        conn.commit()

        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='喫煙所ですか?カフェですか?',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(action=PostbackAction(
                        label="喫煙所", data="smoking_area")),
                    QuickReplyButton(
                        action=PostbackAction(label="カフェ・レストラン", data="cafe")),
                    QuickReplyButton(action=PostbackAction(label="バー・居酒屋",
                                                           data="bar"), )
                ])))
    elif event.postback.data == "smoking_area" or event.postback.data == "cafe" or event.postback.data == "bar":
        sql = "select MAX(date) from " + REMOTE_DB_TB3 + " WHERE user_id = '" + str(
            user_id) + "';"
        c.execute(sql)
        ret = c.fetchall()
        latest = str(ret[0][0])

        preference2 = event.postback.data
        sql = "update " + REMOTE_DB_TB3 + " set preference2 = '" + preference2 + "' WHERE user_id = '" + str(
            user_id) + "' and date = '" + latest + "';"
        #sql="update "+REMOTE_DB_TB3+ " set preference1 = '"+preference1+"' WHERE user_id = '"+str(user_id)+"';"
        c.execute(sql)
        conn.commit()

        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='ご希望の形態はございますか?',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(
                        action=PostbackAction(label="分煙", data="separated")),
                    QuickReplyButton(
                        action=PostbackAction(label="席で吸える", data="table")),
                    QuickReplyButton(action=PostbackAction(label="外で吸える",
                                                           data="outdoor"), )
                ])))

    elif event.postback.data == 'answer':
        #sex = "female"
        #ここでDBの更

        #あとでここ変更
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='性別を教えてください',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(
                        action=PostbackAction(label="女性", data="female")),
                    QuickReplyButton(
                        action=PostbackAction(label="男性", data="male")),
                    QuickReplyButton(
                        action=PostbackAction(label="その他", data="others"))
                ])))

    elif event.postback.data == 'female' or event.postback.data == 'male':
        sex = event.postback.data
        sql = "update " + REMOTE_DB_TB + " set sex = '" + str(
            sex) + "' WHERE user_id = '" + str(user_id) + "';"
        c.execute(sql)
        conn.commit()

        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='職業を教えてください',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(
                        action=PostbackAction(label="有職", data="employed")),
                    QuickReplyButton(
                        action=PostbackAction(label="無職", data="unemployed")),
                ])))

    elif event.postback.data == "employed" or event.postback.data == "unemployed":
        job = event.postback.data
        sql = "update " + REMOTE_DB_TB + " set job = '" + str(
            job) + "' WHERE user_id = '" + str(user_id) + "';"
        c.execute(sql)
        conn.commit()

        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text='電子タバコは吸われますか?',
                            quick_reply=QuickReply(items=[
                                QuickReplyButton(action=PostbackAction(
                                    label="吸わない", data="regular_only")),
                                QuickReplyButton(action=PostbackAction(
                                    label="吸う", data="electric_too")),
                            ])))

    elif event.postback.data == "regular_only" or event.postback.data == "electric_too":
        electric = event.postback.data
        sql = "update " + REMOTE_DB_TB + " set electric = '" + str(
            electric) + "' WHERE user_id = '" + str(user_id) + "';"
        c.execute(sql)
        conn.commit()

        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='成人してますか?',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(
                        action=PostbackAction(label="未成年", data="young")),
                    QuickReplyButton(
                        action=PostbackAction(label="成人", data="old")),
                ])))

    elif event.postback.data == 'old' or event.postback.data == "chat":
        if event.postback.data == "old":
            age = event.postback.data
            sql = "update " + REMOTE_DB_TB + " set age = '" + str(
                age) + "' WHERE user_id = '" + str(user_id) + "';"
            c.execute(sql)
            conn.commit()
        else:
            pass

        sql2 = "insert into " + REMOTE_DB_TB3 + " values ('" + str(
            user_id
        ) + "',current_timestamp,'none', 'none', 'none', 'none','none','none');"
        c.execute(sql2)
        conn.commit()
        #相談番号別テーブル
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='今の気分をお伺いします!普通タバコですか?電子タバコですか?',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(
                        action=PostbackAction(label="普通タバコ", data="regular")),
                    QuickReplyButton(
                        action=PostbackAction(label="電子タバコ", data="electric"))
                ])))

    elif event.postback.data == 'young':
        age = event.postback.data
        sql = "update " + REMOTE_DB_TB + " set age = '" + str(
            age) + "' WHERE user_id = '" + str(user_id) + "';"
        c.execute(sql)
        conn.commit()
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text="ごめんなさい。未成年の方はご利用いただけません。"))

    elif event.postback.data == 'separated' or event.postback.data == "table" or event.postback.data == "outdoor":
        sql = "select MAX(date) from " + REMOTE_DB_TB3 + " WHERE user_id = '" + str(
            user_id) + "';"
        c.execute(sql)
        ret = c.fetchall()
        latest = str(ret[0][0])

        preference3 = event.postback.data
        sql = "update " + REMOTE_DB_TB3 + " set preference3 = '" + preference3 + "' WHERE user_id = '" + str(
            user_id) + "' and date = '" + latest + "';"
        #sql="update "+REMOTE_DB_TB3+ " set preference1 = '"+preference1+"' WHERE user_id = '"+str(user_id)+"';"
        c.execute(sql)
        conn.commit()

        buttons_template = ButtonsTemplate(title="お近くで喫煙できる場所をお探しします!", \
            #(ここでトピックに合わせて、ある程度用意した定型文を投げる)

            text='現在地を教えていただけますか?', \
            actions=[PostbackAction(label='頼む', data='ask'),PostbackAction(label='やっぱりやめる', data='not_ask')])
        template_message = TemplateSendMessage(alt_text='connecting',
                                               template=buttons_template)
        line_bot_api.reply_message(event.reply_token, template_message)

    elif event.postback.data == 'ask' or event.postback.data == 'wrong_address':
        line_bot_api.reply_message(event.reply_token, [
            TextSendMessage(text="位置情報を送ってください"),
            TextSendMessage(text='line://nv/location'),
        ])
    elif event.postback.data == "slacking":
        # webhookURLを指定
        webhook_url = "https://hooks.slack.com/services/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"

        # 送信するテキストを定義

        # Slackに送信する
        requests.post(webhook_url,
                      data=json.dumps({"text": display_name + "が今からタバコすいます"}))
Esempio n. 25
0
File: wt.py Progetto: catchsob/wtit
def process_postback_event(event):
    model_dict = {'classify_14tree': '影像辨識:14種樹', 'classify_8leaf': '影像辨識:8種葉',
                  'objdetect_14tree': '物件偵測:14種樹', 'objdetect_8leaf': '物件偵測:8種葉',
                  'classify_bauya': '影像辨識:羊蹄甲3種葉'}
    
    db.increase(event.source.user_id, 'm')
    q = parse_qs(event.postback.data)
    if 'model' in q:
        m = q.get('model')[0]
        
        if m in model_dict:
            cameraQuickRB = QuickReplyButton(action=CameraAction(label="拍照"))
            cameraRollQRB = QuickReplyButton(action=CameraRollAction(label="讀檔"))
            quickReplyList = QuickReply(items = [cameraRollQRB, cameraQuickRB])
            fn = '<<fn_' + m + '>>'
            quickReplyTextSendMessage = get_textmessage_reply(cfg['reply_path'], fn, event.source.user_id, db)
            quickReplyTextSendMessage[0].quick_reply = quickReplyList
            line_bot_api.reply_message(event.reply_token, quickReplyTextSendMessage)
            db.markModel(event.source.user_id, m)
    
    elif 'page' in q:
        page = q.get('page')[0]
        msg, key = get_textmessage_reply(cfg['reply_path'], page, event.source.user_id, db, True)
        msg = msg[0] # get_textmessage_reply() returned list
        
        if 'category' in q:
            cat = q.get('category')[0]
            if cat == 'trees': # page=<<AS>>&category=trees
                items = [QuickReplyButton(action=PostbackAction(label='<<', data='page=<<trees>>'))]
                k = trees_dict[key]
                if k > 0:
                    p = f'page=<<{trees[k-1]}>>&category=trees'
                    items.append(QuickReplyButton(action=PostbackAction(label='<', data=p)))
                if k < len(trees)-1:
                    f = f'page=<<{trees[k+1]}>>&category=trees'
                    items.append(QuickReplyButton(action=PostbackAction(label='>', data=f)))
                msg.quickReply = QuickReply(items=items)
                
            elif cat == 'leaves':
                pass
        
        line_bot_api.reply_message(event.reply_token, msg)
        
    elif 'action' in q:
        a = q.get('action')[0]
        msg = None
        
        if a == 'whoami':
            t = q.get('target')[0] if 'target' in q else event.source.user_id
            u = db.getUser(t)
            msg = FlexSendMessage.new_from_json_dict(create_whoami(u))
            if 'callback' in q:
                cb = (q.get('callback')[0]).replace('^', '&')
                msg.quickReply = QuickReply(items=[QuickReplyButton(action=PostbackAction(label='<', data=cb))])
        elif a == 'show_email':
            msg = TextSendMessage.new_from_json_dict(
                {'type': 'text', 'text': 'Enos Chou, feel free to contact me\[email protected]'})
        elif a == 'count_usage':
            criterion = 1
            user_amt, user_today, usage_amt = db.countUsage(event.source.user_id, criterion=criterion)
            if user_amt is 0:
                msg = TextSendMessage.new_from_json_dict({"type": "text", "text": f'你還不是 {admin[criterion]}'})
            else:
                msg = TextSendMessage.new_from_json_dict(
                    {'type': 'text',
                     'text': f'用戶總數: {user_amt} 人\n今日新增: {user_today} 人\n今日使用: {usage_amt} 人'})
        elif a == 'list':
            AMOUNT = cfg['show_maxuser']
            alt = {'last':'註', 'visit':'訪', 'usage':'量'}
            criterion = 1
            mode = q.get('mode')[0]
            start = (int)(q.get('start')[0]) # must be cast to int, or it would be str
            users = db.getUsers(event.source.user_id, mode, start, AMOUNT, criterion)
            u_len = len(users)
            msg = FlexSendMessage.new_from_json_dict(create_list(users, alt[mode], start, u_len, event.postback.data))
            items = []
            if u_len > 0:
                if start > 0:
                    x = start - AMOUNT # cehck previus button
                    p = f'action=list&mode={mode}&start={x if x > 0 else 0}'
                    items.append(QuickReplyButton(action=PostbackAction(label='<', data=p)))
                    if x > 0: # check first page button
                        f = f'action=list&mode={mode}&start=0'
                        items.insert(0, QuickReplyButton(action=PostbackAction(label='<<', data=f)))
                if u_len == AMOUNT and (start+u_len < users[-1][-1]): # check next button
                    n = f'action=list&mode={mode}&start={start+u_len}'
                    items.append(QuickReplyButton(action=PostbackAction(label='>', data=n)))
                    nn = f'action=list&mode={mode}&start={AMOUNT*((users[-1][-1]-1)//AMOUNT)}'
                    items.append(QuickReplyButton(action=PostbackAction(label='>>', data=nn)))
                    
            for a in alt:
                if mode != a:
                    rb = QuickReplyButton(action=PostbackAction(label=alt[a], data=f'action=list&mode={a}&start=0'))
                    items.append(rb)
            msg.quickReply = QuickReply(items=items)
        elif a == 'reload':
            criterion = 2
            u = db.getUser(event.source.user_id) # user_id, display_name, picture_url, admin
            if u[3] >= criterion:
                if 'scope' in q:
                    s = q.get('scope')[0]
                    if s == 'db':
                        r = db.reload(event.source.user_id,
                                      cfg['mysql_ip'], cfg['mysql_db'], cfg['mysql_id'], cfg['mysql_pwd'], criterion)
                        desc = ['失敗!', '完成']
                        msg = TextSendMessage.new_from_json_dict({"type": "text", "text": f'DB重連{desc[r]}'})
                    elif s == 'profile':
                        pp = []
                        uids = db.getUids()
                        for uid in uids:
                            try:
                                p = line_bot_api.get_profile(uid) # sometimes failed due to UID not found by A
                                pp.append([p.display_name, p.picture_url, p.user_id])
                            except Exception as e1:
                                print(e1)
                                print(f'{uid} passed due to exception!')
                        db.updateUsers(pp)
                        msg = TextSendMessage.new_from_json_dict({"type": "text", "text": '更新用戶資料完畢'})
                    elif s == 'richmenu':
                        uids = db.getUids()
                        line_bot_api.link_rich_menu_to_users(uids, cfg['richmenu_id'])
                        msg = TextSendMessage.new_from_json_dict({"type": "text", "text": '重置圖文選單完畢'})
                else:
                    msg = get_textmessage_reply(cfg['reply_path'], '<<background>>', event.source.user_id, db)[0]
                    rb1 = QuickReplyButton(action=PostbackAction(label='重連DB', data='action=reload&scope=db'))
                    rb2 = QuickReplyButton(action=PostbackAction(label='更新用戶', data='action=reload&scope=profile'))
                    rb3 = QuickReplyButton(action=PostbackAction(label='重置選單', data='action=reload&scope=richmenu'))
                    msg.quickReply = QuickReply(items=[rb1, rb2, rb3])
            else:
                msg = TextSendMessage.new_from_json_dict({"type": "text", "text": f'你還不是 {admin[criterion]}'})
            
        line_bot_api.reply_message(event.reply_token, msg)
Esempio n. 26
0
def on_messaging(event):
    text = event.message.text
    reply_token = event.reply_token
    user_id = event.source.user_id
    profiles = line_bot_api.get_profile(user_id=user_id)
    display_name = profiles.display_name

    if text == "吸いたい!":
        # DBへの保存
        try:
            sql = "select * from " + REMOTE_DB_TB + " where user_id='" + str(
                user_id) + "';"
            c.execute(sql)
            ret = c.fetchall()

            if len(ret) == 0:
                status = 1
                sql = "insert into " + REMOTE_DB_TB + " values ('" + str(
                    user_id) + "','" + str(
                        display_name) + "','none', 'none', 'none', 'none');"

                # メッセージの送信
                buttons_template = ButtonsTemplate(title='初めまして!', \
                    text='あなたについて少し教えてくれますか?', \
                    actions=[PostbackAction(label='あなたについての質問に答える', data='answer'),PostbackAction(label='やっぱりやめておく', data='no')])
                template_message = TemplateSendMessage(
                    alt_text='welcome', template=buttons_template)
                line_bot_api.reply_message(event.reply_token, template_message)

            elif len(ret) == 1:
                sql_status = "select * from " + REMOTE_DB_TB3 + " where user_id='" + str(
                    user_id) + "';"
                c.execute(sql_status)
                ret_status = c.fetchall()
                #status=str(int(ret_status[0][0])+1)
                dt_now = str(datetime.datetime.now())[0:10]
                ret_df = pd.DataFrame(ret_status)
                latest = str(max(ret_df[1]))[0:10]
                if dt_now == latest:
                    status = len(
                        [str(i) for i in ret_df[1] if latest in str(i)]) + 1
                elif dt_now != latest:
                    status = 1
                #status = str(len(ret_status)+1)
                #sql="update "+REMOTE_DB_TB+ " set status = '"+str(status)+"' WHERE user_id = '"+str(user_id)+"';"

                # メッセージの送信
                buttons_template = ButtonsTemplate(title='おかえりなさい!', \
                    text='今日は'+str(status)+"回ご利用しています", \
                    actions=[PostbackAction(label='喫煙タイプを選ぶ', data='chat'),PostbackAction(label='やっぱりやめておく', data='no')])
                template_message = TemplateSendMessage(
                    alt_text='welcomeback', template=buttons_template)
                line_bot_api.reply_message(event.reply_token, template_message)

            c.execute(sql)
            conn.commit()
        finally:
            pass
        #    conn.close()
        #    c.close()

    elif text == "やめておく":
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text="我慢できたあなたはえらい!"))

    elif text == "データ":
        line_bot_api.reply_message(
            event.reply_token,
            ImageSendMessage(
                #original_content_url="https://1.bp.blogspot.com/-eaDZ7sDP9uY/Xhwqlve5SUI/AAAAAAABXBo/EcI2C2vim7w2WV6EYy3ap0QLirX7RPohgCNcBGAsYHQ/s400/pose_syanikamaeru_man.png",
                #preview_image_url="https://1.bp.blogspot.com/-eaDZ7sDP9uY/Xhwqlve5SUI/AAAAAAABXBo/EcI2C2vim7w2WV6EYy3ap0QLirX7RPohgCNcBGAsYHQ/s400/pose_syanikamaeru_man.png"))
                original_content_url=
                "https://uploda1.ysklog.net/uploda/7dc2bc1fbd.png",
                preview_image_url=
                "https://uploda1.ysklog.net/uploda/7dc2bc1fbd.png"))
Esempio n. 27
0
def handle_text_message(event):
    text = event.message.text

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

    if text == 'profile':
        if isinstance(event.source, SourceUser):
            profile = line_bot_api.get_profile(event.source.user_id)
            line_bot_api.reply_message(event.reply_token, [
                TextSendMessage(text='Display name: ' + profile.display_name),
                TextSendMessage(text='Status message: ' +
                                profile.status_message),
                TextSendMessage(text='user_id: ' + profile.user_id),
                TextSendMessage(text='test picture url: ' +
                                profile.picture_url)
            ])
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(
                    text="Bot can't use profile API without user ID"))
    elif text == 'bye':
        if isinstance(event.source, SourceGroup):
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='Leaving group'))
            line_bot_api.leave_group(event.source.group_id)
        elif isinstance(event.source, SourceRoom):
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='Leaving group'))
            line_bot_api.leave_room(event.source.room_id)
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text="Bot can't leave from 1:1 chat"))
    elif text == 'confirm':
        confirm_template = ConfirmTemplate(text='Do it?',
                                           actions=[
                                               MessageAction(label='Yes',
                                                             text='Yes!'),
                                               MessageAction(label='No',
                                                             text='No!'),
                                           ])
        template_message = TemplateSendMessage(alt_text='Confirm alt text',
                                               template=confirm_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'Bot':
        confirm_template = ConfirmTemplate(
            text='Photo of Miyuu or Osaka trip?',
            actions=[
                MessageAction(label='Miyuu !', text='Miyuu'),
                MessageAction(label='Osaka Trip !', text='Osaka'),
            ])
        template_message = TemplateSendMessage(alt_text='Confirm alt text',
                                               template=confirm_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'buttons':
        buttons_template = ButtonsTemplate(
            title='My buttons sample',
            text='Hello, my buttons',
            actions=[
                URIAction(label='Go to line.me', uri='https://line.me'),
                PostbackAction(label='ping', data='ping'),
                PostbackAction(label='ping with text',
                               data='ping',
                               text='ping'),
                MessageAction(label='Translate Rice', text='米')
            ])
        template_message = TemplateSendMessage(alt_text='Buttons alt text',
                                               template=buttons_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'carousel':
        carousel_template = CarouselTemplate(columns=[
            CarouselColumn(text='hoge1',
                           title='fuga1',
                           actions=[
                               URIAction(label='Go to line.me',
                                         uri='https://line.me'),
                               PostbackAction(label='ping', data='ping')
                           ]),
            CarouselColumn(text='hoge2',
                           title='fuga2',
                           actions=[
                               PostbackAction(label='ping with text',
                                              data='ping',
                                              text='ping'),
                               MessageAction(label='Translate Rice', text='米')
                           ]),
        ])
        template_message = TemplateSendMessage(alt_text='Carousel alt text',
                                               template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'Osaka':
        carousel_template = CarouselTemplate(columns=[
            CarouselColumn(
                thumbnail_image_url=
                'https://s3-us-west-2.amazonaws.com/awsrobomakerhelloworld-154344673743-bundlesbucket-1n2aine7xqbt8/image/osaka1024.jpg',
                title='Osaka1',
                text='Cooool',
                actions=[
                    PostbackAction(
                        label='Colorful town', text='Cooool', data='Cooool')
                ]),
            CarouselColumn(
                thumbnail_image_url=
                'https://s3-us-west-2.amazonaws.com/awsrobomakerhelloworld-154344673743-bundlesbucket-1n2aine7xqbt8/image/osaka2-1024.jpg',
                title='Osaka2',
                text='Women power',
                actions=[
                    PostbackAction(
                        label='Castle', text='Women power', data='Women power')
                ]),
            CarouselColumn(
                thumbnail_image_url=
                'https://s3-us-west-2.amazonaws.com/awsrobomakerhelloworld-154344673743-bundlesbucket-1n2aine7xqbt8/image/osaka3-1024.jpg',
                title='Osaka3',
                text='Where is this?',
                actions=[
                    PostbackAction(label='Some place !!',
                                   text='Where is this?',
                                   data='Where is this?')
                ]),
            CarouselColumn(
                thumbnail_image_url=
                'https://s3-us-west-2.amazonaws.com/awsrobomakerhelloworld-154344673743-bundlesbucket-1n2aine7xqbt8/image/osaka4-1024.jpg',
                title='Osaka4',
                text='Nice Castle',
                actions=[
                    PostbackAction(label='Another GirlPow',
                                   text='Nice Castle',
                                   data='Nice Castle')
                ]),
            CarouselColumn(
                thumbnail_image_url=
                'https://s3-us-west-2.amazonaws.com/awsrobomakerhelloworld-154344673743-bundlesbucket-1n2aine7xqbt8/image/osaka5-1024.jpg',
                title='Osaka5',
                text='Full face !!',
                actions=[
                    PostbackAction(label='Osaka member',
                                   text='Full face !!',
                                   data='Full face !!')
                ]),
            CarouselColumn(
                thumbnail_image_url=
                'https://s3-us-west-2.amazonaws.com/awsrobomakerhelloworld-154344673743-bundlesbucket-1n2aine7xqbt8/image/osaka6-1024.jpg',
                title='Osaka6',
                text='Tired ??',
                actions=[
                    PostbackAction(
                        label='Mom Power!!', text='Tired ??', data='Tired ??')
                ])
        ])
        template_message = TemplateSendMessage(alt_text='Carousel alt text',
                                               template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'Miyuu':
        carousel_template = CarouselTemplate(columns=[
            CarouselColumn(
                thumbnail_image_url=
                'https://s3-us-west-2.amazonaws.com/awsrobomakerhelloworld-154344673743-bundlesbucket-1n2aine7xqbt8/image/miyuu1024-1.jpg',
                text='Miyuu#1',
                actions=[
                    PostbackAction(
                        label='Best Friend', text='Elvis', data='Elvis')
                ]),
            CarouselColumn(
                thumbnail_image_url=
                'https://s3-us-west-2.amazonaws.com/awsrobomakerhelloworld-154344673743-bundlesbucket-1n2aine7xqbt8/image/miyuu1024-2.jpg',
                text='Miyuu#2',
                actions=[
                    PostbackAction(label='GreatWolfLodge',
                                   text='Water park',
                                   data='Water park')
                ]),
            CarouselColumn(
                thumbnail_image_url=
                'https://s3-us-west-2.amazonaws.com/awsrobomakerhelloworld-154344673743-bundlesbucket-1n2aine7xqbt8/image/miyuu1024-3.jpg',
                text='Miyuu#3',
                actions=[
                    PostbackAction(
                        label='Miyuu Cycle', text='Arcade', data='Arcade')
                ]),
            CarouselColumn(
                thumbnail_image_url=
                'https://s3-us-west-2.amazonaws.com/awsrobomakerhelloworld-154344673743-bundlesbucket-1n2aine7xqbt8/image/miyuu1024-4.jpg',
                text='Miyuu#4',
                actions=[
                    PostbackAction(
                        label='Bath Time', text='Love It', data='Love It')
                ]),
            CarouselColumn(
                thumbnail_image_url=
                'https://s3-us-west-2.amazonaws.com/awsrobomakerhelloworld-154344673743-bundlesbucket-1n2aine7xqbt8/image/miyuu1024-5.jpg',
                text='Miyuu#5',
                actions=[
                    PostbackAction(
                        label='The Gang', text='The Gang', data='The Gang')
                ])
        ])
        template_message = TemplateSendMessage(alt_text='Carousel alt text',
                                               template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)

    elif text == 'image_carousel':
        image_carousel_template = ImageCarouselTemplate(columns=[
            ImageCarouselColumn(
                image_url='https://via.placeholder.com/1024x1024',
                action=DatetimePickerAction(label='datetime',
                                            data='datetime_postback',
                                            mode='datetime')),
            ImageCarouselColumn(
                image_url='https://via.placeholder.com/1024x1024',
                action=DatetimePickerAction(
                    label='date', data='date_postback', mode='date'))
        ])
        template_message = TemplateSendMessage(
            alt_text='ImageCarousel alt text',
            template=image_carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'Where is mom':
        location_message = LocationSendMessage(type='Where is Mom?',
                                               title='Mom home',
                                               address='Mom',
                                               latitude=13.799750,
                                               longitude=100.641546)
        line_bot_api.reply_message(event.reply_token, location_message)
    elif text == 'flex':
        bubble = BubbleContainer(
            direction='ltr',
            hero=ImageComponent(url='https://example.com/cafe.jpg',
                                size='full',
                                aspect_ratio='20:13',
                                aspect_mode='cover',
                                action=URIAction(uri='http://example.com',
                                                 label='label')),
            body=BoxComponent(
                layout='vertical',
                contents=[
                    # title
                    TextComponent(text='Brown Cafe', weight='bold', size='xl'),
                    # review
                    BoxComponent(
                        layout='baseline',
                        margin='md',
                        contents=[
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/grey_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/grey_star.png'),
                            TextComponent(text='4.0',
                                          size='sm',
                                          color='#999999',
                                          margin='md',
                                          flex=0)
                        ]),
                    # info
                    BoxComponent(
                        layout='vertical',
                        margin='lg',
                        spacing='sm',
                        contents=[
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='Place',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(text='Shinjuku, Tokyo',
                                                  wrap=True,
                                                  color='#666666',
                                                  size='sm',
                                                  flex=5)
                                ],
                            ),
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='Time',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(
                                        text="10:00 - 23:00",
                                        wrap=True,
                                        color='#666666',
                                        size='sm',
                                        flex=5,
                                    ),
                                ],
                            ),
                        ],
                    )
                ],
            ),
            footer=BoxComponent(
                layout='vertical',
                spacing='sm',
                contents=[
                    # callAction, separator, websiteAction
                    SpacerComponent(size='sm'),
                    # callAction
                    ButtonComponent(
                        style='link',
                        height='sm',
                        action=URIAction(label='CALL', uri='tel:000000'),
                    ),
                    # separator
                    SeparatorComponent(),
                    # websiteAction
                    ButtonComponent(style='link',
                                    height='sm',
                                    action=URIAction(
                                        label='WEBSITE',
                                        uri="https://example.com"))
                ]),
        )
        message = FlexSendMessage(alt_text="hello", contents=bubble)
        line_bot_api.reply_message(event.reply_token, message)
    elif text == 'quick_reply':
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='Quick reply',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(
                        action=PostbackAction(label="label1", data="data1")),
                    QuickReplyButton(
                        action=MessageAction(label="label2", text="text2")),
                    QuickReplyButton(action=DatetimePickerAction(
                        label="label3", data="data3", mode="date")),
                    QuickReplyButton(action=CameraAction(label="label4")),
                    QuickReplyButton(action=CameraRollAction(label="label5")),
                    QuickReplyButton(action=LocationAction(label="label6")),
                ])))
    else:
        pass
Esempio n. 29
0
def handle_text_message(event):
    text = event.message.text

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

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