コード例 #1
0
def keyword_search_coming(user_id, user_text):
    users_refs = db.collection('隨機推薦電影清單').document('即將上映(中文)')
    score_rank = []  # 建立一個暫存相似度分數,以便之後從小到大排序
    relative_list = []  # 創建計算LCS similarities的list
    name_list = []  # 創建LCS similarities計算後數值大於0的電影名稱的list
    try:
        docs = users_refs.get()
        for doc in docs.to_dict():
            mov_name_ch = str(
                docs.to_dict().get(doc).strip()).split('$%$')[0].strip()
            mov_name_en = str(
                docs.to_dict().get(doc).strip()).split('$%$')[1].strip()
            max_len = max(len(mov_name_ch), len(user_text))  # 最大字串長度
            # max_len = (len(mov_name_ch) + len(user_text)) / 2
            lcs_len = lcs(str(user_text), mov_name_ch)  # LCS得到的最大字串長度
            similar = float(lcs_len / max_len)  # 相似度

            if len(relative_list) < 5 and similar > 0:
                if similar in relative_list:
                    similar = similar + (random.randint(0, 1000) * 0.000001)
                relative_list.append(similar)
                name_list.append(mov_name_en)

            elif len(relative_list) == 5 and similar > 0:
                if similar > min(relative_list):
                    if similar in relative_list:
                        similar = similar + (random.randint(0, 1000) *
                                             0.000001)
                    name_list[relative_list.index(
                        min(relative_list))] = mov_name_en
                    relative_list[relative_list.index(
                        min(relative_list))] = similar
        # print(name_list) # 測試BUG
        # print(relative_list) # 測試BUG
        if len(relative_list) == 0:
            line_bot_api.push_message(
                user_id, TextSendMessage('親' + '\n' + '很抱歉我們找不到與您下的關鍵詞相關的電影'))
        else:
            score_rank = relative_list.copy()
            # print(score_rank)  # 測試BUG
            score_rank.sort(reverse=True)
            # print(score_rank)  # 測試BUG

            image_url = []  # 圖片網址
            movie_name_Chinese = []  # 電影中文名稱
            movie_name_English = []  # 電影英文名稱
            movie_type = []  # 電影類型
            trailer_url = []  # 預告片網址
            age_level = []  # 電影分級
            movie_time = []  # 電影上映日期

            for score_b in score_rank:
                users_ref = db.collection("即將上映電影").document(
                    "%s" % (name_list[relative_list.index(score_b)]))
                doc = users_ref.get()

                if 'Movie_Name_Chinese' in doc.to_dict():
                    movie_name_Chinese.append(
                        doc.to_dict()['Movie_Name_Chinese'])
                else:
                    movie_name_Chinese.append('')

                if 'Movie_Name_English' in doc.to_dict():
                    movie_name_English.append(
                        doc.to_dict()['Movie_Name_English'])
                else:
                    movie_name_English.append('')

                if 'Movie_ImageURL' in doc.to_dict():
                    image_url.append(doc.to_dict()['Movie_ImageURL'])
                else:
                    image_url.append('')

                if 'Movie_PreviewURL' in doc.to_dict():
                    trailer_url.append(doc.to_dict()['Movie_PreviewURL'])
                else:
                    trailer_url.append('')

                if 'Movie_Type' in doc.to_dict():
                    movie_type.append(doc.to_dict()['Movie_Type'])
                else:
                    movie_type.append('')

                if 'Movie_AgeLimit' in doc.to_dict():
                    age_level.append(doc.to_dict()['Movie_AgeLimit'])
                else:
                    age_level.append('')

                if 'Movie_ReleaseTime' in doc.to_dict():
                    movie_time.append(doc.to_dict()['Movie_ReleaseTime'])
                else:
                    movie_time.append('')

            # 宣告儲存橫向捲軸的list
            column_list = []
            lenth = len(relative_list)
            for pnum in range(0, lenth):
                if trailer_url[pnum] != '':
                    URLweb = trailer_url[pnum]
                else:
                    URLweb = 'https://www.youtube.com/results?search_query=' + movie_name_Chinese[
                        pnum] + '預告'

                carouselcolumn = CarouselColumn(
                    thumbnail_image_url='%s' % (image_url[pnum]),  # 電影的圖片
                    title='電影名稱:%s' % (movie_name_Chinese[pnum]),  # 電影的名字
                    text='電影類型:' + movie_type[pnum] + '\n' + '分級限制:' +
                    age_level[pnum] + '\n' + '上映時間:' +
                    movie_time[pnum],  # 電影的類型
                    actions=[
                        PostbackTemplateAction(
                            label='預約看這部',
                            text='我想預約' + '\n' + movie_name_Chinese[pnum],
                            data='我想預約' + '\n' + movie_name_Chinese[pnum]),
                        URITemplateAction(label='觀看預告', uri='%s' % (URLweb))
                    ])
                column_list.append(carouselcolumn)

            Carousel_template = CarouselTemplate(
                columns=column_list,
                image_aspect_ratio=
                "square",  # 圖片形狀,一共兩個參數。square指圖片1:1,rectangle指圖片1.5:1
                image_size=
                "contain"  # 圖片size大小設定,一共兩個參數。cover指圖片充滿畫面,contain指縮小圖片塞到畫面
            )
            line_bot_api.push_message(
                user_id,
                TemplateSendMessage(
                    alt_text="為您推薦即將上映的電影",
                    template=Carousel_template))  # 將影城的圖片等資訊傳送給使用者

    except Exception:
        print('error in getting movie time')
        line_bot_api.push_message(
            user_id, TextSendMessage('親' + '\n' + '很抱歉我們找不到與您下的關鍵詞相關的電影'))
コード例 #2
0
import os
from linebot.models import TemplateSendMessage, ButtonsTemplate, URITemplateAction, MessageTemplateAction

CAROUSEL = os.environ.get('BASE_ROUTE') + '/image/caousel.jpg'

button_info = TemplateSendMessage(
    alt_text="使用說明",
    template=ButtonsTemplate(
        title="使用說明",
        text="請參考以下說明:",
        thumbnail_image_url=CAROUSEL,
        actions=[
            URITemplateAction(
                label='詳細功能介紹',
                uri=
                'https://github.com/0penth3wind0w/Freddy-the-bot/blob/master/README.md'
            ),
            MessageTemplateAction(label="使用範例", text="使用範例")
        ]))
コード例 #3
0
def send_button_message(reply_token,
                        type,
                        param: dict = {
                            'start': '',
                            'end': ''
                        }):
    line_bot_api = LineBotApi(channel_access_token)

    select_sport = TemplateSendMessage(
        alt_text='Buttons template',
        template=ButtonsTemplate(
            thumbnail_image_url=
            'https://github.com/jjjjjacckk/TOC-2020/blob/master/img/button_pic.JPG/?raw=True',
            title='球類運動',
            text='選擇要查詢哪一種球類場地',
            actions=[
                PostbackAction(label='排球',
                               display_text='你選擇了「排球」',
                               data='type=sport&ball=volley'),
                # PostbackAction(
                #     label='籃球',
                #     display_text='你選擇了「籃球」',
                #     data='type=sport&ball=basket'
                # ),
                PostbackAction(label='回到初始狀態',
                               display_text='你選擇了「回到初始狀態」',
                               data='type=reset&ball=None'),
            ]))

    select_gender = TemplateSendMessage(
        alt_text='Buttons template',
        template=ButtonsTemplate(
            thumbnail_image_url=
            'https://github.com/jjjjjacckk/TOC-2020/blob/master/img/button_pic.JPG/?raw=True',
            title='排球場地類型',
            text='選擇要查男網、女網、或是都查',
            actions=[
                PostbackAction(label='我要查男網',
                               display_text='你選擇了「我要查男網」',
                               data='type=gender&gender=boy'),
                PostbackAction(label='我要查女網',
                               display_text='你選擇了「我要查女網」',
                               data='type=gender&gender=girl'),
                PostbackAction(label='男女網都查',
                               display_text='你選擇了「男女網都查」',
                               data='type=gender&gender=both'),
                PostbackAction(label='重新選擇球類',
                               display_text='你選擇了「重新選擇球類」',
                               data='type=gender&gender=go_back'),
            ]))

    today = datetime.today()
    today = today.strftime("%Y-%m-%dt00:00")

    select_date_start = TemplateSendMessage(
        alt_text='Buttons template',
        template=ButtonsTemplate(
            thumbnail_image_url=
            'https://github.com/jjjjjacckk/TOC-2020/blob/master/img/button_pic.JPG/?raw=True',
            title='輸入要查詢的「開始」時間區段',
            text='選擇要查詢的第一天:',
            actions=[
                DatetimePickerAction(type="datetimepicker",
                                     label="選擇開始的日期",
                                     data="type=date_start&date=start",
                                     mode="datetime",
                                     initial=today,
                                     max="2030-02-28t23:59",
                                     min="2020-12-10t00:00"),
                PostbackAction(label='重新選擇場地類型',
                               display_text='你選擇了「重新選擇場地類型」',
                               data='type=date_start&date=go_back'),
                PostbackAction(label='取消查詢',
                               display_text='你選擇了「取消查詢」',
                               data='type=reset&date=None')
            ]))

    select_date_end = TemplateSendMessage(
        alt_text='Buttons template',
        template=ButtonsTemplate(
            thumbnail_image_url=
            'https://github.com/jjjjjacckk/TOC-2020/blob/master/img/button_pic.JPG/?raw=True',
            title='輸入要查詢的「結束」時間區段',
            text='選擇要查詢的最後一天。\n若僅查詢一天,請選擇「和開始時間相同」的日期',
            actions=[
                DatetimePickerAction(type="datetimepicker",
                                     label="選擇結束的日期",
                                     data="type=date_end&date=end",
                                     mode="datetime",
                                     initial=today,
                                     max="2030-02-28t23:59",
                                     min="2020-12-10t00:00"),
                PostbackAction(label='重新選擇開始時間',
                               display_text='你選擇了「重新選擇開始時間」',
                               data='type=date_end&date=go_back'),
                PostbackAction(label='取消查詢',
                               display_text='你選擇了「取消查詢」',
                               data='type=reset&day=None')
            ]))

    select_day = TemplateSendMessage(
        alt_text='Buttons template',
        template=ButtonsTemplate(
            thumbnail_image_url=
            'https://github.com/jjjjjacckk/TOC-2020/blob/master/img/button_pic.JPG/?raw=True',
            title='選擇要查詢的星期',
            text='例:選擇星期一、四,則只會公布選擇時間區間中,星期一、四的空場時間',
            actions=[
                PostbackAction(label='全部平日',
                               display_text='你選擇了「全部平日」',
                               data='type=day&day=weekdays'),
                PostbackAction(
                    # label='自訂時間',
                    # display_text='你選擇了「自訂時間」',
                    # data='type=day&day=manual'
                    label='週末',
                    display_text='你選擇了「週末」',
                    data='type=day&day=weekend'),
                PostbackAction(label='重新選擇排球場地類型',
                               display_text='你選擇了「重新選擇時間」',
                               data='type=day&day=go_back'),
                PostbackAction(label='取消查詢',
                               display_text='你選擇了「取消查詢」',
                               data='type=reset&day=None')
            ]))

    # not use on this stage
    final_message = f''
    confirm = TemplateSendMessage(
        alt_text='Buttons template',
        template=ButtonsTemplate(
            thumbnail_image_url=
            'https://github.com/jjjjjacckk/TOC-2020/blob/master/img/button_pic.JPG/?raw=True',
            title='以下是你輸入的資料,請問都正確嗎?',
            text=final_message,
            actions=[
                PostbackAction(label='正確',
                               display_text='你選擇了「正確」\n將開始爬取資料...',
                               data='type=rent&data=correct'),
                PostbackAction(label='錯誤',
                               display_text='你選擇了「錯誤」\n重新選擇球類運動',
                               data='type=reset&data=None')
            ]))

    rent = TemplateSendMessage(
        alt_text='Buttons template',
        template=ButtonsTemplate(
            thumbnail_image_url=
            'https://github.com/jjjjjacckk/TOC-2020/blob/master/img/button_pic.JPG/?raw=True',
            title='要帶你去借場的網站嗎?',
            text='- 是:會開啟借場網站\n- 否:重新回到初始狀態',
            actions=[
                URIAction(
                    label='是',
                    uri='https://cet.acad.ncku.edu.tw/ste/index.php?c=ste11211'
                ),
                PostbackAction(label='否',
                               display_text='你選擇了「否」',
                               data='type=reset&data=None')
            ]))

    if type == 'select_sport':
        line_bot_api.reply_message(reply_token, select_sport)
    elif type == 'select_gender':
        line_bot_api.reply_message(reply_token, select_gender)
    elif type == 'select_day':
        line_bot_api.reply_message(reply_token, select_day)
    elif type == 'select_date_start':
        line_bot_api.reply_message(reply_token, select_date_start)
    elif type == 'select_date_end':
        line_bot_api.reply_message(reply_token, select_date_end)
    elif type == 'confirm':
        line_bot_api.reply_message(reply_token, confirm)
    elif type == 'rent':
        line_bot_api.reply_message(reply_token, rent)
    else:
        line_bot_api.reply_message(
            reply_token, TextMessage(text="No matching button template TT"))

    return "OK"
コード例 #4
0
ファイル: main.py プロジェクト: ChienHsiung/api
def mysub(event):
    # 取出userId
    userId = json.loads(str(event.source))
    userId = userId['userId']
    # 將timestamp轉成localtime
    now = time.localtime(event.timestamp)
    yymmdd = str(time.strftime('%Y/%m/%d', now))
    hhmmss = str(time.strftime('%H:%M:%S', now))

    # 側錄所有訊息
    sql = "insert into log(uid,time,event) values('%s','%s','%s')" % (
        userId, event.timestamp, event.message.text)
    defs.run_mysql(sql)

    # ========== 判斷式 ==========
    if event.source.type == 'user' and event.message.text == 'show':
        # 呼叫自訂義函數
        # defs.get_datetime()
        # 呼叫自訂義函數
        # 可傳送sql查詢
        # 有接收return值

        sql = '''insert into log(uid,time,event) values('%s','%s','%s')''' % (
            userId, event.timestamp, event.message.text)
        defs.run_mysql(sql)
        text = "SQL指令執行完成"
        line_bot_api.reply_message(event.reply_token, TextSendMessage(text))
    elif event.source.type == 'user' and event.message.text == 'ddt':
        # 呼叫import的函數
        defs.trytry(event)
        # text = "ddt"
        # line_bot_api.reply_message(event.reply_token,TextSendMessage(text))
    elif event.message.text == "貼圖":
        # 使用StickerSendMessage
        line_bot_api.reply_message(
            event.reply_token, StickerSendMessage(package_id=1, sticker_id=2))
        # 同時傳送兩個訊息
        # line_bot_api.reply_message(event.reply_token,[StickerSendMessage(package_id=1, sticker_id=2),LocationSendMessage(title='地下銀行', address='地獄 -18F \n Cont Ty THNN XXXXX', latitude=10.718926, longitude=106.639811)])
        # 顯示位置座標
    elif event.message.text == "位置":
        line_bot_api.reply_message(
            event.reply_token,
            LocationSendMessage(title='地下銀行',
                                address='地獄 -18F \n Cont Ty THNN XXXXX',
                                latitude=10.718926,
                                longitude=106.639811))
        # 使用Buttons Template (單個)(之一)
    elif event.message.text == "menu":
        buttons_template = TemplateSendMessage(
            alt_text='次選單',
            template=ButtonsTemplate(
                title='選擇服務(最多四個)',
                text='請選擇',
                thumbnail_image_url=
                'https://thumbs2.imgbox.com/ad/2e/NahWaebN_t.gif',
                actions=[
                    MessageTemplateAction(label='越盾買美金', text='越盾買美金'),
                    MessageTemplateAction(label='美金買越盾', text='美金買越盾'),
                    MessageTemplateAction(label='越盾買台幣', text='越盾買台幣'),
                    MessageTemplateAction(label='台幣買越盾', text='台幣買越盾')
                ]))
        line_bot_api.reply_message(event.reply_token, buttons_template)
        # 使用Buttons Template (單個)(之二)
    elif event.message.text == "Buttons Template":
        buttons_template = TemplateSendMessage(
            alt_text='Buttons Template',
            template=ButtonsTemplate(
                title='這是ButtonsTemplate',
                text='ButtonsTemplate可以傳送text,uri',
                thumbnail_image_url=
                'https://thumbs2.imgbox.com/ad/2e/NahWaebN_t.gif',
                actions=[
                    MessageTemplateAction(label='ButtonsTemplate',
                                          text='ButtonsTemplate'),
                    URITemplateAction(label='VIDEO1',
                                      uri='http://sendvid.com/pkdn0s4w'),
                    PostbackTemplateAction(label='postback',
                                           text='postback text',
                                           data='postback1')
                ]))
        line_bot_api.reply_message(event.reply_token, buttons_template)
        # 使用Carousel template (多個Buttons Template)
    elif event.message.text == "Carousel template":
        print("Carousel template")
        Carousel_template = TemplateSendMessage(
            alt_text='目錄 template',
            template=CarouselTemplate(columns=[
                CarouselColumn(
                    thumbnail_image_url=
                    'https://thumbs2.imgbox.com/ad/2e/NahWaebN_t.gif',
                    title='this is menu1',
                    text='description1',
                    actions=[
                        PostbackTemplateAction(
                            label='postback1',
                            # text='postback text1',
                            # data='action=buy&itemid=1'
                            data='ping'),
                        MessageTemplateAction(label='message1',
                                              text='message text1'),
                        URITemplateAction(label='uri1',
                                          uri='http://103.29.68.198/')
                    ]),
                CarouselColumn(
                    thumbnail_image_url=
                    'https://images2.imgbox.com/fe/11/6JobQjTm_o.jpg',
                    title='this is menu2',
                    text='description2',
                    actions=[
                        PostbackTemplateAction(label='postback2',
                                               text='postback text2',
                                               data='action=buy&itemid=2'),
                        MessageTemplateAction(label='message2',
                                              text='message text2'),
                        URITemplateAction(label='連結2',
                                          uri='http://sendvid.com/pkdn0s4w')
                    ]),
                CarouselColumn(
                    thumbnail_image_url=
                    'https://thumbs2.imgbox.com/2e/1c/AP41ETSA_t.jpg',
                    title='this is menu3',
                    text='description3',
                    actions=[
                        PostbackTemplateAction(label='postback2',
                                               text='postback text2',
                                               data='action=buy&itemid=2'),
                        MessageTemplateAction(label='message2',
                                              text='message text2'),
                        URITemplateAction(label='連結2',
                                          uri='http://sendvid.com/pkdn0s4w')
                    ])
            ]))
        line_bot_api.reply_message(event.reply_token, Carousel_template)
    else:
        text = "userId= \n %s \n message.text=%s \n source.type=%s \n event.timestamp= \n %s" % (
            userId, event.message.text, event.source.type, event.timestamp)
        line_bot_api.reply_message(event.reply_token, TextSendMessage(text))
コード例 #5
0
def handle_message(event):
    user_profile = event.source.user_id
    # 由於在quick_reply的地方,在按鈕給了text針對按鈕的text不予回應
    if (event.message.text.find('choose:') != -1):
        pass
    # 結合旋轉門選單中的"答題情形",會有文字detail的輸入,當符合detail字串時判斷成立
    elif (event.message.text.find('detail') != -1):
        # sa回答到哪題
        sa_qid = redis.hget(user_profile, "sa_qid")
        # sysops回答到哪題
        sys_qid = redis.hget(user_profile, "sys_qid")
        # develop回答到哪題
        dev_qid = redis.hget(user_profile, "dev_qid")
        # 總答對題數
        correct = redis.hget(user_profile, "result")
        # 總回答題數
        total = redis.hget(user_profile, "total")
        # 將上面的變數包裝起來
        reply_list = [
            TextSendMessage(
                text="各類回答紀錄\nsa:%s/100\ndeveloper:%s/100\nsysops:%s/100" %
                (sa_qid, sys_qid, dev_qid)),
            TextSendMessage(text="總共答對 (%s)題\n總共回答 (%s)題" % (correct, total))
        ]
        # 回覆訊息
        line_bot_api.reply_message(event.reply_token, reply_list)
    # 當用戶輸入AWS時判斷成立
    elif (event.message.text.find('AWS') != -1):
        # 提供AWS白皮書網址及AWS培訓與認證網址
        url1 = 'https://aws.amazon.com/tw/whitepapers/'
        url2 = 'https://aws.amazon.com/tw/training/'
        # 將上面的變數包裝起來
        reply_list = [
            TextSendMessage(text="AWS 白皮書連結:\n%s" % (url1)),
            TextSendMessage(text="AWS 培訓與認證:\n%s" % (url2))
        ]
        # 回覆訊息
        line_bot_api.reply_message(event.reply_token, reply_list)

    # 結合旋轉門選單中的"AWS相關課程",進到flexbubble選單,按下"李秉鴻老師簡介",會有文字"我想看李秉鴻老師的簡介"的輸入,當符合字串時判斷成立
    elif (event.message.text.find('我想看李秉鴻老師的簡介') != -1):
        # 回覆訊息
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text=
                "李秉鴻老師:\n現為區塊鏈公司之創辦人,曾任北京軟體公司顧問、專案經理、系統架構師、新創企業之雲服務架構工程師、日商大數據暨雲服務後端工程師,擅長雲端應用開發與研究,並有多項雲服務專案開發經驗,獲有AWS Solution Architect - Associate及AWS SysOps Administarator - Associate等國際技術認證。熱愛成就他人,喜悅分享知識,將探索知識的過程轉化成淺白的技術講義做分享,熱愛挑戰問題,將大問題拆解成小問題,逐步帶領學生克服問題,每當看到學生成長,就覺得這個世界總是美好的。"
            ))

    # 結合旋轉門選單中的"Linux課程",進到flexbubble選單,按下"陳建村老師簡介",會有文字"我想看陳建村老師的簡介"的輸入,當符合字串時判斷成立
    elif (event.message.text.find('我想看陳建村老師的簡介') != -1):
        # 回覆訊息
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text=
                "陳建村老師:\n自2010年起擔任公私立大學資管及資工系兼任講師、坊間培訓中心講師、線上遊戲公司系統顧問,兼具產業界技術實力及教學熱忱,教學設計生動活潑,授課採用心智圖(圖像記憶法)加速學員學習與記憶,關心學生學習狀況,因此深受學生喜愛,教學成果卓越,尤其SQL語法課程與OpenSource實作課程都是他的教學強項。"
            ))

    # 結合旋轉門選單中的"Linux課程",進到flexbubble選單,按下"黃智鑠老師簡介",會有文字"我想看黃智鑠老師的簡介"的輸入,當符合字串時判斷成立
    elif (event.message.text.find('我想看黃智鑠老師的簡介') != -1):
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text=
                "黃智鑠老師:\n超過10年Linux中小型企業Open Source解決方案的推動的實務經驗、與多年的教學經驗,專長Linux系統建置、管理、SNMP通訊協定、Linux網路管理,重要的專案與經歷如下:中壢資策會兼任講師、教育網路中心 伺服器管理、HP OpenView 網路系統管理系統 建置、中小企業open source solution建置/管理、IBM Tivoli 網路系統管理系統 建置!"
            ))

    # 結合旋轉門選單中的"網路工程課程",進到flexbubble選單,按下"戴致禮老師簡介",會有文字"我想看戴致禮老師的簡介"的輸入,當符合字串時判斷成立
    elif (event.message.text.find('我想看戴致禮老師的簡介') != -1):
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text=
                "戴致禮老師:\n具有20年網路工程經驗與16年Cisco講師教學經驗,重要的專案與經歷如下: ※美商SITA公司網路系統顧問─負責「中國北京首都機場T3航站樓網路工程建置案」與「台灣桃園機場骨幹網路升級擴建案」 ※中華電信訓練所─負責進階網路技術授課兼任講師,已陸續主持IPv6、Multicast、QoS、BGP、MPLS VPN、MPLS TE、IPSec VPN、SSL VPN等研討會 ※聚碩科技/智邦科技專長:Cisco大型跨國企業網路與Internet ISP骨幹網路的規劃與建置、各種領域Cisco網路的解決方案,包含:Data Center、Design、Routing & Switching、Security、Service Provider、Voice、Wireless"
            ))

    # 當用戶按下菜單的最右邊按鈕,會輸入more,符合字串more時判斷成立
    elif (event.message.text.find('more') != -1):
        # 回覆訊息旋轉門選單
        line_bot_api.reply_message(
            event.reply_token,
            TemplateSendMessage(alt_text="Tibame AWS 功能選單,為您服務",
                                template=button_template_message))

    #彩蛋,均在Line官方console做訊息設定,如要相同訊息,亦可寫在程式碼中
    elif (event.message.text.find('乃元') != -1):
        pass

    elif (event.message.text.find('秉鴻') != -1):
        pass

    elif (event.message.text.find('Travis') != -1):
        pass

    elif (event.message.text.find('南風') != -1):
        pass

    elif (event.message.text.find('南風哥') != -1):
        pass

    elif (event.message.text.find('小天使') != -1):
        pass

    elif (event.message.text.find('輕鬆一下') != -1):
        pass

    elif (event.message.text.find('可惡') != -1):
        pass

    elif (event.message.text.find('我問號') != -1):
        pass

    elif (event.message.text.find('CC103') != -1):
        pass

    elif (event.message.text.find('CC104') != -1):
        pass

    # 收到不認識的訊息時,回覆原本的旋轉門菜單
    else:
        line_bot_api.reply_message(
            event.reply_token,
            TemplateSendMessage(alt_text="Tibame AWS 功能選單,為您服務",
                                template=button_template_message))
コード例 #6
0
ファイル: zero.py プロジェクト: bayu2309/wait
def handle_text_message(event):

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

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

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

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

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

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

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

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

		try:
			result = wikipedia.summary(keyword)

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

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

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

		try:
			entry = KBBI(keyword)
		except KBBI.TidakDitemukan as e:
			result = str(e)
		else:
			result = "Definisi {}:\n".format(keyword)
			if ex:
				result += '\n'.join(entry.arti_contoh)
			else:
				result += str(entry)
		return result
	
	def urban(keyword, ex=True):
		
		try:
			entry = udtop(keyword)
		except (TypeError, AttributeError, udtop.TermNotFound) :
			result = "{} definition not found in urbandictionary.".format(keyword)
		else:
			result = "{} definition:\n".format(keyword)
			if ex:
				result += str(entry)
			else:
				result += entry.definition
		return result
	
	if text == '/help':
		line_bot_api.reply_message(
			event.reply_token,
			TextSendMessage('I will be here for you'))
	
	elif text == '/leave':
		if isinstance(event.source, SourceGroup):
			line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage('I am leaving the group...'))
			line_bot_api.leave_group(event.source.group_id)
		
		elif isinstance(event.source, SourceRoom):
			line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage('I am leaving the group...'))
			line_bot_api.leave_room(event.source.room_id)
			
		else:
			line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage('>_< cannot do...'))
	
	elif text == '/about':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage("Hello, my name is Reika \n"
								"Nice to meet you... \n"
								"source code: https://github.com/Vetrix/ZERO"))
	
	elif text == '/cmd':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage("Without parameters: \n"
								"/about, /help, /profile, /leave, /lang \n"
								"/confirm, /buttons, /search image, \n"
								"/manga, /dots, /track, /bet \n"
								"/image_carousel, /imagemap \n"
								"\n"
								"With parameters: \n"
								"/echo, /kbbi, /wolfram, /wolframs, \n"
								"/trans, /wiki, /wikilang, /urban, /ox"))
	
	elif text == '/lang':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage("Language for translation see here \n"
								"https://github.com/Vetrix/ZERO/blob/master/Lang.txt"))
	
	elif text == '/manga':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage("mangaku.in"))
	
	elif text == '/dots':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage("https://www.instagram.com/dotaindonesia2/"))
	
	elif text == '/track':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage("http://dota2.prizetrac.kr/international2018"))
	
	elif text == '/bet':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage("dota2.com/predictions"))
	
	elif text == '/search image':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage("Try this up \n"
								"https://reverse.photos/"))
	
	elif text == '/profile':
		if isinstance(event.source, SourceGroup):
			try:
				profile = line_bot_api.get_group_member_profile(event.source.group_id, event.source.user_id)
				result = ("Display name: " + profile.display_name + "\n" +
						  "Profile picture: " + profile.picture_url + "\n" +
						  "User_ID: " + profile.user_id)
			except LineBotApiError:
				pass	
			line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage(result))
			
		
		elif isinstance(event.source, SourceRoom):
			try:
				profile = line_bot_api.get_room_member_profile(event.source.room_id, event.source.user_id)
				result = ("Display name: " + profile.display_name + "\n" +
						  "Profile picture: " + profile.picture_url + "\n" +
						  "User_ID: " + profile.user_id)
			except LineBotApiError:
				pass	
			line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage(result))
			
				
		else:
			try:
				profile = line_bot_api.get_profile(event.source.user_id)
				result = ("Display name: " + profile.display_name + "\n" +
						  "Profile picture: " + profile.picture_url + "\n" +
						  "User_ID: " + profile.user_id)
				if profile.status_message:
					result += "\n" + "Status message: " + profile.status_message
			except LineBotApiError:
				pass
			line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage(result))
	
	elif text=='/kbbi':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage('command /kbbi {input}'))
	
	elif text=='/urban':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage('command /urban {input}'))
	
	elif text=='/ox':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage('command /ox {input}'))
	
	elif text=='/wolfram':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage('command /wolfram {input}'))
				
	elif text=='/trans':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage('command /trans sc={}, to={}, {text}'))
	
	elif text=='/wiki':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage('command /wiki {text}'))
				
	elif text=='/wikilang':
		line_bot_api.reply_message(
				event.reply_token,
				TextSendMessage('command /wikilang {language_id}'))
	
	elif text == '/confirm':
		confirm_template = ConfirmTemplate(text='Do it?', actions=[
			MessageTemplateAction(label='Yes', text='Yes!'),
			MessageTemplateAction(label='No', text='No!'),
			])
		template_message = TemplateSendMessage(
			alt_text='Confirm alt text', template=confirm_template)
		line_bot_api.reply_message(event.reply_token, template_message)
	
	elif text == '/buttons':
		buttons_template = ButtonsTemplate(
			title='My buttons sample', text='Hello, my buttons', actions=[
				URITemplateAction(
					label='Go to line.me', uri='https://line.me'),
				PostbackTemplateAction(label='ping', data='ping'),
				PostbackTemplateAction(
					label='ping with text', data='ping',
					text='ping'),
				MessageTemplateAction(label='Translate Rice', text='米')
			])
		template_message = TemplateSendMessage(
			alt_text='Buttons alt text', template=buttons_template)
		line_bot_api.reply_message(event.reply_token, template_message)
	
	elif text == '/image_carousel':
		image_carousel_template = ImageCarouselTemplate(columns=[
			ImageCarouselColumn(image_url='https://via.placeholder.com/1024x1024',
								action=DatetimePickerTemplateAction(label='datetime',
																	data='datetime_postback',
																	mode='datetime')),
			ImageCarouselColumn(image_url='https://via.placeholder.com/1024x1024',
								action=DatetimePickerTemplateAction(label='date',
																	data='date_postback',
																	mode='date'))
		])
		template_message = TemplateSendMessage(
			alt_text='ImageCarousel alt text', template=image_carousel_template)
		line_bot_api.reply_message(event.reply_token, template_message)
		
	elif text == '/imagemap':
		pass
	
	elif text[0:].lower().strip().startswith('/wolfram '):
		line_bot_api.reply_message(
			event.reply_token,
			TextSendMessage(wolfram(split1(text))))
			
	elif text[0:].lower().strip().startswith('/wolframs '):
		line_bot_api.reply_message(
			event.reply_token,
			ImageSendMessage(original_content_url= wolframs(split4(text)),
								preview_image_url= wolframs(split4(text))))

	elif text[0:].lower().strip().startswith('/kbbi '):
		line_bot_api.reply_message(
			event.reply_token,
			TextSendMessage(find_kbbi(split2(text))))
			
	elif text[0:].lower().strip().startswith('/urban '):
		line_bot_api.reply_message(
			event.reply_token,
			TextSendMessage(urban(split8(text))))
			
	elif text[0:].lower().strip().startswith('/ox '):
		line_bot_api.reply_message(
			event.reply_token,
			TextSendMessage(ox(split9(text))))
			
	elif text[0:].lower().strip().startswith('/echo ') :
		line_bot_api.reply_message(
			event.reply_token,
			TextSendMessage(split3(text)))
			
	elif text[0:].lower().strip().startswith('/trans ') :
		line_bot_api.reply_message(
			event.reply_token,
			TextSendMessage(trans(split5(text))))
	
	elif text[0:].lower().strip().startswith('/wiki ') :
		line_bot_api.reply_message(
			event.reply_token,
			TextSendMessage(wiki_get(split6(text), set_id=set_id)))
			
	elif text[0:].lower().strip().startswith('/wikilang ') :
		line_bot_api.reply_message(
			event.reply_token,
			TextSendMessage(wiki_lang(split7(text), set_id=set_id)))
コード例 #7
0
ファイル: app.py プロジェクト: jeffkao1124/funny0money
def handle_message(event):
    input_text = event.message.text
    history_list = get_history_list()
    if history_list[0]['type'] == 'user':  #個人部分
        selfId = history_list[0]['user_id']
        if (history_list[0]['Status'] == 'save') and ('記帳' in input_text):
            output_text = '記帳成功'
        elif input_text == '@官網':
            output_text = 'https://reurl.cc/4yjNyY'
        elif input_text == '@help':
            output_text = '請直接把多多分帳邀請至群組以解鎖分帳功能唷~'

        elif '多多公布欄' in input_text:
            output_text = '多多感謝您的體諒!我會在群組中繼續為大家服務。'
        elif input_text == '理財':
            line_bot_api.reply_message(
                event.reply_token,
                TemplateSendMessage(
                    alt_text='Buttons template',
                    template=ButtonsTemplate(
                        title='理財小幫手',
                        text='請選擇功能',
                        actions=[
                            URITemplateAction(
                                label='股市', uri='https://tw.stock.yahoo.com/'),
                            URITemplateAction(
                                label='匯率',
                                uri='https://rate.bot.com.tw/xrt?Lang=zh-TW'),
                            URITemplateAction(
                                label='財經新聞',
                                uri='https://www.msn.com/zh-tw/money')
                        ])))

    elif history_list[0]['type'] == 'room':  #聊天室部分
        Carousel_template = TemplateSendMessage(
            alt_text='請把我加入群組',
            template=ImageCarouselTemplate(columns=[
                ImageCarouselColumn(
                    image_url="https://i.imgur.com/wUob12p.jpg",
                    action=URITemplateAction(
                        uri="https://i.imgur.com/wUob12p.jpg")),
                ImageCarouselColumn(
                    image_url="https://i.imgur.com/MRMWivy.jpg",
                    action=URITemplateAction(
                        uri="https://i.imgur.com/MRMWivy.jpg"))
            ]))
        line_bot_api.reply_message(event.reply_token, Carousel_template)

    else:  #群組部分
        selfGroupId = history_list[0]['group_id']
        if (history_list[0]['Status'] == 'set') and ('@分帳設定' in input_text):
            groupNumber = get_groupPeople(history_list, 1)
            output_text = '分帳設定成功:共有' + str(groupNumber) + '人分帳'

        elif (history_list[0]['Status'] == 'save') and ('@分帳' in input_text):
            output_text = '分帳記錄成功'

        elif (history_list[0]['Status'] == 'None') and ('@分帳' in input_text):
            output_text = '分帳記錄失敗'

        elif input_text == '@設定查詢':
            groupMember = get_groupPeople(history_list, 2)
            output_text = "分帳名單:"
            for i in range(get_groupPeople(history_list, 1)):
                output_text += '\n' + groupMember[i]

        elif '@美金設定' in input_text:
            NowRate = get_TodayRate(1)
            output_text = "今日匯率:" + str(NowRate)

        elif '@日圓設定' in input_text:
            NowRate = get_TodayRate(2)
            output_text = "今日匯率:" + str(NowRate)

        elif '@歐元設定' in input_text:
            NowRate = get_TodayRate(3)
            output_text = "今日匯率:" + str(NowRate)

        elif input_text == '@刪除':
            for i in range(3):
                data_UserData = usermessage.query.filter(
                    usermessage.group_id == selfGroupId).filter(
                        usermessage.status == 'save').delete(
                            synchronize_session='fetch')
            output_text = '刪除成功'
            db.session.commit()

        elif input_text == '@設定刪除':
            data_UserData = usermessage.query.filter(
                usermessage.group_id == selfGroupId).filter(
                    usermessage.status == 'set').delete(
                        synchronize_session='fetch')
            db.session.commit()
            output_text = '刪除成功'

        elif '@clear' in input_text:  #刪除單個分帳者
            data_UserData = usermessage.query.filter(
                usermessage.status == 'set').filter(
                    usermessage.group_id == selfGroupId)
            del_spiltperson = ' ' + input_text.replace('@clear',
                                                       '').strip(' ') + ' '
            for _data in data_UserData:
                old_nickname = ' ' + _data.nickname + ' '
                old_nickname = old_nickname
                if old_nickname.count(del_spiltperson):
                    new_nickname = old_nickname.replace(
                        del_spiltperson, ' ').replace('  ', ' ').strip(' ')
                    add_data = usermessage(id=_data.id,
                                           group_num='0',
                                           nickname=new_nickname,
                                           group_id=_data.group_id,
                                           type=_data.type,
                                           status='set',
                                           account='0',
                                           user_id=_data.user_id,
                                           message=_data.message,
                                           birth_date=_data.birth_date)
                    personID = _data.id
                    data_UserData = usermessage.query.filter(
                        usermessage.id == personID).delete(
                            synchronize_session='fetch')
                    db.session.add(add_data)
                    db.session.commit()
                    output_text = "刪除成功,若被刪除的人在帳目中,請記得把帳目也修改掉!\n\n分帳名單:"
            try:
                if output_text == '刪除成功,若被刪除的人在帳目中,請記得把帳目也修改掉!\n\n分帳名單:':
                    groupMember = get_groupPeople(history_list, 2)
                    for i in range(get_groupPeople(history_list, 1)):
                        output_text += '\n' + groupMember[i]
            except:
                output_text = '刪除失敗'

        elif '@delete' in input_text:  #刪除單筆分帳
            count = usermessage.query.filter(
                usermessage.status == 'save').filter(
                    usermessage.group_id == selfGroupId).count()
            try:
                del_number = int(input_text.strip('@delete '))
                if del_number <= count:
                    data_UserData = usermessage.query.order_by(
                        usermessage.birth_date).filter(
                            usermessage.status == 'save').filter(
                                usermessage.group_id ==
                                selfGroupId)[del_number - 1:del_number]
                    for _data in data_UserData:
                        personID = _data.id
                    data_UserData = usermessage.query.filter(
                        usermessage.id == personID).delete(
                            synchronize_session='fetch')
                    output_text = '刪除成功' + '\n\n' + '記帳清單:' + '\n' + get_settleList(
                        selfGroupId)
                    db.session.commit()
                else:
                    output_text = '刪除失敗'
            except:
                output_text = '刪除失敗'

        elif input_text == '@查帳':
            output_text = get_settleList(selfGroupId)
            flexmsg = {
                "type": "flex",
                "altText": "Flex Message",
                "contents": {
                    "type": "bubble",
                    "hero": {
                        "type": "image",
                        "url": "https://imgur.com/KahFQi9.jpg",
                        "size": "full",
                        "aspectRatio": "20:13",
                        "aspectMode": "cover",
                        "action": {
                            "type": "text",
                            "text": "查查"
                        }
                    },
                    "body": {
                        "type":
                        "box",
                        "layout":
                        "vertical",
                        "contents": [{
                            "type": "text",
                            "text": "查帳",
                            "size": "xl",
                            "weight": "bold"
                        }, {
                            "type":
                            "box",
                            "layout":
                            "vertical",
                            "spacing":
                            "sm",
                            "margin":
                            "lg",
                            "contents": [
                                {
                                    "type":
                                    "box",
                                    "layout":
                                    "baseline",
                                    "spacing":
                                    "sm",
                                    "contents": [{
                                        "type": "text",
                                        "text": output_text + ". . .",
                                        "flex": 5,
                                        "size": "sm",
                                        "color": "#666666",
                                        "wrap": True
                                    }]
                                },
                            ]
                        }]
                    },
                    "footer": {
                        "type":
                        "box",
                        "layout":
                        "vertical",
                        "flex":
                        0,
                        "spacing":
                        "sm",
                        "contents": [{
                            "type": "button",
                            "action": {
                                "type": "uri",
                                "label": "查看更多",
                                "uri":
                                "https://liff.line.me/1654876504-rK3v07Pk"
                            },
                            "height": "sm",
                            "style": "link"
                        }, {
                            "type": "button",
                            "action": {
                                "type": "uri",
                                "label": "記錄分帳",
                                "uri":
                                "https://liff.line.me/1654876504-9wWzOva7"
                            },
                            "height": "sm",
                            "style": "link"
                        }, {
                            "type": "button",
                            "action": {
                                "type": "uri",
                                "label": "編輯分帳者",
                                "uri":
                                "https://liff.line.me/1654876504-QNXjnrl2"
                            },
                            "height": "sm",
                            "style": "link"
                        }, {
                            "type": "spacer",
                            "size": "sm"
                        }]
                    }
                }
            }
            line_bot_api.reply_message(
                event.reply_token,
                messages=FlexSendMessage.new_from_json_dict(flexmsg))

        elif input_text == '@結算':
            selfGroupId = history_list[0]['group_id']
            dataSettle_UserData = usermessage.query.filter(
                usermessage.group_id == selfGroupId).filter(
                    usermessage.status == 'save').filter(
                        usermessage.type == 'group')
            historySettle_list = []
            person_list = get_groupPeople(history_list, 2)
            person_num = get_groupPeople(history_list, 1)
            for _data in dataSettle_UserData:
                historySettle_dic = {}
                historySettle_dic['Account'] = _data.account
                historySettle_dic['GroupPeople'] = _data.group_num
                historySettle_dic['message'] = _data.message
                historySettle_list.append(historySettle_dic)

            dataNumber = len(historySettle_list)
            account = np.zeros(person_num)
            exchange_rate_USD = 0
            exchange_rate_JPY = 0
            exchange_rate_EUR = 0
            for i in range(dataNumber):  #分帳金額
                b = dict(historySettle_list[i])
                GroupPeopleString = b['GroupPeople'].strip(' ').split(
                    ' ')  #刪除代墊者
                del GroupPeopleString[0]

                if 'USD' in b['message']:  #匯率轉換
                    if exchange_rate_USD:
                        exchange_rate = exchange_rate_USD
                    else:
                        exchange_rate_USD = get_exchangeRate(1)
                        exchange_rate = exchange_rate_USD
                elif 'JPY' in b['message']:
                    if exchange_rate_JPY:
                        exchange_rate = exchange_rate_JPY
                    else:
                        exchange_rate_JPY = get_exchangeRate(2)
                        exchange_rate = exchange_rate_JPY
                elif 'EUR' in b['message']:
                    if exchange_rate_EUR:
                        exchange_rate = exchange_rate_EUR
                    else:
                        exchange_rate_EUR = get_exchangeRate(3)
                        exchange_rate = exchange_rate_EUR
                else:
                    exchange_rate = 1

                payAmount = exchange_rate * int(
                    b['Account']) / len(GroupPeopleString)
                a1 = set(person_list)  #分帳設定有的人
                a2 = set(GroupPeopleString)
                duplicate = list(a1.intersection(a2))  #a1和a2重複的人名
                for j in range(len(duplicate)):  #分帳金額
                    place = person_list.index(duplicate[j])
                    payAmount_place = GroupPeopleString.index(
                        duplicate[j]) + 1  #多種分帳金額 - 金額位置
                    if (payAmount_place < len(GroupPeopleString)
                            and GroupPeopleString[payAmount_place].isdigit()):
                        payAmount = exchange_rate * int(
                            GroupPeopleString[payAmount_place])
                    account[place] -= payAmount

            for j in range(dataNumber):  #代墊金額
                b = dict(historySettle_list[j])
                GroupPeopleString = b['GroupPeople'].strip(' ').split(' ')
                if 'USD' in b['message']:  #匯率轉換
                    if exchange_rate_USD:
                        exchange_rate = exchange_rate_USD
                    else:
                        exchange_rate_USD = get_exchangeRate(1)
                        exchange_rate = exchange_rate_USD
                elif 'JPY' in b['message']:
                    if exchange_rate_JPY:
                        exchange_rate = exchange_rate_JPY
                    else:
                        exchange_rate_JPY = get_exchangeRate(2)
                        exchange_rate = exchange_rate_JPY
                elif 'EUR' in b['message']:
                    if exchange_rate_EUR:
                        exchange_rate = exchange_rate_EUR
                    else:
                        exchange_rate_EUR = get_exchangeRate(3)
                        exchange_rate = exchange_rate_EUR
                else:
                    exchange_rate = 1

                for i in range(person_num):
                    if GroupPeopleString[0] == person_list[i]:
                        account[i] += exchange_rate * int(b['Account'])

            #將人和錢結合成tuple,存到一個空串列
            person_account = []
            for i in range(person_num):
                zip_tuple = (person_list[i], account[i])
                person_account.append(zip_tuple)

            #重複執行交換動作
            result = ""
            for i in range(person_num - 1):  #排序
                person_account = sorted(person_account, key=lambda s: s[1])

                #找到最大、最小值
                min_tuple = person_account[0]
                max_tuple = person_account[-1]

                #找到目前代墊最多的人
                if i == 0:
                    maxPerson = max_tuple[0]
                    minPerson = min_tuple[0]

                min = float(min_tuple[1])
                max = float(max_tuple[1])

                #交換,印出該付的錢
                if min == 0 or max == 0:
                    pass
                elif (min + max) > 0:
                    result = result + str(
                        min_tuple[0]) + '付給' + str(max_tuple[0]) + " " + str(
                            abs(round(min, 2))) + '元' + '\n'
                    max_tuple = (max_tuple[0], min + max)
                    min_tuple = (min_tuple[0], 0)
                elif (min + max) < 0:
                    result = result + str(
                        min_tuple[0]) + '付給' + str(max_tuple[0]) + " " + str(
                            abs(round(max, 2))) + '元' + '\n'
                    min_tuple = (min_tuple[0], min + max)
                    max_tuple = (max_tuple[0], 0)
                else:
                    result = result + str(
                        min_tuple[0]) + '付給' + str(max_tuple[0]) + " " + str(
                            abs(round(max, 2))) + '元' + '\n'
                    min_tuple = (min_tuple[0], 0)
                    max_tuple = (max_tuple[0], 0)

                person_account[0] = min_tuple
                person_account[-1] = max_tuple
            # result=result+'\n'+'下次不要再讓'+str(max_tuple[0])+'付錢啦! TA幫你們付很多了!'

            output_text = result.strip('\n')

            flexmsg = {
                "type": "flex",
                "altText": "Flex Message",
                "contents": {
                    "type": "bubble",
                    "hero": {
                        "type": "image",
                        "url": "https://imgur.com/GteXIvk.jpg",
                        "size": "full",
                        "aspectRatio": "20:13",
                        "aspectMode": "cover",
                        "action": {
                            "type": "text",
                            "text": "借錢要還,誰還要借?"
                        }
                    },
                    "body": {
                        "type":
                        "box",
                        "layout":
                        "vertical",
                        "contents": [{
                            "type": "text",
                            "text": "簡化版本",
                            "size": "xl",
                            "weight": "bold"
                        }, {
                            "type":
                            "box",
                            "layout":
                            "vertical",
                            "spacing":
                            "sm",
                            "margin":
                            "lg",
                            "contents": [
                                {
                                    "type":
                                    "box",
                                    "layout":
                                    "baseline",
                                    "spacing":
                                    "sm",
                                    "contents": [{
                                        "type": "text",
                                        "text": result + ". . .",
                                        "flex": 5,
                                        "size": "sm",
                                        "color": "#666666",
                                        "wrap": True
                                    }]
                                },
                            ]
                        }]
                    },
                    "footer": {
                        "type":
                        "box",
                        "layout":
                        "vertical",
                        "flex":
                        0,
                        "spacing":
                        "sm",
                        "contents": [{
                            "type": "button",
                            "action": {
                                "type": "uri",
                                "label": "查看更多",
                                "uri":
                                "https://liff.line.me/1654876504-rK3v07Pk"
                            },
                            "height": "sm",
                            "style": "link"
                        }, {
                            "type": "button",
                            "action": {
                                "type": "uri",
                                "label": "記錄分帳",
                                "uri":
                                "https://liff.line.me/1654876504-9wWzOva7"
                            },
                            "height": "sm",
                            "style": "link"
                        }, {
                            "type": "button",
                            "action": {
                                "type": "uri",
                                "label": "編輯分帳者",
                                "uri":
                                "https://liff.line.me/1654876504-QNXjnrl2"
                            },
                            "height": "sm",
                            "style": "link"
                        }, {
                            "type": "spacer",
                            "size": "sm"
                        }]
                    }
                }
            }
            line_bot_api.reply_message(
                event.reply_token,
                messages=FlexSendMessage.new_from_json_dict(flexmsg))

        elif input_text == '@稍微':
            selfGroupId = history_list[0]['group_id']
            dataSettle_UserData = usermessage.query.filter(
                usermessage.group_id == selfGroupId).filter(
                    usermessage.status == 'save').filter(
                        usermessage.type == 'group')
            historySettle_list = []
            person_list = get_groupPeople(history_list, 2)  #分帳設定人名
            person_num = get_groupPeople(history_list, 1)  #分帳設定人數
            for _data in dataSettle_UserData:
                historySettle_dic = {}
                historySettle_dic['Account'] = _data.account
                historySettle_dic['GroupPeople'] = _data.group_num
                historySettle_dic['message'] = _data.message
                historySettle_list.append(historySettle_dic)

            dataNumber = len(historySettle_list)
            account = np.zeros((person_num, person_num))
            exchange_rate_USD = 0
            exchange_rate_JPY = 0
            exchange_rate_EUR = 0
            for i in range(dataNumber):
                b = dict(historySettle_list[i])
                GroupPeopleString = b['GroupPeople'].split(' ')

                if 'USD' in b['message']:  #匯率轉換
                    if exchange_rate_USD:
                        exchange_rate = exchange_rate_USD
                    else:
                        exchange_rate_USD = get_exchangeRate(1)
                        exchange_rate = exchange_rate_USD
                elif 'JPY' in b['message']:
                    if exchange_rate_JPY:
                        exchange_rate = exchange_rate_JPY
                    else:
                        exchange_rate_JPY = get_exchangeRate(2)
                        exchange_rate = exchange_rate_JPY
                elif 'EUR' in b['message']:
                    if exchange_rate_EUR:
                        exchange_rate = exchange_rate_EUR
                    else:
                        exchange_rate_EUR = get_exchangeRate(3)
                        exchange_rate = exchange_rate_EUR
                else:
                    exchange_rate = 1
                payAmount = exchange_rate * int(b['Account']) / (
                    len(GroupPeopleString) - 1)  #不包含代墊者
                a1 = set(person_list)  #分帳設定有的人
                a2 = set(GroupPeopleString)
                duplicate = list(a1.intersection(a2))  #a1和a2重複的人名

                for j in range(len(duplicate)):  #誰付誰錢矩陣 2給1
                    place1 = person_list.index(GroupPeopleString[0])
                    place2 = person_list.index(duplicate[j])
                    account[place1][place2] += payAmount
            result = ""
            for j in range(person_num):  #誰付誰錢輸出
                for i in range(person_num):
                    payAmount = account[i][j] - account[j][i]
                    if (payAmount > 0):
                        result += person_list[j] + '付給' + person_list[
                            i] + " " + str(round(payAmount, 2)) + '元' + '\n'
            output_text = result.strip('\n')

        elif input_text == '@清空資料庫':
            data_UserData = usermessage.query.filter(
                usermessage.status == 'None').delete(
                    synchronize_session='fetch')
            db.session.commit()
            output_text = '爽啦沒資料囉\n快給我重新設定匯率'

        elif '@查查' in input_text:
            output_text = "欠錢不還啦 幹你娘"

        elif input_text == '@多多':
            try:
                message = TextSendMessage(
                    text="快速選擇下列功能:",
                    quick_reply=QuickReply(items=[
                        QuickReplyButton(
                            action=MessageAction(label="主選單", text="@選單")),
                        QuickReplyButton(
                            action=MessageAction(label="查帳", text="@查帳")),
                        QuickReplyButton(
                            action=MessageAction(label="簡化結算", text="@結算")),
                        QuickReplyButton(
                            action=MessageAction(label="不簡化結算", text="@稍微")),
                        QuickReplyButton(
                            action=MessageAction(label="使用說明", text="@help")),
                    ]))
                line_bot_api.reply_message(event.reply_token, message)
            except:
                line_bot_api.reply_message(event.reply_token,
                                           TextSendMessage('發生錯誤!'))

        elif input_text == '@help':
            Carousel_template = TemplateSendMessage(
                alt_text='使用說明',
                template=ImageCarouselTemplate(columns=[
                    ImageCarouselColumn(
                        image_url="https://imgur.com/xvZq2mD.png",
                        action=URITemplateAction(
                            uri="https://imgur.com/xvZq2mD.png")),
                    ImageCarouselColumn(
                        image_url="https://imgur.com/oER72MY.png",
                        action=URITemplateAction(
                            uri="https://imgur.com/oER72MY.png"))
                ]))
            line_bot_api.reply_message(event.reply_token, Carousel_template)

            line_bot_api.reply_message(event.reply_token, flexmsg)
        elif input_text == '@選單':
            message = ImagemapSendMessage(
                base_url="https://imgur.com/cODeL32.jpg",
                alt_text='功能總覽',
                base_size=BaseSize(height=927, width=1040),
                actions=[
                    URIImagemapAction(
                        #分帳者設定
                        link_uri="https://liff.line.me/1654876504-QNXjnrl2",
                        area=ImagemapArea(x=0, y=464, width=522, height=459)),
                    URIImagemapAction(
                        #記錄分帳
                        link_uri="https://liff.line.me/1654876504-9wWzOva7",
                        area=ImagemapArea(x=0, y=0, width=521, height=463)),
                    MessageImagemapAction(
                        #使用說明
                        text="@help",
                        area=ImagemapArea(x=525, y=464, width=515,
                                          height=459)),
                    URIImagemapAction(
                        #查帳結算
                        link_uri="https://liff.line.me/1654876504-rK3v07Pk",
                        area=ImagemapArea(x=522, y=0, width=518, height=463))
                ])
            line_bot_api.reply_message(event.reply_token, message)

        elif input_text == '@官網':
            output_text = 'https://reurl.cc/4yjNyY'

        elif input_text == '電影':
            output_text = str(get_movie())

        elif input_text == '啾啾啾':
            output_text = '啾啾啾'

        elif input_text == '逛夜市' or input_text == '烤小鳥' or input_text == '屏東':
            output_text = '不要吃焦阿巴'

        elif input_text == '廖擊敗':
            output_text = '廖奕翔還錢 操!'

        elif input_text == 'debug好累':
            output_text = '關我屁事,我已經好幾天沒睡了=='

        elif input_text == '乖狗狗':
            line_bot_api.reply_message(
                event.reply_token,
                StickerSendMessage(package_id=1, sticker_id=2))

        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(output_text))
コード例 #8
0
ファイル: func.py プロジェクト: joe94113/mylinebot
def sendOlmi(event): #傳送文字跟音樂
    #使用URL請求api
    inputtext=event.message.text
    apiBaseUrl = 'https://tw.olami.ai/cloudservice/api'
    appKey = '你的api ker'
    appSecret = '你的app secret'
    api='nli'
    cusid='keaidigou'
        
    timestamp_ms = (int(time.time() * 1000))
        
    data = appSecret + 'api=' + api + 'appkey=' + appKey + 'timestamp=' + \
               str(timestamp_ms) + appSecret
    sign= md5(data.encode('ascii')).hexdigest()
        
    params = {'appkey': appKey,
                  'api': api,
                  'timestamp': timestamp_ms,
                  'sign': sign,
                  'rq': inputtext}
    if cusid is not None:
        params.update(cusid=cusid)
    params1=params
    '''    
    header={
     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36"}
    '''
    url="%s?appkey=%s&api=%s&timestamp=%s&sign=%s&rq={'data':{'input_type':1,'text':'%s'},'data_type':'stt'}&cusid=%s"
    furl=url%(apiBaseUrl,params1['appkey'],params1['api'],params1['timestamp'],params1['sign'],params1['rq'],params1['cusid'])
    res = requests.get(furl).json()
    try:
        #傳送kkbox多頁訊息
        if res['data']['nli'][0]['desc_obj']['result'] == "馬上為你播放。":
            message = TemplateSendMessage(
                alt_text = "KKBOX多頁訊息",
                template=CarouselTemplate(
                    columns=[
                        CarouselColumn(
                            thumbnail_image_url = res['data']['nli'][0]['data_obj'][0]['photo'][1]['url'],
                            title= "為你點播:" + res['data']['nli'][0]['data_obj'][0]['title'],
                            text= "歌手:" + res['data']['nli'][0]['data_obj'][0]['artist'],
                            actions=[
                                
                                URITemplateAction(
                                    label='KKBOX聽歌去',
                                    uri = res['data']['nli'][0]['data_obj'][0]['url'] 
                                ),
                                
                            ]
                        ),
                        CarouselColumn(
                            thumbnail_image_url = res['data']['nli'][0]['data_obj'][1]['photo'][1]['url'],
                            title="為你點播:" + res['data']['nli'][0]['data_obj'][1]['title'],
                            text="歌手:" + res['data']['nli'][0]['data_obj'][1]['artist'],
                            actions=[
                                URITemplateAction(
                                    label = 'KKBOX聽歌去',
                                    uri = res['data']['nli'][0]['data_obj'][1]['url']
                                )
                            ]
                        ),
                        CarouselColumn(
                            thumbnail_image_url = res['data']['nli'][0]['data_obj'][2]['photo'][1]['url'],
                            title="為你點播:" + res['data']['nli'][0]['data_obj'][2]['title'],
                            text="歌手:" + res['data']['nli'][0]['data_obj'][2]['artist'],
                            actions=[
                                URITemplateAction(
                                    label = 'KKBOX聽歌去',
                                    uri = res['data']['nli'][0]['data_obj'][2]['url']
                                )
                            ]
                        ),
                        CarouselColumn(
                            thumbnail_image_url = res['data']['nli'][0]['data_obj'][3]['photo'][1]['url'],
                            title="為你點播:" + res['data']['nli'][0]['data_obj'][3]['title'],
                            text="歌手:" + res['data']['nli'][0]['data_obj'][3]['artist'],
                            actions=[
                                URITemplateAction(
                                    label = 'KKBOX聽歌去',
                                    uri = res['data']['nli'][0]['data_obj'][3]['url']
                                )
                            ]
                        ),
                        CarouselColumn(
                            thumbnail_image_url = res['data']['nli'][0]['data_obj'][4]['photo'][1]['url'],
                            title="為你點播:" + res['data']['nli'][0]['data_obj'][4]['title'],
                            text="歌手:" + res['data']['nli'][0]['data_obj'][4]['artist'],
                            actions=[
                                URITemplateAction(
                                    label = 'KKBOX聽歌去',
                                    uri = res['data']['nli'][0]['data_obj'][4]['url']
                                )
                            ]
                        ),
                    ]
                )
            )
        else:
            #否,則傳送文本
            message = TextSendMessage(  
                text = res['data']['nli'][0]['desc_obj']['result']
            )
        line_bot_api.reply_message(event.reply_token,message)
    except:
        line_bot_api.reply_message(event.reply_token,TextSendMessage(text='發生錯誤!\n聯絡我感恩!'))
コード例 #9
0
ファイル: func.py プロジェクト: joe94113/mylinebot
def sendRestaurant(event): #傳送附近餐廳
    #地址        
    #userAddress = event.message.address
    #緯度
    latitude = event.message.latitude
    #經度
    longitude = event.message.longitude
        
    #googlePlace_url = "https://www.google.com.tw/maps/place/"
        
    google_apikey = "&key="+"你的api"
        
    Nearby_search_url = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=" + str(latitude)+ ',' + str(longitude) +" &radius=1500&type=restaurant" + google_apikey

    pictureApi = 'https://maps.googleapis.com/maps/api/place/photo?maxwidth=500&photoreference='
            
    restaurantData = requests.get(Nearby_search_url).json()
        
    allRestaurantList = list()
    for item in restaurantData['results'][0:5]:
            RestaurantList = list()
            #名子0
            RestaurantList.append(item['name'])
            #地址1
            RestaurantList.append(item['vicinity'])
            #緯度2
            RestaurantList.append(str(item['geometry']['location']['lat']))
            #經度3
            RestaurantList.append(str(item['geometry']['location']['lng']))
            #評價4
            RestaurantList.append(str(item['rating']))
            #是否營業5
            RestaurantList.append(str(item['opening_hours']['open_now']))
            #總留言數6
            RestaurantList.append(str(item['user_ratings_total']))
            #相片網址7
            RestaurantList.append(pictureApi + item['photos'][0]['photo_reference'] + google_apikey)
            allRestaurantList.append(RestaurantList)
    try:
        message = TemplateSendMessage(
            alt_text = "餐廳多頁訊息",
            template=CarouselTemplate(
                columns=[
                    CarouselColumn(
                        thumbnail_image_url = allRestaurantList[0][7],
                        title= "餐廳:" + allRestaurantList[0][0],
                        text= "Google評價:" + allRestaurantList[0][4] + "\n營業中:" + allRestaurantList[0][5] + "\n總評論數" + allRestaurantList[0][6],
                        actions=[
                            
                            URITemplateAction(
                                label='出發',
                                uri = "https://www.google.com/maps/search/?api=1&query=" + allRestaurantList[0][2]+","+ allRestaurantList[0][3] 
                            ),
                            
                        ]
                    ),
                    CarouselColumn(
                        thumbnail_image_url = allRestaurantList[1][7],
                        title="餐廳:" + allRestaurantList[1][0],
                        text="Google評價:" + allRestaurantList[1][4] + "\n營業中:" + allRestaurantList[1][5] + "\n總評論數" + allRestaurantList[1][6],
                        actions=[
                        
                            URITemplateAction(
                                label='出發',
                                uri = "https://www.google.com/maps/search/?api=1&query=" + allRestaurantList[1][2]+","+ allRestaurantList[1][3]
                            ),
                           
                        ]
                    ),
                    CarouselColumn(
                        thumbnail_image_url=allRestaurantList[2][7],
                        title="餐廳:" + allRestaurantList[2][0],
                        text="Google評價:" + allRestaurantList[2][4] + "\n營業中:" + allRestaurantList[2][5] + "\n總評論數" + allRestaurantList[2][6],
                        actions=[
                            URITemplateAction(
                                label='出發',
                                uri="https://www.google.com/maps/search/?api=1&query=" + allRestaurantList[2][2]+","+ allRestaurantList[2][3]
                            )
                        ]
                    ),
                    CarouselColumn(
                        thumbnail_image_url=allRestaurantList[3][7],
                        title="餐廳:" + allRestaurantList[3][0],
                        text="Google評價:" + allRestaurantList[3][4] + "\n營業中:" + allRestaurantList[3][5] + "\n總評論數" + allRestaurantList[3][6],
                        actions=[
                            URITemplateAction(
                                label='出發',
                                uri="https://www.google.com/maps/search/?api=1&query=" + allRestaurantList[3][2]+","+ allRestaurantList[3][3]
                            )
                        ]
                    ),
                    CarouselColumn(
                        thumbnail_image_url=allRestaurantList[4][7],
                        title="餐廳:" + allRestaurantList[4][0],
                        text="Google評價:" + allRestaurantList[4][4] + "\n營業中:" + allRestaurantList[4][5] + "\n總評論數" + allRestaurantList[4][6],
                        actions=[
                            URITemplateAction(
                                label='出發',
                                uri="https://www.google.com/maps/search/?api=1&query=" + allRestaurantList[4][2]+","+ allRestaurantList[4][3]
                            )
                        ]
                    )
                ]
            )
        )
        line_bot_api.reply_message(event.reply_token,message)
    except:
        line_bot_api.reply_message(event.reply_token,TextSendMessage(text='挖勒發生錯誤!\n聯絡我感恩!'))
コード例 #10
0
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

    

#=====[ LEAVE GROUP OR ROOM ]==========[ Ucup ]======================

    if text == '/me':

        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 in group chat"))



    if text == '#ucupbye':

        if isinstance(event.source, SourceGroup):

            line_bot_api.reply_message(

                event.reply_token, TextSendMessage(text='Ucup pergi bye-bye'))

            line_bot_api.leave_group(event.source.group_id)

        elif isinstance(event.source, SourceRoom):

            line_bot_api.reply_message(

                event.reply_token, TextSendMessage(text='Ucup pergi bye-bye'))

            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"))

#=====[ TES MESSAGE ]=============[ Ucup ]======================

    if text == "redtube on":

    	angka = random.randint(1, 20)

    	r = requests.get('https://api.eater.pw/redtube/{}'.format(angka))

    	data=r.text

    	data=json.loads(data)

    	for anu in data["result"]:

        	line_bot_api.reply_message(event.reply_token,VideoSendMessage(original_content_url=anu["dl"], preview_image_url=anu["img"]))

    elif text == "xvideos on":

    	angka = random.randint(1, 20)

    	r = requests.get('https://api.eater.pw/xvideos/{}'.format(angka))

    	data=r.text

    	data=json.loads(data)

    	for anu in data["result"]:

    		line_bot_api.reply_message(event.reply_token,VideoSendMessage(original_content_url=anu["dl"], preview_image_url=anu["img"]))

#=====[ TES MESSAGE ]=============[ Ucup ]======================

    elif text == 'confirm':

        confirm_template = ConfirmTemplate(text='Bot nya bagus?', actions=[

            MessageTemplateAction(label='Yes', text='Yes!'),

            MessageTemplateAction(label='No', text='No!'),

        ])

        template_message = TemplateSendMessage(

            alt_text='Confirm alt text', template=confirm_template)

        line_bot_api.reply_message(event.reply_token, template_message)

    elif "/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)

        return 0

    elif "/apakah " in event.message.text:

        quo = ('Iya','Tidak','Gak tau','Bisa jadi','Mungkin iya','Mungkin tidak')

        jwb = random.choice(quo)

        text_message = TextSendMessage(text=jwb)

        line_bot_api.reply_message(event.reply_token, text_message)

        return 0

    elif (text == 'Bot') or (text == 'bot'):

        message = TextSendMessage(text='Siapa bot? ke bot an lu')

        line_bot_api.reply_message(event.reply_token, message)

    elif (text == 'Tes') or (text == 'tes') or (text == 'Test') or (text == 'test'):

        message = TextSendMessage(text='suk beybeh')

        line_bot_api.reply_message(event.reply_token, message)

    elif (text == 'Ucup') or (text == 'Cup') or (text == 'cup') or (text == 'yusuf'):

        message = TextSendMessage(text='Apa manggil-manggil cogan')

        line_bot_api.reply_message(event.reply_token, message)

    elif text == '.':

        message = TextSendMessage(text='Titik titik amat so high lu')

        line_bot_api.reply_message(event.reply_token, message)

    elif (text == 'Bah') or (text == 'bah'):

        message = TextSendMessage(text='Beh')

        line_bot_api.reply_message(event.reply_token, message)

#=====[ TEMPLATE MESSAGE ]=============[ Ucup ]======================

    elif text == '/tools':

        buttons_template = TemplateSendMessage(

            alt_text='Tools message',

            template=ButtonsTemplate(

                title='[ TOOLS MESSAGE ]',

                text= 'Tap the Button',

                actions=[

                    MessageTemplateAction(

                        label='App Cloner',

                        text='/app clone'

                    ),

                    MessageTemplateAction(

                        label='Cek idline',

                        text='/idline: yuta221217'

                    ),

                    MessageTemplateAction(

                        label='Your profile',

                        text='/me'

                    )

                ]

            )

        )

        

        line_bot_api.reply_message(event.reply_token, buttons_template)

    elif (text == '/help') or (text == 'help') or (text == 'Help'):

        buttons_template = TemplateSendMessage(

            alt_text='Help message',

            template=ButtonsTemplate(

                title='[ HELP MESSAGE ]',

                text= 'Tap the Button',

                actions=[

                    MessageTemplateAction(

                        label='My Creator',

                        text='/creator'

                    ),

                    MessageTemplateAction(

                        label='List bot',

                        text='/bots ucup'

                    ),

                    MessageTemplateAction(

                        label='Tools',

                        text='/tools'

                    ),

                    MessageTemplateAction(

                        label='Bot bye',

                        text='#ucupbye'

                    )

                ]

            )

        )

        

        line_bot_api.reply_message(event.reply_token, buttons_template)

#=====[ CAROUSEL MESSAGE ]==========[ Ucup ]======================

    elif text == '/bots cup':

        message = TemplateSendMessage(

            alt_text='List Bot',

            template=CarouselTemplate(

                columns=[

                    CarouselColumn(

                        title='Bots v1',

                        text='ucup public bot v1',

                        actions=[

                            URITemplateAction(

                                label='>ucup bot<',

                                uri='https://line.me/ti/p/~yuta221217'

                            )

                        ]

                    ),

                    CarouselColumn(

                        title='Bots v2',

                        text='ucup public bot v2',

                        actions=[

                            URITemplateAction(

                                label='>ucup bot<',

                                uri='https://line.me/ti/p/~yuta221217'

                            )

                        ]

                    ),

                    CarouselColumn(

                        title='Bots official',

                        text='ucup public bot official',

                        actions=[

                            URITemplateAction(

                                label='>ucup bot<',

                                uri='https://line.me/ti/p/yuta221217'

                            )

                        ]

                    ),

                ]

            )

        )

        line_bot_api.reply_message(event.reply_token, message)

    elif (text == '/creator') or (text == 'About'):

        message = TemplateSendMessage(

            alt_text='My creator',

            template=CarouselTemplate(

                columns=[

                    CarouselColumn(

                        title='Creator-PC',

                        text='This is my creator',

                        actions=[

                            URITemplateAction(

                                label='>ucup<',

                                uri='https://line.me/ti/p/~yuta221217'

                            )

                        ]

                    ),

                    CarouselColumn(

                        title='Creator-OA',

                        text='This is my creator',

                        actions=[

                            URITemplateAction(

                                label='>ucup<',

                                uri='https://line.me/ti/p/~yuta221217'

                            )

                        ]

                    ),

                    CarouselColumn(

                        title='OA-FAMS',

                        text='This is my Fams',

                        actions=[

                            URITemplateAction(

                                label='>ucup<',

                                uri='https://line.me/ti/p/~yuta221217'

                            )

                        ]

                    ),

                ]

            )

        )

        line_bot_api.reply_message(event.reply_token, message)

    if event.message.text == "/app clone":

        buttons_template = TemplateSendMessage(

            alt_text='App clone',

            template=ButtonsTemplate(

                title='Aplikasi clone',

                text='Klik salah satu menu dibawah ini.',

                thumbnail_image_url='https://imgur.com/Hbv4GWl.jpg',

                actions=[

                    URITemplateAction(

                        label='Parallel Space',

                        uri='https://play.google.com/store/apps/details?id=com.lbe.parallel.intl'

                    ),

                    URITemplateAction(

                        label='APP Cloner',

                        uri='https://play.google.com/store/apps/details?id=com.applisto.appcloner'

                    ),

                    URITemplateAction(

                        label='2Accounts',

                        uri='https://play.google.com/store/apps/details?id=com.excelliance.multiaccount'

                    ),

                    URITemplateAction(

                        label='Multi clone',

                        uri='https://play.google.com/store/apps/details?id=com.jumobile.multiapp'

                    )

                ]

            )

        )

        line_bot_api.reply_message(event.reply_token, buttons_template)

        return 0

#=====[ FLEX MESSAGE ]==========[ Ucup ]======================

    elif text == 'cup test':

        message = ImagemapSendMessage(

            base_url='https://i.imgur.com/g8P1V9Q.jpg',

            alt_text='manyimak corom',

            base_size=BaseSize(height=1040, width=1040),

            actions=[

                URIImagemapAction(

                    link_uri='https://line.me/ti/p/~yuta221217',

                    area=ImagemapArea(

                        x=0, y=0, width=1040, height=1040

                    )

                ),

                MessageImagemapAction(

                    text='ucup ganteng',

                    area=ImagemapArea(

                        x=520, y=0, width=520, height=1040

                    )

                )

            ]

        )

        line_bot_api.reply_message(event.reply_token, message)

#=====[ Sticker MESSAGE ]==========[ Ucup ]======================

    elif (text == 'makasih') or (text == 'Makasih'):

        message = TemplateSendMessage(

            alt_text='Ucup public bot',

            template=ImageCarouselTemplate(

                columns=[

                    ImageCarouselColumn(

                        image_url='https://stickershop.line-scdn.net/stickershop/v1/sticker/153453/IOS/sticker.png',

                        action=URIAction(uri='http://line.me/ti/p/~yuta221217')

                    )

                ]

            )

        )

        line_bot_api.reply_message(event.reply_token, message)

    elif (text == 'nyimak') or (text == 'Nyimak'):

        message = TemplateSendMessage(

            alt_text='Ucup public bot',

            template=ImageCarouselTemplate(

                columns=[

                    ImageCarouselColumn(

                        image_url='https://stickershop.line-scdn.net/stickershop/v1/sticker/13162615/IOS/sticker.png',

                        action=URIAction(uri='http://line.me/ti/p/~yuta221217')

                    )

                ]

            )

        )

        line_bot_api.reply_message(event.reply_token, message)

    elif (text == 'ga') or (text == 'gak') or (text == 'gamau') or (text == 'Gamau') or (text == 'Ga') or (text == 'Gak'):

        message = TemplateSendMessage(

            alt_text='Ucup public bot',

            template=ImageCarouselTemplate(

                columns=[

                    ImageCarouselColumn(

                        image_url='https://stickershop.line-scdn.net/stickershop/v1/sticker/8683557/IOS/[email protected]',

                        action=URIAction(uri='http://line.me/ti/p/~yuta221217')

                    )

                ]

            )

        )

        line_bot_api.reply_message(event.reply_token, message)

    elif (text == 'good night') or (text == 'Good night') or (text == 'selamat malam') or (text == 'Selamat malam'):

        message = TemplateSendMessage(

            alt_text='Ucup public bot',

            template=ImageCarouselTemplate(

                columns=[

                    ImageCarouselColumn(

                        image_url='https://stickershop.line-scdn.net/stickershop/v1/sticker/8683546/IOS/[email protected]',

                        action=URIAction(uri='http://line.me/ti/p/~yuta221217')

                    )

                ]

            )

        )

        line_bot_api.reply_message(event.reply_token, message)

    elif (text == 'hai') or (text == 'Hai') or (text == 'halo') or (text == 'Halo'):

        message = TemplateSendMessage(

            alt_text='Ucup public bot',

            template=ImageCarouselTemplate(

                columns=[

                    ImageCarouselColumn(

                        image_url='https://stickershop.line-scdn.net/stickershop/v1/sticker/52002738/IOS/[email protected]',

                        action=URIAction(uri='http://line.me/ti/p/~yuta221217')

                    )

                ]

            )

        )

        line_bot_api.reply_message(event.reply_token, message)

    elif (text == 'sabar') or (text == 'Sabar'):

        message = TemplateSendMessage(

            alt_text='Ucup public bot',

            template=ImageCarouselTemplate(

                columns=[

                    ImageCarouselColumn(

                        image_url='https://stickershop.line-scdn.net/stickershop/v1/sticker/22499899/IOS/[email protected]',

                        action=URIAction(uri='http://line.me/ti/p/~yuta221217')

                    )

                ]

            )

        )

        line_bot_api.reply_message(event.reply_token, message)

    elif (text == 'wkwk') or (text == 'Wkwk'):

        message = TemplateSendMessage(

            alt_text='Ucup public bot',

            template=ImageCarouselTemplate(

                columns=[

                    ImageCarouselColumn(

                        image_url='https://stickershop.line-scdn.net/stickershop/v1/sticker/27695296/IOS/[email protected]',

                        action=URIAction(uri='http://line.me/ti/p/~yuta221217')

                    )

                ]

            )

        )

        line_bot_api.reply_message(event.reply_token, message)

    elif (text == 'hehe') or (text == 'Hehe'):

        message = TemplateSendMessage(

            alt_text='Ucup public bot',

            template=ImageCarouselTemplate(

                columns=[

                    ImageCarouselColumn(

                        image_url='https://stickershop.line-scdn.net/stickershop/v1/sticker/52002763/IOS/[email protected]',

                        action=URIAction(uri='http://line.me/ti/p/~yuta221217')

                    )

                ]

            )

        )

        line_bot_api.reply_message(event.reply_token, message)

    elif (text == 'siap') or (text == 'Siap'):

        message = TemplateSendMessage(

            alt_text='Ucup public bot',

            template=ImageCarouselTemplate(

                columns=[

                    ImageCarouselColumn(

                        image_url='https://stickershop.line-scdn.net/stickershop/v1/sticker/51626520/IOS/[email protected]',

                        action=URIAction(uri='http://line.me/ti/p/~yuta221217')

                    )

                ]

            )

        )

        line_bot_api.reply_message(event.reply_token, message)

    elif text == '?':

        message = TemplateSendMessage(

            alt_text='Ucup public bot',

            template=ImageCarouselTemplate(

                columns=[

                    ImageCarouselColumn(

                        image_url='https://stickershop.line-scdn.net/stickershop/v1/sticker/34751035/IOS/[email protected]',

                        action=URIAction(uri='http://line.me/ti/p/~yuta221217')

                    )

                ]

            )

        )

        line_bot_api.reply_message(event.reply_token, message)

    elif (text == 'please') or (text == 'Please') or (text == 'tolong') or (text == 'Tolong'):

        message = TemplateSendMessage(

            alt_text='Ucup public bot',

            template=ImageCarouselTemplate(

                columns=[

                    ImageCarouselColumn(

                        image_url='https://stickershop.line-scdn.net/stickershop/v1/sticker/51626499/IOS/[email protected]',

                        action=URIAction(uri='http://line.me/ti/p/~yuta221217')

                    )

                ]

            )

        )

        line_bot_api.reply_message(event.reply_token, message)

    elif (text == 'ok') or (text == 'oke') or (text == 'Ok') or (text == 'Oke'):

        message = TemplateSendMessage(

            alt_text='Ucup public bot',

            template=ImageCarouselTemplate(

                columns=[

                    ImageCarouselColumn(

                        image_url='https://stickershop.line-scdn.net/stickershop/v1/sticker/51626500/IOS/[email protected]',

                        action=URIAction(uri='http://line.me/ti/p/~yuta221217')

                    )

                ]

            )

        )

        line_bot_api.reply_message(event.reply_token, message)
コード例 #11
0
def template_to_message(template):

    message = TemplateSendMessage(alt_text="Buttons alt text",
                                  template=template)
    return message
コード例 #12
0
def handle_message(event):
    user_profile = event.source.user_id

    # 當用戶輸入VMware時判斷成立
    if (event.message.text.find('VMware') != -1):
        # 提供VMware作業網址
        url1 = 'https://www.youtube.com'
        url2 = 'https://www.youtube.com'
        url3 = 'https://drive.google.com'
        # 將上面的變數包裝起來
        reply_list = [
            TextSendMessage(text="VMware實作講解:\n%s" % (url1)),
            TextSendMessage(text="VMware實作操作:\n%s" % (url2)),
            TextSendMessage(text="VMware簡報:\n%s" % (url3))
        ]
        # 回覆訊息
        line_bot_api.reply_message(event.reply_token, reply_list)

    # 當用戶輸入Linux Server時判斷成立
    elif (event.message.text.find('Linux Server') != -1):
        # 提供Linux Server作業網址
        url1 = 'https://drive.google.com'
        # 將上面的變數包裝起來
        reply_list = [TextSendMessage(text="DNSSEC實作:\n%s" % (url1))]
        # 回覆訊息
        line_bot_api.reply_message(event.reply_token, reply_list)

    # 當用戶輸入"資安簡報"時判斷成立
    elif (event.message.text.find('資安簡報') != -1):
        # 提供資安實作簡報網址
        url1 = 'https://drive.google.com'
        # 將上面的變數包裝起來
        reply_list = [TextSendMessage(text="資安實作簡報:\n%s" % (url1))]
        # 回覆訊息
        line_bot_api.reply_message(event.reply_token, reply_list)

    # 結合旋轉門選單中的"yourName自我介紹",進到flexbubble選單,按下"yourName 自我介紹",會有文字"我想看yourName的個人資料"的輸入,當符合字串時判斷成立
    elif (event.message.text.find('我想看yourname的個人資料') != -1):
        # 回覆訊息
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text="your text"))

    # 結合旋轉門選單中的"yourName自我介紹",進到flexbubble選單,按下"yourName 平時興趣",會有文字"我想看yourName的平時興趣"的輸入,當符合字串時判斷成立
    elif (event.message.text.find('我想看yourname的平時興趣') != -1):
        # 回覆訊息
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text="your text"))

    # 結合旋轉門選單中的"yourName自我介紹",進到flexbubble選單,按下"yourName 能為公司做的貢獻",會有文字"我想看yourName的想法"的輸入,當符合字串時判斷成立
    elif (event.message.text.find('我想看yourname的想法') != -1):
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text="your text"))

    # 結合旋轉門選單中的"yourName工作經驗",進到flexbubble選單,按下"yourName 學校經歷",會有文字"我想看yourName的學校經歷"的輸入,當符合字串時判斷成立
    elif (event.message.text.find('我想看yourname的學校經歷') != -1):
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text="your text"))

    # 結合旋轉門選單中的"yourName工作經驗",進到flexbubble選單,按下"yourName 職務經歷",會有文字"我想看yourName的職務經歷"的輸入,當符合字串時判斷成立
    elif (event.message.text.find('我想看yourname的職務經歷') != -1):
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text="your text"))

    # 結合旋轉門選單中的"yourName工作經驗",進到flexbubble選單,按下"yourName 在資策會的學習狀況",會有文字"我想看yourName在資策會的學習狀況"的輸入,當符合字串時判斷成立
    elif (event.message.text.find('我想看yourname在資策會的學習狀況') != -1):
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text="your text"))

    # 結合旋轉門選單中的"yourName的專長",進到flexbubble選單,按下"yourName 的外語能力",會有文字"我想看yourName的外語能力"的輸入,當符合字串時判斷成立
    elif (event.message.text.find('我想看yourname的外語能力') != -1):
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text="your text"))

    # 結合旋轉門選單中的"yourName的專長",進到flexbubble選單,按下"yourName 的IT專長",會有文字"我想看yourName的IT專長"的輸入,當符合字串時判斷成立
    elif (event.message.text.find('我想看yourname的IT專長') != -1):
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text="your text"))

    # 結合旋轉門選單中的"yourName的專長",進到flexbubble選單,按下"yourName 的其他專長",會有文字"我想看yourName的其他專長"的輸入,當符合字串時判斷成立
    elif (event.message.text.find('我想看yourname的其他專長') != -1):
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text="你要放的其他專長的文字"))

    # 當用戶輸入"resume"時判斷成立
    elif (event.message.text.find('resume') != -1):
        # 提供資安實作簡報網址
        url1 = 'https://www.cakeresume.com'
        # 將上面的變數包裝起來
        reply_list = [TextSendMessage(text="我的履歷表:\n%s" % (url1))]
        # 回覆訊息
        line_bot_api.reply_message(event.reply_token, reply_list)

    # 當用戶輸入"dropbox"時判斷成立
    elif (event.message.text.find('dropbox') != -1):
        # 提供資安實作簡報網址
        url1 = 'https://paper.dropbox.com'
        # 將上面的變數包裝起來
        reply_list = [
            TextSendMessage(text="我的履歷機器人dropbox paper:\n%s" % (url1))
        ]
        # 回覆訊息
        line_bot_api.reply_message(event.reply_token, reply_list)

    # 當用戶輸入"contact"時判斷成立
    elif (event.message.text.find('contact') != -1):
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text="your text"))

    # 當用戶按下菜單的最右邊按鈕,會輸入more,符合字串more時判斷成立
    elif (event.message.text.find('list') != -1):
        # 回覆訊息旋轉門選單
        line_bot_api.reply_message(
            event.reply_token,
            TemplateSendMessage(alt_text="yourname履歷功能選單,為您介紹",
                                template=button_template_message))

    # 收到不認識的訊息時,回覆原本的旋轉門菜單
    else:
        line_bot_api.reply_message(
            event.reply_token,
            TemplateSendMessage(
                alt_text="感謝您加入yourname的履歷聊天機器人\n想多了解我請使用下方功能選單\n或是按下方按鈕\n",
                template=button_template_message))
コード例 #13
0
from linebot import (LineBotApi, WebhookHandler)
from linebot.exceptions import (InvalidSignatureError)
from linebot.models import (MessageEvent, JoinEvent, TextMessage,
                            TextSendMessage, ImageMessage, ImageSendMessage,
                            TemplateSendMessage, ConfirmTemplate,
                            PostbackTemplateAction, MessageTemplateAction)
from flask_sqlalchemy import SQLAlchemy
from app import Ids
import random

TOKEN = os.environ(['TOKEN'])
line_bot_api = LineBotApi(TOKEN)

ids = Ids.query.all()
for id in ids:
    num = random.randrange(30)
    if num < 2:
        line_bot_api.push_message(
            id.groupid,
            TemplateSendMessage(alt_text='明日、飲み会しよや!!',
                                template=ConfirmTemplate(
                                    text='明日、飲み会しよや!!',
                                    actions=[
                                        PostbackTemplateAction(
                                            label='アリ',
                                            text='アリ',
                                            data='action=buy&itemid=1'),
                                        MessageTemplateAction(label='ナシ',
                                                              text='ナシ')
                                    ])))
コード例 #14
0
def handle_location_message(event):

    #獲得經緯度
    lan = event.message.latitude
    lon = event.message.longitude
    #宣告儲存橫向捲軸的list
    column_list = []
    #宣告Firebase的客戶端Client
    db = firestore.client()

    #******Google Map API使用*******#
    # Google Map API需要的API KEY
    gmaps = googlemaps.Client(key='AIzaSyAuBskIN3x5-067Ex5n3ZyftqMnjmZR_ik')

    line_bot_api.push_message(event.source.user_id,
                              TextSendMessage('正在為您加載附近電影院資訊請稍等片刻...'))

    # 利用places_nearby的方法搜索尋找附近的電影院 按照距離從近到遠排序
    nearby_search = gmaps.places_nearby(
        location=(lan, lon),  # 目前的位置必須是經緯度
        keyword='影城',  # 搜尋中關鍵字
        language='zh-TW',  # 回傳回來的語言
        type='movie_theater',  # 種類是電影院
        rank_by='distance')  # rankby表示搜索到的影城按照distance距離從近到遠排序

    #****從資料庫抓使用者剛剛點了哪一部電影然後搜尋時刻表****#
    user_id = event.source.user_id
    x = datetime.datetime.now(tz)  # 取得當下時間
    time_now = str(x.year) + ' ' + str(x.month) + ' ' + str(
        x.day) + ' ' + ' ' + str(x.date().isoweekday()) + ' ' + str(
            x.hour) + ' ' + str(x.minute) + ' ' + str(x.second)
    theater_name = []  #宣告使用者想看的電影的影城名稱
    movie_time_list = []  #宣告使用者想看的電影的影城時間

    #****取得使用者之前的想要看什麼電影的資訊****#
    users_ref = db.collection("使用者想看電影紀錄").document(user_id)
    doc = users_ref.get()
    user_movie = doc.to_dict()['最近一筆資料']
    #print(user_movie)

    #到Firebase找到使用者想看的電影的時刻表
    users_refs = db.collection("電影時刻表").document(str(user_movie).strip())
    try:
        docs = users_refs.get()
        for doc in docs.to_dict():
            theater_name.append(str(doc).split('{')[0])
            movie_time_list.append(str(docs.to_dict().get(doc).strip()))
    except Exception:
        print('error in getting movie time')

    # print(theater_name) #測試BUG
    # print(movie_time_list) #測試BUG

    # 找到五個最近影城的名稱,地理位置以及Place ID
    nearby_place = nearby_search['results']
    place_lenth = len(nearby_place)

    five_movie_place_time = []  # 紀錄(最多)五個距離使用者最近又有電影上映的影城的時刻表
    movie_time_times = -1  # 紀錄影城的時刻表是第幾個裡面的
    if len(theater_name) == 0:
        place_lenth = 0
    else:
        if place_lenth > 18:
            place_lenth = 18
        for pnum in range(0, place_lenth):
            bool_inCHN = False
            place_ID = nearby_place[pnum]['place_id']  # 影城的id,需要靠這個得到更具體的資訊
            place_NAME = nearby_place[pnum]['name']  # 影城的名字資訊

            if len(five_movie_place_time) == 10:
                break

            #若該電影院的名稱出現在movie_name的list中
            if str(place_NAME) in theater_name:
                #******將附近的電影院資訊與有該部電影的影城做對比******#
                index = theater_name.index(
                    str(place_NAME))  #取得place在其中的index索引
                five_movie_place_time.append(
                    movie_time_list[index])  #將對應的時刻表加入進來
                movie_time_times = movie_time_times + 1

                if 'vicinity' in nearby_place[pnum]:
                    place_LOCATION = nearby_place[pnum][
                        'vicinity']  # 影城的地點位置資訊
                else:
                    place_LOCATION = '缺失位置資訊'
                if 'plus_code' in nearby_place[
                        pnum] and 'compound_code' in nearby_place[pnum][
                            'plus_code']:
                    place_city_INFO = nearby_place[pnum]['plus_code'][
                        'compound_code'].split(' ')[-1]  # 影城在哪一個城市
                    if place_city_INFO.lower().find('china') != -1:
                        bool_inCHN = True
                else:
                    place_city_INFO = '缺失城市訊息'
                print(place_ID + "," + place_NAME + "," + place_LOCATION +
                      "," + place_city_INFO)

                # 利用place的API得到影城詳細資訊
                place_detail = gmaps.place(place_id=place_ID,
                                           language='zh-TW',
                                           fields=[
                                               'international_phone_number',
                                               'rating', 'website', 'photo'
                                           ])
                if 'international_phone_number' in place_detail['result']:
                    place_PHONE = place_detail['result'][
                        'international_phone_number'].replace(" ",
                                                              "")  # 影城的電話資訊
                else:
                    place_PHONE = '缺失電話資訊'
                if 'website' in place_detail['result']:
                    place_WEBSITE = place_detail['result']['website']  # 影城的網址
                    bool_WEBSITE = True
                else:
                    place_WEBSITE = 'https://www.google.com.tw/search?q=' + place_NAME
                    bool_WEBSITE = False

                # ******到Firebase存取影城Logo圖片部分*******#
                docum_id = place_NAME
                users_ref = db.collection("電影院資料").document(docum_id)
                doc = users_ref.get()
                if doc.to_dict() == None:
                    docum_id = '找不到圖片'
                    users_ref = db.collection("電影院資料").document(docum_id)
                    doc = users_ref.get()
                    img_url = doc.to_dict()['Logo']
                else:
                    img_url = doc.to_dict()['Logo']
                # print(img_url) #測試BUG

                # ******橫向捲軸部分*******#
                if bool_WEBSITE == True:
                    carouselcolumn = CarouselColumn(
                        thumbnail_image_url=img_url,  # 影城的圖片
                        title=place_NAME,  # 影城的名字
                        text="位置資訊:" + place_LOCATION + "\n" + "聯絡電話:" +
                        place_PHONE,  # 影城的位置
                        actions=[
                            PostbackTemplateAction(
                                label='電影時刻表',
                                text='查看目前「' + place_NAME + '」' + '中「' +
                                str(user_movie).strip() + '」的電影時刻表',
                                data='時刻表 ' + str(x.hour) + '@@' +
                                str(x.minute) + '@@' +
                                str(user_movie).strip() + '@@' + place_NAME +
                                '@@' +
                                five_movie_place_time[movie_time_times]),
                            URITemplateAction(
                                label='導航',
                                uri=
                                'https://www.google.com/maps/dir/?api=1&destination='
                                + place_NAME.replace(" ", "%2C")),
                            URITemplateAction(label='影城網址', uri=place_WEBSITE)
                        ])
                else:
                    carouselcolumn = CarouselColumn(
                        thumbnail_image_url=img_url,  # 影城的圖片
                        title=place_NAME,  # 影城的名字
                        text="位置資訊:" + place_LOCATION + "\n" + "聯絡電話:" +
                        place_PHONE,  # 影城的位置
                        actions=[
                            PostbackTemplateAction(
                                label='電影時刻表',
                                text='查看目前「' + place_NAME + '」' + '中「' +
                                str(user_movie).strip() + '」的電影時刻表',
                                data='時刻表 ' + str(x.hour).strip() + '@@' +
                                str(x.minute).strip() + '@@' +
                                str(user_movie).strip() + '@@' + place_NAME +
                                '@@' +
                                five_movie_place_time[movie_time_times]),
                            URITemplateAction(
                                label='導航',
                                uri=
                                'https://www.google.com/maps/dir/?api=1&destination='
                                + place_NAME.replace(" ", "%2C")),
                            URITemplateAction(label='缺失影城網址',
                                              uri=place_WEBSITE)
                        ])
                if bool_inCHN == False:
                    column_list.append(carouselcolumn)

    if len(five_movie_place_time) == 0:
        place_lenth = 0

    # 設定橫向捲軸,將搜尋到的附近電影院資訊用橫向捲軸的形式呈現給使用者
    # 橫向捲軸最多可以設定十個
    if place_lenth > 0:
        Carousel_template = CarouselTemplate(
            columns=column_list,
            image_aspect_ratio=
            "square",  # 圖片形狀,一共兩個參數。square指圖片1:1,rectangle指圖片1.5:1
            image_size=
            "contain"  # 圖片size大小設定,一共兩個參數。cover指圖片充滿畫面,contain指縮小圖片塞到畫面
        )
        line_bot_api.push_message(
            event.source.user_id,
            TemplateSendMessage(alt_text="為您找到了附近電影院的資訊",
                                template=Carousel_template)  #將餐廳的圖片等資訊傳送給使用者
        )
    else:
        line_bot_api.push_message(event.source.user_id,
                                  TextSendMessage('對不起,您搜索的地方附近沒有電影院有上映這部電影'))
コード例 #15
0
ファイル: callback.py プロジェクト: h-nohara/ShogiMovieBot
def push_template_message(template):

    message = TemplateSendMessage(alt_text='Buttons alt text',
                                  template=template)

    line_bot_api.push_message(nohara_first_id, message)
コード例 #16
0
ファイル: func.py プロジェクト: joe94113/mylinebot
def sendMovie(event): #傳送電影
    Yahoo_MOVIE_URL = 'https://tw.movies.yahoo.com/movie_thisweek.html'

    # 以下網址後面加上 "/id=MOVIE_ID" 即為該影片各項資訊
    Yahoo_INTRO_URL = 'https://tw.movies.yahoo.com/movieinfo_main.html'  # 詳細資訊
    Yahoo_PHOTO_URL = 'https://tw.movies.yahoo.com/movieinfo_photos.html'  # 劇照
    Yahoo_TIME_URL = 'https://tw.movies.yahoo.com/movietime_result.html'  # 時刻表
    
    resp = requests.get(Yahoo_MOVIE_URL)
    
    try:
        if resp.status_code != 200:
            message = TextSendMessage(
                text = "網站改版拉告知我!!!"
                )
        else:
            dom = resp.text
            soup = BeautifulSoup(dom, 'html5lib')
            movies = list()
            rows = soup.find_all('div', 'release_info_text')
            for row in rows[0:5]:
                movie = list()
                #評價0
                movie.append(row.find('div', 'leveltext').span.text.strip())
                #片名1
                movie.append(row.find('div', 'release_movie_name').a.text.strip())
                #電影照片2
                movie.append(row.parent.find_previous_sibling('div', 'release_foto').a.img['src'])
                #上映日期3
                movie.append(get_date(row.find('div', 'release_movie_time').text))
                
                trailer_a = row.find_next_sibling('div', 'release_btn color_btnbox').find_all('a')[1]
                #電影網址4
                movie.append(trailer_a['href'] if 'href' in trailer_a.attrs.keys() else '')
                
                movies.append(movie)
            message = TemplateSendMessage(
                alt_text = "電影多頁訊息",
                template=CarouselTemplate(
                    columns=[
                        CarouselColumn(
                            thumbnail_image_url = movies[0][2],
                            title= "片名:" + movies[0][1],
                            text= "網友期待度:" + movies[0][0] + "\n\n上映日期:" + movies[0][3],
                            actions=[
                                
                                URITemplateAction(
                                    label='電影預告',
                                    uri = movies[0][4] 
                                ),
                                
                            ]
                        ),
                        CarouselColumn(
                            thumbnail_image_url = movies[1][2],
                            title="片名:" + movies[1][1],
                            text="網友期待度:" +  movies[1][0] + "\n\n上映日期:" + movies[1][3],
                            actions=[
                                URITemplateAction(
                                    label = '電影預告',
                                    uri = movies[1][4]
                                )
                            ]
                        ),
                        CarouselColumn(
                            thumbnail_image_url = movies[2][2],
                            title="片名:" + movies[2][1],
                            text="網友期待度:" +  movies[2][0] + "\n\n上映日期:" + movies[2][3],
                            actions=[
                                URITemplateAction(
                                    label = '電影預告',
                                    uri = movies[2][4]
                                )
                            ]
                        ),
                        CarouselColumn(
                            thumbnail_image_url = movies[3][2],
                            title="片名:" + movies[3][1],
                            text="網友期待度:" +  movies[3][0] + "\n\n上映日期:" + movies[3][3],
                            actions=[
                                URITemplateAction(
                                    label = '電影預告',
                                    uri = movies[3][4]
                                )
                            ]
                        ),
                        CarouselColumn(
                            thumbnail_image_url = movies[4][2],
                            title="片名:" + movies[4][1],
                            text="網友期待度:" +  movies[4][0] + "\n\n上映日期:" + movies[4][3],
                            actions=[
                                URITemplateAction(
                                    label = '電影預告',
                                    uri = movies[4][4]
                                )
                            ]
                        ),
                        
                    ]
                )
            )
        line_bot_api.reply_message(event.reply_token,message)
    except:
        line_bot_api.reply_message(event.reply_token,TextSendMessage(text='發生錯誤!\n聯絡我感恩!'))        
コード例 #17
0
def sendCarousel(event):
	try:
		message = TemplateSendMessage(
			alt_text='轉盤樣板',
			template=CarouselTemplate(
				columns=[
					CarouselColumn(
						thumbnail_image_url='https://i.imgur.com/nw20uTZ.jpg',
						title='花藝課程資訊',
						text='往後滑動→\n觀看歷史活動紀錄!',
						actions=[
							URITemplateAction(
								label='前往官方網站查看更多',
								uri='https://www.facebook.com/%E7%B4%AB%E7%9B%92%E5%AD%90%E8%8A%B1%E7%A6%AE%E8%A8%AD%E8%A8%88-193614007383467/'
							)
						]
					),
					CarouselColumn(
						thumbnail_image_url='https://scontent.ftpe4-2.fna.fbcdn.net/v/t1.0-9/83595928_2629590977119079_4877398284773097472_n.jpg?_nc_cat=100&_nc_sid=0debeb&_nc_ohc=3ZkXpMXCLeAAX_WJgzD&_nc_ht=scontent.ftpe4-2.fna&oh=0e4e6cc0085c0eb7b98588cb347d0387&oe=5F20CBB7',
						title='2020年 年花課程',
						text='1/21~1/22',
						actions=[
							URITemplateAction(
								label='前往觀看活動相片',
								uri='https://www.facebook.com/193614007383467/photos/a.2629573170454193/2629590973785746'
							)
						]
					),
					CarouselColumn(
						thumbnail_image_url='https://scontent.ftpe4-1.fna.fbcdn.net/v/t1.0-9/28378946_1585021301576057_2777316159554010739_n.jpg?_nc_cat=108&_nc_sid=cdbe9c&_nc_ohc=5f9Skl3x7YMAX8A-4n1&_nc_ht=scontent.ftpe4-1.fna&oh=f015a5cc57f8a905b019f54577b91d8b&oe=5F2027D1',
						title='2018年 樹屋年花單堂課',
						text='2/11下午場,2/12下午&晚上場',
						actions=[
							URITemplateAction(
								label='前往觀看活動相片',
								uri='https://www.facebook.com/media/set/?vanity=193614007383467&set=a.1585021004909420'
							)
						]
					),
					CarouselColumn(
						thumbnail_image_url='https://scontent.ftpe4-1.fna.fbcdn.net/v/t1.0-9/25348528_1517277188350469_4496425193584292466_n.jpg?_nc_cat=107&_nc_sid=0debeb&_nc_ohc=yDGyQom23f0AX_eOQZF&_nc_ht=scontent.ftpe4-1.fna&oh=d3c9bbe185351a0d3450e479f6a71ef2&oe=5F23B7E4',
						title='2017年 聖誕節單堂手作課',
						text='12/16',
						actions=[
							URITemplateAction(
								label='前往觀看活動相片',
								uri='https://www.facebook.com/media/set/?vanity=193614007383467&set=a.1517274651684056'
							)
						]
					),
					CarouselColumn(
						thumbnail_image_url='https://scontent.ftpe4-2.fna.fbcdn.net/v/t31.0-8/17310385_1267893303288860_5561151591450420887_o.jpg?_nc_cat=104&_nc_sid=cdbe9c&_nc_ohc=ave_PC7CEy8AX8iNtNl&_nc_ht=scontent.ftpe4-2.fna&oh=134321caba072597e606abd5b539b93e&oe=5F227A4D',
						title='2017年 年花課',
						text='1/25',
						actions=[
							URITemplateAction(
								label='前往觀看活動相片',
								uri='https://www.facebook.com/193614007383467/photos/a.1267892846622239/1267895486621975'
							)
						]
					)
				]
			)
		)
		line_bot_api.reply_message(event.reply_token,message)
	except:
		line_bot_api.reply_message(event.reply_token,TextSendMessage(text="發生錯誤!"))
コード例 #18
0
ファイル: func.py プロジェクト: joe94113/mylinebot
def sendNew(event):  #傳送聯合即時新聞
    udn_url = "https://udn.com"
    udn_new_url = "https://udn.com/news/breaknews/1"
    dom = requests.get(udn_new_url).text
    soup = BeautifulSoup(dom, 'html5lib')
    
    
    allnewlist = list()
    for new in soup.find_all('div',{"class":"story-list__news"})[0:6]:
        newlist = list()
        #大標題0
        newlist.append(new.find("div",'story-list__text').h2.text.strip())
        #內文1
        newlist.append(new.find("div",'story-list__text').p.text.strip())
        #新聞連結2
        newlist.append(udn_url + new.find("div",'story-list__text').h2.a['href'])
        #圖片連結3
        newlist.append(new.find("div","story-list__image").img['data-src'])
        allnewlist.append(newlist)
    
    try:
        message = TemplateSendMessage(
                alt_text = "新聞快訊",
                template=CarouselTemplate(
                    columns=[
                        CarouselColumn(
                            thumbnail_image_url = allnewlist[0][3],
                            title= allnewlist[0][0],
                            text= allnewlist[0][1][:50]+ "...",
                            actions=[
                                URITemplateAction(
                                    label='詳全文',
                                    uri = allnewlist[0][2] 
                                ),
                            ]
                        ),
                        CarouselColumn(
                            thumbnail_image_url = allnewlist[1][3],
                            title= allnewlist[1][0],
                            text= allnewlist[1][1][:50] + "...",
                            actions=[
                                
                                URITemplateAction(
                                    label='詳全文',
                                    uri = allnewlist[1][2] 
                                ),
                            ]
                        ),
                        CarouselColumn(
                            thumbnail_image_url = allnewlist[2][3],
                            title= allnewlist[2][0],
                            text= allnewlist[2][1][:50] + "...",
                            actions=[
                                
                                URITemplateAction(
                                    label='詳全文',
                                    uri = allnewlist[2][2] 
                                ),
                            ]
                        ),
                        CarouselColumn(
                            thumbnail_image_url = allnewlist[3][3],
                            title= allnewlist[3][0],
                            text= allnewlist[3][1][:50] + "...",
                            actions=[
                                
                                URITemplateAction(
                                    label='詳全文',
                                    uri = allnewlist[3][2] 
                                ),
                            ]
                        ),
                        CarouselColumn(
                            thumbnail_image_url = allnewlist[4][3],
                            title= allnewlist[4][0],
                            text= allnewlist[4][1][:50] + "...",
                            actions=[
                                
                                URITemplateAction(
                                    label='詳全文',
                                    uri = allnewlist[4][2] 
                                ),
                            ]
                        ),
                        CarouselColumn(
                            thumbnail_image_url = allnewlist[5][3],
                            title= allnewlist[5][0],
                            text= allnewlist[5][1][:50] + "...",
                            actions=[
                                
                                URITemplateAction(
                                    label='詳全文',
                                    uri = allnewlist[5][2] 
                                ),
                            ]
                        ),
                    ]
                )
            )
        line_bot_api.reply_message(event.reply_token,message)
    except:
        line_bot_api.reply_message(event.reply_token,TextSendMessage(text='發生錯誤!\n聯絡我感恩!'))
コード例 #19
0
ファイル: app.py プロジェクト: sharonWU0505/Line-Chatbot
def handle_message(event):
    text = event.message.text.lower()

    if 'education' in text or 'study' in text or 'studies' in text:
        bac_content = 'I got the bachelor\'s degree of Information Management from National Taiwan University \
                       in June 2017.'

        mba_content = 'And I\'m now in the first year of the MBA degree of Information Management from National \
                       Taiwan University.'

        res_content = 'My research focuses on the resource allocation problem of 5G network.'
        content = 'This is a film about my education.\nHere\'s the introduction:\n\n{}\n\n{}\n\n{}'.format(
            bac_content, mba_content, res_content)
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=content))
        return 0

    if 'research' in text or '5G' in text or 'network' in text:
        res_content = '5G network is known for its centralized structure, which makes it more flexible to meet \
                       heterogeneous demand. However, the way to allocate resource remains a problem.'

        objectives = 'So I aim to design suitable allocation scheme for different scenarios.'
        link = 'Know more about 5G network: https://en.wikipedia.org/wiki/5G'
        content = '{}\n\n{}\n\n{}'.format(res_content, objectives, link)
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=content))
        return 0

    if 'intern' in text or 'internship' in text:
        message = TemplateSendMessage(
            alt_text='Internship in Gliacloud',
            template=ButtonsTemplate(
                thumbnail_image_url='https://i.imgur.com/3DxUPmi.jpg',
                title='Internship in Gliacloud',
                text='Select a topic you like',
                actions=[
                    MessageTemplateAction(
                        label='Gliacloud',
                        text='Tell me more about Gliacloud.'),
                    MessageTemplateAction(label='Achievements',
                                          text='Tell me your achievements.'),
                    MessageTemplateAction(label='Reflection',
                                          text='Tell me your reflection.'),
                ]))
        line_bot_api.reply_message(event.reply_token, message)
        return 0

    if 'gliacloud' in text:
        content = 'Gliacloud is a startup developing AI video creation platform. You could find more information on their website:\nhttps://www.gliacloud.com/'
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=content))
        return 0

    if 'achievement' in text:
        content = '1. Developed and maintained UI of the AI Video Creation Platform and the official website.\n2. Supported and maintained quality control system based on user feedback.\n3. Wrote and executed unit tests and system tests for core products.\n4. Provided sales related support, including demo video production and business model analysis.'
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=content))
        return 0

    if 'reflection' in text:
        content = 'I\'m very happy and also thankful for having the chance to apply what I learned to the real world.'
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=content))
        return 0

    if 'project' in text:
        message = TemplateSendMessage(
            alt_text='I\'ve made two projects',
            template=ButtonsTemplate(
                thumbnail_image_url='https://i.imgur.com/nhX3VEW.jpg',
                title='I\'ve made two projects',
                text='Select one to know more',
                actions=[
                    MessageTemplateAction(
                        label='UP YOUNG System',
                        text='UP YOUNG Maintenance Staff System'),
                    MessageTemplateAction(label='Trisoap System',
                                          text='Trisoap Sales System'),
                ]))
        line_bot_api.reply_message(event.reply_token, message)
        return 0

    if 'up young' in text:
        content = '[UP YOUNG Maintenance Staff System]\n\nUP YOUNG is a washing machine dealer with many customers.\n\nWhat we do is to digitize and optimize the workflow of their maintenance staff who have to check whether each washing machine works well.\n\nWe developed optimized algorithm for scheduling and traveling route, in order to suggest best schedule for maintenance staff members.'
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=content))
        return 0

    if 'trisoap' in text:
        tri_content = '[Trisoap Sales System]\n\nTrisoap is a brand dedicated to sale soap made by mentally retarded children.\n\nWe collected their system demand by face-to-face interview and designed an appropriate system.\nFinally, we developed the online purchasing system, including connecting with third-party payment service and build admin interface for managers.'
        link = 'You can see the website here:\nhttps://www.trisoap.com.tw/'
        content = '{}\n\n{}'.format(tri_content, link)
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=content))
        return 0

    if 'this might be something interesting in your school life' in text:
        message = TemplateSendMessage(
            alt_text='Extracurricular Activities',
            template=ButtonsTemplate(
                title='Extracurricular Activities',
                text='Please select',
                thumbnail_image_url='https://i.imgur.com/oSKlcJi.jpg',
                actions=[
                    MessageTemplateAction(label='Art Exhibition',
                                          text='Art Exhibition'),
                    MessageTemplateAction(label='Volunteer Clubs',
                                          text='Volunteer Clubs')
                ]))
        line_bot_api.reply_message(event.reply_token, message)
        return 0

    if 'art exhibition' in text:
        artfest_content = '[Tech Art Exhibition of 23th NTUArtFest]\nI was the curator of the Tech Art Exhibition.\nI led a team to plan a contemporary dance display that demonstrated a world controlled by digits and people couldn\'t follow their minds.'
        funpark_content = '[10th Very Fun Park]\nI was a guide and an exhibition assistant of Very Fun Park held by Fubonart and National Taiwan University.\nI introduced art works to visitors and helped artists to arrange exhibition and dismantled displayed items.'
        content = '{}\n\n{}'.format(artfest_content, funpark_content)
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=content))
        return 0

    if 'volunteer club' in text:
        clubs = 'I joined the volunteer club for autism children and the volunteer club for children with cancer.'
        work = 'I worked with people from different backgrounds to plan events like summer camp for those children and their family, which make them relax and connect more with each other.'
        content = '{}\n\n{}'.format(clubs, work)
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=content))
        return 0

    if 'know more about you' in text:
        message = TemplateSendMessage(
            alt_text='Yah, ready to know more?',
            template=ButtonsTemplate(
                thumbnail_image_url='https://i.imgur.com/zjN1Pul.jpg',
                title='Yah, ready to know more?',
                text='Please select',
                actions=[
                    MessageTemplateAction(label='Motto', text='Motto'),
                    MessageTemplateAction(label='Second Languages',
                                          text='Second Languages')
                ]))
        line_bot_api.reply_message(event.reply_token, message)
        return 0

    if 'motto' in text:
        motto = 'To see the world, things dangerous to come to, to see behind walls, draw closer, to find each other and to feel. That is the purpose of life.'
        sen_content = 'This is my favorite sentence. And I believe technology should have the ability to help people achieve this goal.'
        content = '{}\n\n{}'.format(motto, sen_content)
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=content))
        return 0

    if 'second language' in text:
        content = 'English: fluent\nKorean: basic'
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=content))
        return 0

    if 'korean' in text:
        content = '안녕하세요. 저는 오아선 이에요.\nIt means "Hello, I am Wu Ya-Syuan."'
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=content))
        return 0

    if 'contact' in text or 'communicat' in text or 'phone' in text or 'email' in text:
        content = 'Contact me by:\nEmail: [email protected]\nPhone: +886 975669869'
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=content))
        return 0

    random_set = [
        "Nice to meet you.\nPlease chat with me by choosing a movie from the menu.",
        "Hi!\nChoose a movie from the menu to know more about me.",
        "Dear friend, select a movie you interested in from the menu.",
        "Are you ready for a movie? Choose one from the menu.",
        "Come on! Select a movie from the menu to talk with me.",
        "Come with me and select a movie you may like from the menu!",
        "Glad to see you. Watch movies to know more about me.",
    ]

    secure_random = random.SystemRandom()
    content = secure_random.choice(random_set)
    line_bot_api.reply_message(event.reply_token,
                               TextSendMessage(text=content))
コード例 #20
0
ファイル: func.py プロジェクト: joe94113/mylinebot
def sendSex(event):#西斯版爬取
    Dcard_url = "https://www.dcard.tw"
    Dcard_sex_url = "https://www.dcard.tw/f/sex"
    
    resp = requests.get(
            url=Dcard_sex_url,
            cookies={'over18': '1'}
        ).text
    soup = BeautifulSoup(resp, 'html5lib')
    
    articles = list()  # 儲存取得的文章資料
    divs = soup.find_all('article', 'tgn9uw-0 bpyTee')
    for d in divs:
        # 取得文章連結及標題
        if d.find('img','sc-2rneb0-0 khMHQx tgn9uw-7 ksWRdc'):# 有超連結,表示文章有圖片
            article = list()
            #標題0
            article.append(d.find('h2').text)
            #文章網址1
            article.append(Dcard_url + d.a['href'])
            #文章縮圖2
            article.append(d.find('img','sc-2rneb0-0 khMHQx tgn9uw-7 ksWRdc')['src'])
            #文章內文3
            article.append(d.find('div','uj732l-0 eLjDMI').text.strip())
            articles.append(article)
    try:
        message = TemplateSendMessage(
                alt_text = "西斯熱門",
                template=CarouselTemplate(
                    columns=[
                        CarouselColumn(
                            thumbnail_image_url = articles[2][2],
                            title= articles[2][0],
                            text= articles[2][3][:45] + "...",
                            actions=[
                                URITemplateAction(
                                    label='詳全文',
                                    uri = articles[2][1] 
                                ),
                            ]
                        ),
                        CarouselColumn(
                            thumbnail_image_url = articles[3][2],
                            title= articles[3][0],
                            text= articles[3][3][:45] + "...",
                            actions=[
                                URITemplateAction(
                                    label='詳全文',
                                    uri = articles[3][1] 
                                ),
                            ]
                        ),
                        CarouselColumn(
                            thumbnail_image_url = articles[5][2],
                            title= articles[5][0],
                            text= articles[5][3][:45] + "...",
                            actions=[
                                URITemplateAction(
                                    label='詳全文',
                                    uri = articles[5][1] 
                                ),
                            ]
                        ),
                        CarouselColumn(
                            thumbnail_image_url = articles[6][2],
                            title= articles[6][0],
                            text= articles[6][3][:45] + "...",
                            actions=[
                                URITemplateAction(
                                    label='詳全文',
                                    uri = articles[6][1] 
                                ),
                            ]
                        ),
                        CarouselColumn(
                            thumbnail_image_url = articles[8][2],
                            title= articles[8][0],
                            text= articles[8][3][:45] + "...",
                            actions=[
                                URITemplateAction(
                                    label='詳全文',
                                    uri = articles[8][1] 
                                ),
                            ]
                        ),
                        CarouselColumn(
                            thumbnail_image_url = articles[10][2],
                            title= articles[10][0],
                            text= articles[10][3][:45] + "...",
                            actions=[
                                URITemplateAction(
                                    label='詳全文',
                                    uri = articles[10][1] 
                                ),
                            ]
                        ),
                        CarouselColumn(
                            thumbnail_image_url = articles[11][2],
                            title= articles[11][0],
                            text= articles[11][3][:45] + "...",
                            actions=[
                                URITemplateAction(
                                    label='詳全文',
                                    uri = articles[11][1] 
                                ),
                            ]
                        ),
                        CarouselColumn(
                            thumbnail_image_url = articles[12][2],
                            title= articles[12][0],
                            text= articles[12][3][:45] + "...",
                            actions=[
                                URITemplateAction(
                                    label='詳全文',
                                    uri = articles[12][1] 
                                ),
                            ]
                        ),
                    ]
                )
            )
        line_bot_api.reply_message(event.reply_token, message)
    except:
        line_bot_api.reply_message(event.reply_token,TextSendMessage(text='發生錯誤!\n聯絡我感恩!'))
コード例 #21
0
    def setUp(self):
        self.tested = LineBotApi('channel_secret')

        self.button_template_message = TemplateSendMessage(
            alt_text='Buttons template',
            template=ButtonsTemplate(
                thumbnail_image_url='https://example.com/image.jpg',
                title='Menu',
                text='Please select',
                actions=[
                    PostbackAction(label='postback',
                                   display_text='postback text',
                                   data='action=buy&itemid=1'),
                    MessageAction(label='message', text='message text'),
                    URIAction(
                        label='uri',
                        uri='http://example.com/',
                        alt_uri=AltUri(desktop="http://example.com/desktop"))
                ]))

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

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

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

        self.carousel_template_message = TemplateSendMessage(
            alt_text='Carousel template',
            template=CarouselTemplate(columns=[
                CarouselColumn(
                    thumbnail_image_url='https://example.com'
                    '/item1.jpg',
                    title='this is menu1',
                    text='description1',
                    actions=[
                        PostbackAction(label='postback1',
                                       display_text='postback text1',
                                       data='action=buy&itemid=1'),
                        MessageAction(label='message1', text='message text1'),
                        URIAction(label='uri1', uri='http://example.com/1')
                    ]),
                CarouselColumn(
                    thumbnail_image_url='https://example.com'
                    '/item2.jpg',
                    image_background_color='#000000',
                    title='this is menu2',
                    text='description2',
                    actions=[
                        PostbackAction(
                            label='postback2',
                            display_text='postback text2',
                            data='action=buy&itemid=2'),
                        MessageAction(label='message2', text='message text2'),
                        URIAction(label='uri2', uri='http://example.com/2')
                    ]),
                CarouselColumn(
                    thumbnail_image_url='https://example.com'
                    '/item3.jpg',
                    title='this is menu3',
                    text='description3',
                    actions=[
                        DatetimePickerAction(
                            label="datetime picker date",
                            data="action=sell&itemid=2&mode=date",
                            mode="date",
                            initial="2013-04-01",
                            min="2011-06-23",
                            max="2017-09-08"),
                        DatetimePickerAction(
                            label="datetime picker time",
                            data="action=sell&itemid=2&mode=time",
                            mode="time",
                            initial="10:00",
                            min="00:00",
                            max="23:59"),
                        DatetimePickerAction(
                            label="datetime picker datetime",
                            data="action=sell&itemid=2&mode=datetime",
                            mode="datetime",
                            initial="2013-04-01T10:00",
                            min="2011-06-23T00:00",
                            max="2017-09-08T23:59")
                    ])
            ]))

        self.carousel_message = [{
            "type": "template",
            "altText": "Carousel template",
            "template": {
                "type":
                "carousel",
                "columns": [{
                    "thumbnailImageUrl":
                    "https://example.com/item1.jpg",
                    "title":
                    "this is menu1",
                    "text":
                    "description1",
                    "actions": [{
                        "type": "postback",
                        "label": "postback1",
                        "displayText": "postback text1",
                        "data": "action=buy&itemid=1"
                    }, {
                        "type": "message",
                        "label": "message1",
                        "text": "message text1"
                    }, {
                        "type": "uri",
                        "label": "uri1",
                        "uri": "http://example.com/1"
                    }]
                }, {
                    "thumbnailImageUrl":
                    "https://example.com/item2.jpg",
                    "imageBackgroundColor":
                    "#000000",
                    "title":
                    "this is menu2",
                    "text":
                    "description2",
                    "actions": [{
                        "type": "postback",
                        "label": "postback2",
                        "displayText": "postback text2",
                        "data": "action=buy&itemid=2"
                    }, {
                        "type": "message",
                        "label": "message2",
                        "text": "message text2"
                    }, {
                        "type": "uri",
                        "label": "uri2",
                        "uri": "http://example.com/2"
                    }]
                }, {
                    "thumbnailImageUrl":
                    "https://example.com/item3.jpg",
                    "title":
                    "this is menu3",
                    "text":
                    "description3",
                    "actions": [{
                        "type": "datetimepicker",
                        "label": "datetime picker date",
                        "data": "action=sell&itemid=2&mode=date",
                        "mode": "date",
                        "initial": "2013-04-01",
                        "min": "2011-06-23",
                        "max": "2017-09-08"
                    }, {
                        "type": "datetimepicker",
                        "label": "datetime picker time",
                        "data": "action=sell&itemid=2&mode=time",
                        "mode": "time",
                        "initial": "10:00",
                        "min": "00:00",
                        "max": "23:59"
                    }, {
                        "type": "datetimepicker",
                        "label": "datetime picker datetime",
                        "data": "action=sell&itemid=2&mode=datetime",
                        "mode": "datetime",
                        "initial": "2013-04-01T10:00",
                        "min": "2011-06-23T00:00",
                        "max": "2017-09-08T23:59"
                    }]
                }],
            }
        }]

        self.image_carousel_template_message = TemplateSendMessage(
            alt_text='Image carousel template',
            template=ImageCarouselTemplate(columns=[
                ImageCarouselColumn(image_url='https://example.com/'
                                    'item1.jpg',
                                    action=PostbackAction(
                                        label='postback1',
                                        data='action=buy&itemid=1')),
                ImageCarouselColumn(
                    image_url='https://example.com'
                    '/item2.jpg',
                    action=MessageAction(label='message2',
                                         text='message text2')),
                ImageCarouselColumn(image_url='https://example.com/'
                                    'item3.jpg',
                                    action=URIAction(
                                        label='uri1',
                                        uri='https://example.com/1'))
            ]))

        self.image_carousel_message = [{
            "type": "template",
            "altText": "Image carousel template",
            "template": {
                "type":
                "image_carousel",
                "columns": [{
                    "imageUrl": "https://example.com/item1.jpg",
                    "action": {
                        "type": "postback",
                        "label": "postback1",
                        "data": "action=buy&itemid=1",
                    }
                }, {
                    "imageUrl": "https://example.com/item2.jpg",
                    "action": {
                        "type": "message",
                        "label": "message2",
                        "text": "message text2"
                    }
                }, {
                    "imageUrl": "https://example.com/item3.jpg",
                    "action": {
                        "type": "uri",
                        "label": "uri1",
                        "uri": "https://example.com/1"
                    }
                }]
            }
        }]
コード例 #22
0
def handle_message(event):
    print("event =", event)
    
   
    online_users=db.test.find({"商家分類": "麵食點心"})
    
    feed_back=[]
    cnt=0
    
    no_photo_url="https://a.rimg.com.tw/s2/2/78/d4/21722409789652_704_m.jpg"
    ipeen_url="http://www.ipeen.com.tw/tainan/channel/F"
    
    for tmp in online_users:
        if(cnt>4):
            break
        if(tmp['nckuee_nearby_walk']==1):
            feed_back.append(tmp)
            cnt=cnt+1
    
    
    image_url = []
    click_link= []
    shop_name=[]
    shop_site=[]
    
    for item in feed_back:
        image_url.append(item['image'])
 
        try:
            click_link.append(item['網址'])
        
        except:
            click_link.append(ipeen_url)
            
        shop_name.append(item['商家名稱'])
        try:
            shop_site.append(item['地址'])
        
        except:
            shop_site.append("無")
        

    
    for i in image_url:
        print(i)
 
    
    carousel_template = template=CarouselTemplate(
            columns=[
                CarouselColumn(
                    thumbnail_image_url=str(image_url[0]),
                    title=shop_name[0],
                    text=shop_site[0],
                    actions=[
                        PostbackTemplateAction(
                            label='喜歡',
                            text='喜歡',
                            data='result=1'
                        ),
                        MessageTemplateAction(
                            label='不喜歡',
                            text='不喜歡'
                        ),
                        URITemplateAction(
                            label='此店的愛評網連結',
                            uri=str(click_link[0])
                        )
                    ]
                ),
                CarouselColumn(
                    thumbnail_image_url=str(image_url[1]),
                    title=shop_name[1],
                    text=shop_site[1],
                    actions=[
                        PostbackTemplateAction(
                            label='喜歡',
                            text='喜歡',
                            data='result=1'
                        ),
                        MessageTemplateAction(
                            label='不喜歡',
                            text='不喜歡'
                        ),
                        URITemplateAction(
                            label='此店的愛評網連結',
                            uri=str(click_link[1])
                        )
                    ]
                ),
                CarouselColumn(
                    thumbnail_image_url=str(image_url[2]),
                    title=shop_name[2],
                    text=shop_site[2],
                    actions=[
                        PostbackTemplateAction(
                            label='喜歡',
                            text='喜歡',
                            data='result=1'
                        ),
                        MessageTemplateAction(
                            label='不喜歡',
                            text='不喜歡'
                        ),
                        URITemplateAction(
                            label='此店的愛評網連結',
                            uri=str(click_link[2])
                        )
                    ]
                ),
                CarouselColumn(
                    thumbnail_image_url=str(image_url[3]),
                    title=shop_name[3],
                    text=shop_site[3],
                    actions=[
                        PostbackTemplateAction(
                            label='喜歡',
                            text='喜歡',
                            data='result=1'
                        ),
                        MessageTemplateAction(
                            label='不喜歡',
                            text='不喜歡'
                        ),
                        URITemplateAction(
                            label='此店的愛評網連結',
                            uri=str(click_link[3])
                        )
                    ]
                ),
                CarouselColumn(
                    thumbnail_image_url=str(image_url[4]),
                    title=shop_name[4],
                    text=shop_site[4],
                    actions=[
                        PostbackTemplateAction(
                            label='喜歡',
                            text='喜歡',
                            data='result=1'
                        ),
                        MessageTemplateAction(
                            label='不喜歡',
                            text='不喜歡'
                        ),
                        URITemplateAction(
                            label='此店的愛評網連結',
                            uri=str(click_link[4])
                        )
                    ]
                )]
            )
    print("event =", event)
    
#     alt_text 因template只能夠在手機上顯示,因此在PC版會使用alt_Text替代
    line_bot_api.reply_message(event.reply_token, TemplateSendMessage(alt_text="Carousel Template Example", template=carousel_template))
コード例 #23
0
def reply_text_and_get_user_profile(event):

    # 取出消息內User的資料
    user_profile = line_bot_api.get_profile(event.source.user_id)

    # 將用戶資訊做成合適Json
    user_info = {
        "user_open_id": user_profile.user_id,
        "user_nick_name": user_profile.display_name,
        #status留給學弟做應用
        "user_status": "",
        "user_img": user_profile.picture_url,
        "user_register_menu": menu_id
    }

    # 將json傳回API Server
    Endpoint = 'http://%s:5000/user' % (ip_location)

    # header要特別註明是json格式
    Header = {'Content-Type': 'application/json'}

    # 傳送post對API server新增資料
    Response = requests.post(Endpoint,
                             headers=Header,
                             data=json.dumps(user_info))

    #印出Response的資料訊息
    print(Response)
    print(Response.text)

    # 將菜單綁定在用戶身上
    # 要到Line官方server進行這像工作,這是官方的指定接口
    linkMenuEndpoint = 'https://api.line.me/v2/bot/user/%s/richmenu/%s' % (
        user_profile.user_id, menu_id)

    # 官方指定的header
    linkMenuRequestHeader = {
        'Content-Type': 'image/jpeg',
        'Authorization': 'Bearer %s' % secretFile["channel_access_token"]
    }

    # 傳送post method封包進行綁定菜單到用戶上
    lineLinkMenuResponse = requests.post(linkMenuEndpoint,
                                         headers=linkMenuRequestHeader)

    #再跟老師討論存在redis的值有沒有需要進去mysql
    #給剛加入的用戶初始化Redis資料
    redis.hmset(user_profile.user_id, {
        'result': 0,
        "total": 0,
        "sa_qid": 0,
        "dev_qid": 0,
        "sys_qid": 0
    })

    #針對剛加入的用戶回覆文字消息、圖片、旋轉門選單
    reply_message_list = [
        TextSendMessage(
            text=
            "歡迎%s\n感謝您加入Tibame AWS 考古題機器人\n使用我來幫助您通過AWS的認證考試吧!\n\n萬一您覺得提醒的次數有點多,您可以在本畫面的聊天室設定選單中,將「提醒」的功能關掉喔!?\n"
            % (user_profile.display_name)),
        ImageSendMessage(
            original_content_url='https://%s/images/certificate.jpg' %
            server_url,
            preview_image_url='https://%s/images/certificate.jpg' %
            server_url),
        TemplateSendMessage(alt_text="Tibame AWS 功能選單,為您服務",
                            template=button_template_message),
    ]

    #推送訊息給官方Line
    line_bot_api.reply_message(event.reply_token, reply_message_list)
コード例 #24
0
ファイル: main.py プロジェクト: shinichi-osada/linebot-test3
def handle_text_message(event):
    text = event.message.text

    if text == '名前':
        if isinstance(event.source, SourceUser):
            profile = line_bot_api.get_profile(event.source.user_id)
            line_bot_api.reply_message(event.reply_token, [
                TextSendMessage(text='Display name: ' + profile.display_name),
                TextSendMessage(text='Status message: ' +
                                profile.status_message)
            ])
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextMessage(text="Bot can't use profile API without user ID"))
    elif text == 'bye':
        if isinstance(event.source, SourceGroup):
            line_bot_api.reply_message(event.reply_token,
                                       TextMessage(text='Leaving group'))
            line_bot_api.leave_group(event.source.group_id)
        elif isinstance(event.source, SourceRoom):
            line_bot_api.reply_message(event.reply_token,
                                       TextMessage(text='Leaving group'))
            line_bot_api.leave_room(event.source.room_id)
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextMessage(text="Bot can't leave from 1:1 chat"))
    elif text == 'コンフォーム':
        confirm_template = ConfirmTemplate(
            text='Do it?',
            actions=[
                MessageTemplateAction(label='Yes', text='Yes!'),
                MessageTemplateAction(label='No', text='No!'),
            ])
        template_message = TemplateSendMessage(alt_text='Confirm alt text',
                                               template=confirm_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'ボタン':
        buttons_template = ButtonsTemplate(
            title='My buttons sample',
            text='Hello, my buttons',
            actions=[
                URITemplateAction(label='Go to line.me',
                                  uri='https://line.me'),
                PostbackTemplateAction(label='ping', data='ping'),
                PostbackTemplateAction(label='ping with text',
                                       data='ping',
                                       text='ping'),
                MessageTemplateAction(label='Translate Rice', text='米')
            ])
        template_message = TemplateSendMessage(alt_text='Buttons alt text',
                                               template=buttons_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'カルーセル':
        carousel_template = CarouselTemplate(columns=[
            CarouselColumn(text='hoge1',
                           title='fuga1',
                           actions=[
                               URITemplateAction(label='Go to line.me',
                                                 uri='https://line.me'),
                               PostbackTemplateAction(label='ping',
                                                      data='ping')
                           ]),
            CarouselColumn(
                text='hoge2',
                title='fuga2',
                actions=[
                    PostbackTemplateAction(
                        label='ping with text', data='ping', text='ping'),
                    MessageTemplateAction(label='Translate Rice', text='米')
                ]),
        ])
        template_message = TemplateSendMessage(alt_text='Buttons alt text',
                                               template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'imagemap':
        pass
    elif text == book.title:
        ds = get_client()
        query = ds.query(kind='Book', order=['title'])
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text=event.message.text + book.author))
    else:
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text=event.message.text +
                            "利用ワード-ボタン、コンフォーム、カルーセル"))
コード例 #25
0
def handle_message(event):
    """ Here's all the messages will be handled and processed by the program """

    msg = (event.message.text).lower()

#split text input
    StrMsg=msg.split(' '); #input = jadwal bandung

#bout text

    if 'hello' in msg:
        line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=['Hello, world 1', 'Hello, world 2'])) 
 
    elif 'hola' in msg:
        line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text="hello pengguna")) 

    elif 'kirim stiker' in msg:
        line_bot_api.reply_message(
        event.reply_token,
        StickerSendMessage(  package_id='1',
            sticker_id='1')) 
 

    elif 'kirim map' in msg:
        line_bot_api.reply_message(
        event.reply_token,
        LocationSendMessage(
    title='my location',
    address='Tokyo',
    latitude=35.65910807942215,
    longitude=139.70372892916203))
 


#bout tools
    elif msg == 'bye':
        if isinstance(event.source, SourceGroup):
            line_bot_api.reply_message(
                event.reply_token, TextSendMessage(text='invit aku lagi dong :('))
            line_bot_api.leave_group(event.source.group_id)
        elif isinstance(event.source, SourceRoom):
            line_bot_api.reply_message(
                event.reply_token, TextSendMessage(text='invit aku lagi dong :('))
            line_bot_api.leave_room(event.source.room_id)
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text="yes gabisa kick aku"))

#bout api
    elif 'sholat' in StrMsg[0]: 
        namakota = StrMsg[1]
        hasil = getJadwalSholat(namakota) 


        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text=hasil))


    elif 'qotd' in msg:    
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text=getQuotes("qotd")))

#bout profile
    elif 'hai min' in msg:    
        profile = line_bot_api.get_profile(event.source.user_id)
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text="Hi "+profile.display_name+" :P"))

    elif 'list member' in msg:    
        profile = line_bot_api.get_group_member_profile(event.source.group_id, event.source.user_id)
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text=profile.display_name))
    
 
#bout button
    elif 'confirm' in msg:
        confirm_template = ConfirmTemplate(text='Do it?', actions=[
            MessageAction(label='Yes', text = lala()), #masuk kefungsi lala
            MessageAction(label='No', text='No!'),
        ])
        template_message = TemplateSendMessage( #buat nampilin label diatas
            alt_text='Confirm alt text', template=confirm_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    

#this require handler postback event yg bagian postbackaction
    elif 'buttons' in msg:
        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='datetime', data='datetime_postback'),
                # PostbackAction(label='date', data='date_postback'),
                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)
コード例 #26
0
menu = TemplateSendMessage(
    alt_text='Carousel template',
    template=CarouselTemplate(
        columns=[
            # 卡片一
            CarouselColumn(
                # 卡片一圖片網址
                thumbnail_image_url='https://images.unsplash.com/photo-1518770660439-4636190af475?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1050&q=80',
                title='推薦群組一',
                text='電子股',
                # 一個action 最多三個按鈕
                actions=[
                    MessageAction(
                        # 按鈕上會顯示的文字
                        label='台積電(2330)',
                        # user點擊後會幫忙寫的文字,有的text很複雜,可以靠這個幫他寫
                        text='2330'
                    ),
                    MessageAction(
                        label='中華電(2412)',
                        text='2412'
                    ),
                    MessageAction(
                        label='鴻海(2317)',
                        text='2317'
                    )
                ]
            ),
            # 卡片二
            CarouselColumn(
                # 卡片二圖片網址
                thumbnail_image_url='https://images.unsplash.com/photo-1534951009808-766178b47a4f?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1050&q=80',
                title='推薦群組二',
                text='金融股',
                actions=[
                    MessageAction(
                        label='兆豐金(2886)',
                        text='2886'
                    ),
                    MessageAction(
                        label='玉山金(2884)',
                        text='2884'
                    ),
                    MessageAction(
                        label='中信金(2891)',
                        text='2891'
                    )
                ]
            )
        ]
    )
)
コード例 #27
0
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
    #=====[ LEAVE GROUP OR ROOM ]==========
    if 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"))
#=====[ TEMPLATE MESSAGE ]=============
    elif text == '/template':
        buttons_template = TemplateSendMessage(
            alt_text='template',
            template=ButtonsTemplate(
                title='[ TEMPLATE MSG ]',
                text='Tap the Button',
                actions=[
                    MessageTemplateAction(label='Culum 1', text='/aditmadzs'),
                    MessageTemplateAction(label='CULUM 2', text='/aditmadzs'),
                    MessageTemplateAction(label='CULUM 3', text='/aditmadzs')
                ]))

        line_bot_api.reply_message(event.reply_token, buttons_template)
#=====[ CAROUSEL MESSAGE ]==========
    elif text == '/carousel':
        message = TemplateSendMessage(
            alt_text='OTHER MENU',
            template=CarouselTemplate(columns=[
                CarouselColumn(title='ADD ME',
                               text='Contact Aditmadzs',
                               actions=[
                                   URITemplateAction(
                                       label='>TAP HERE<',
                                       uri='https://line.me/ti/p/~adit_cmct')
                               ]),
                CarouselColumn(title='Instagram',
                               text='FIND ME ON INSTAGRAM',
                               actions=[
                                   URITemplateAction(
                                       label='>TAP HERE!<',
                                       uri='http://line.me/ti/p/~adit_cmct')
                               ])
            ]))
        line_bot_api.reply_message(event.reply_token, message)
#=====[ FLEX MESSAGE ]==========
    elif text == 'flex':
        bubble = BubbleContainer(
            direction='ltr',
            hero=ImageComponent(
                url=
                'https://lh5.googleusercontent.com/VoOmR6tVRwKEow0HySsJ_UdrQrqrpwUwSzQnGa0yBeqSex-4Osar2w-JohT6yPu4Vl4qchND78aU2c5a5Bhl=w1366-h641-rw',
                size='full',
                aspect_ratio='20:13',
                aspect_mode='cover',
                action=URIAction(uri='http://line.me/ti/p/~adit_cmct',
                                 label='label')),
            body=BoxComponent(
                layout='vertical',
                contents=[
                    # title
                    TextComponent(text='Aditmadzs', 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='Tangerang, Indonesia',
                                                  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=[
                    # separator
                    SeparatorComponent(),
                    # websiteAction
                    ButtonComponent(style='link',
                                    height='sm',
                                    action=URIAction(
                                        label='Aditmadzs',
                                        uri="https://line.me/ti/p/~adit_cmct"))
                ]),
        )
        message = FlexSendMessage(alt_text="hello", contents=bubble)
        line_bot_api.reply_message(event.reply_token, message)
コード例 #28
0
def handle_message(event):

    template = TemplateSendMessage(
        alt_text='(選單)',
        template=CarouselTemplate(columns=[
            # Note:三個Carousel中actions都得要相同, 不然會整台掛掉
            CarouselColumn(
                thumbnail_image_url=
                'https://truth.bahamut.com.tw/s01/201711/1264bad8430c679ef5c7ffd685244218.JPG',
                title='小工具',
                text='請選擇:',
                actions=[
                    MessageTemplateAction(label='抽數字', text='抽數字'),
                    MessageTemplateAction(label='拆解多項式', text='拆解多項式'),
                    MessageTemplateAction(label='找圖片', text='找圖片')
                ]),
            CarouselColumn(
                thumbnail_image_url=
                'https://i.ytimg.com/vi/A1LtAYGom9Y/maxresdefault.jpg',
                title='爬蟲',
                text='請選擇:',
                actions=[
                    MessageTemplateAction(label='NewTalk 即時新聞 TOP 5',
                                          text='NewTalk 即時新聞 TOP 5'),
                    MessageTemplateAction(label='PTT 熱門文章 TOP 5',
                                          text='PTT 熱門文章 TOP 5'),
                    MessageTemplateAction(label='Dcard 熱門文章 TOP 5',
                                          text='Dcard 熱門文章 TOP 5')
                ]),
            CarouselColumn(
                thumbnail_image_url=
                'https://i.pinimg.com/originals/53/07/1d/53071d73b869c9263b912e3b8a6fe459.gif',
                title='小工具 Part2',
                text='請選擇:',
                actions=[
                    MessageTemplateAction(label='查詢火車時刻表', text='查詢火車時刻表'),
                    MessageTemplateAction(label='回到主頁', text='回到主頁'),
                    MessageTemplateAction(label='回到主頁', text='回到主頁')
                ])
        ]))

    profile = line_bot_api.get_profile(event.source.user_id)

    cmd = event.message.text

    try:
        with open('{}_cmd.txt'.format(profile.user_id), 'r') as f:
            for lines in f:
                mode = int(lines)
    except:
        with open('{}_cmd.txt'.format(profile.user_id), 'w') as f:
            mode = 0
            f.write(str(mode))

    print(cmd)

    if ('早' in cmd or '嘿' in cmd or '安' in cmd or '嗨' in cmd or '你好' in cmd
            or 'hello' in cmd or 'hi' in cmd
            or 'hey' in cmd) and mode != 3 and mode != 4:

        mode = 0

        with open('{}_cmd.txt'.format(profile.user_id), 'w') as f:
            f.write(str(mode))

        print('打招呼')

        reply = hello()

        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text="{}".format(reply)))

        return 0

    elif '回到主頁' in cmd or '功能' in cmd or '選單' in cmd or 'q' == cmd or 'Q' == cmd:

        mode = 0

        with open('{}_cmd.txt'.format(profile.user_id), 'w') as f:
            f.write(str(mode))

        print(mode)

        line_bot_api.reply_message(event.reply_token, template)

        return 0

    elif ('抽數字' in cmd) and mode != 3:

        mode = 1

        with open('{}_cmd.txt'.format(profile.user_id), 'w') as f:
            f.write(str(mode))

        print(mode)

        line_bot_api.reply_message(
            event.reply_token,
            TemplateSendMessage(
                alt_text='(選單)',
                template=ButtonsTemplate(
                    title='抽數字',
                    text='請輸入\'min,max\'\nex. 1,100',
                    actions=[MessageTemplateAction(label='回到主頁',
                                                   text='回到主頁')])))

        return 0

    elif ('拆解多項式' in cmd) and mode != 3:

        mode = 2

        with open('{}_cmd.txt'.format(profile.user_id), 'w') as f:
            f.write(str(mode))

        print(mode)

        line_bot_api.reply_message(
            event.reply_token,
            TemplateSendMessage(
                alt_text='(選單)',
                template=ButtonsTemplate(
                    title='拆解多項式',
                    text='請輸入\'terms1,terms2,...\'\nex. 1,-2,1',
                    actions=[MessageTemplateAction(label='回到主頁',
                                                   text='回到主頁')])))

        return 0

    elif ('找圖片' in cmd) and mode != 3:

        mode = 3

        with open('{}_cmd.txt'.format(profile.user_id), 'w') as f:
            f.write(str(mode))

        print(mode)

        line_bot_api.reply_message(
            event.reply_token,
            TemplateSendMessage(
                alt_text='(選單)',
                template=ButtonsTemplate(
                    title='找圖片',
                    text='請輸入\'關鍵字,指定筆數(預設為1)\'\nex. 紅米 Note4X,2',
                    actions=[MessageTemplateAction(label='回到主頁',
                                                   text='回到主頁')])))

        return 0

    elif ('查詢火車時刻表' in cmd) and mode != 3:

        mode = 4

        with open('{}_cmd.txt'.format(profile.user_id), 'w') as f:
            f.write(str(mode))

        print(mode)

        line_bot_api.reply_message(
            event.reply_token,
            TemplateSendMessage(
                alt_text='(選單)',
                template=ButtonsTemplate(
                    title='查詢火車時刻表',
                    text='請輸入\'起站 迄站\'\nex. 永康 保安',
                    actions=[MessageTemplateAction(label='回到主頁',
                                                   text='回到主頁')])))

        return 0

    elif 'NewTalk 即時新聞 TOP 5' in cmd:

        reply = newtalk_top_5()

        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text="{}".format(reply)))

        return 0

    elif 'PTT 熱門文章 TOP 5' in cmd:

        print('ok!')

        reply = ptt_top_5()

        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text="{}".format(reply)))

        return 0

    elif 'Dcard 熱門文章 TOP 5' in cmd:

        reply = dcard_top_5()

        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text="{}".format(reply)))

        return 0

    else:

        if mode == 1:

            reply = choose_num(cmd)

            line_bot_api.reply_message(
                event.reply_token, TextSendMessage(text="{}".format(reply)))

            return 0

        elif mode == 2:

            reply = newton_separate.run_main(cmd)

            line_bot_api.reply_message(
                event.reply_token, TextSendMessage(text="{}".format(reply)))

            return 0

        elif mode == 3:

            img_url, check = find_img(cmd)

            print('{},{}'.format(img_url, check))

            if 'https' not in img_url or check == 1:

                reply = 'Sorry~\n發生了一些錯誤,可能原因:\n1. 找不到,換個關鍵字吧!\n2. 網站掛了QQ\n3. 圖片網址不安全\n4. 格式錯誤\n\n輸入\'q\'離開'

                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(text="{}".format(reply)))

                return 0

            else:
                line_bot_api.reply_message(
                    event.reply_token,
                    ImageSendMessage(original_content_url=img_url,
                                     preview_image_url=img_url))

            return 0

        elif mode == 4:

            reply = train_timetable(cmd)

            line_bot_api.reply_message(
                event.reply_token, TextSendMessage(text="{}".format(reply)))

            return 0

        else:

            mode = 0

            with open('{}_cmd.txt'.format(profile.user_id), 'w') as f:
                f.write(str(mode))

            print(mode)

            line_bot_api.reply_message(event.reply_token, template)

            return 0
コード例 #29
0
ファイル: app.py プロジェクト: wu87988622/LineBot
def handle_message(event):
    message = str(event.message.text)
    logging.info(message)
    replyToken = event.reply_token
    KKID = 'Ua6e5cc1dc6fbeaca3f6db3f220c2782a'
    markID = 'U96e561374b413379c8fddc22ed185e9e'
    DDID = 'U47d7743cf2cae1d0c524c03cdca81775'
    QQID = 'Ud272182402cd7a29ad48a1a68d924eee'
    d607ID = 'U0677c83831ba745c15b5bd68e79f7d12'
    if message.find('ig:') != -1:
        if message.find('http') != -1:
            url = message[3:]
            imgMap = get_ig_image(url)
            sendMsg = []
            imgUrls = imgMap['img']
            mp4s = imgMap['mp4']
            for imgUrl in imgUrls:
                logging.info(imgUrl)
                if len(sendMsg) < 5:
                    sendMsg.append(
                        ImageSendMessage(original_content_url=imgUrl,
                                         preview_image_url=imgUrl))
            for mp4 in mp4s:
                logging.info(mp4)
                mp4Url = str(mp4).split(',')
                if len(sendMsg) < 5:
                    sendMsg.append(
                        VideoSendMessage(original_content_url=mp4Url[0],
                                         preview_image_url=mp4Url[1]))
            line_bot_api.reply_message(replyToken, sendMsg)
        else:
            text = message[3:]
            imgUrls = get_ig_user(text)
            sendMsg = []
            for imgUrl in imgUrls:
                logging.info(imgUrl)
                sendMsg.append(
                    ImageSendMessage(original_content_url=imgUrl,
                                     preview_image_url=imgUrl))
            line_bot_api.reply_message(replyToken, sendMsg)
    if message.find('g:') != -1:
        gMsg = message[2:]
        imgUrl = get_google_image(gMsg)
        sendMsg = ImageSendMessage(original_content_url=imgUrl,
                                   preview_image_url=imgUrl)
        line_bot_api.reply_message(replyToken, sendMsg)
    if message.find('治軍') != -1:
        sendMsg = TextSendMessage(text='志鈞拉 幹')
        line_bot_api.reply_message(replyToken, sendMsg)
    #if message.find('在') != -1:
    #    sendMsg = TextSendMessage(text='再拉 幹')
    #    line_bot_api.reply_message(event.reply_token, sendMsg)
    #if message.find('幹') != -1:
    #    sendMsg = TextSendMessage(text='I\'m Groot')
    #    line_bot_api.reply_message(event.reply_token, sendMsg)
    if message.find('484') != -1:
        imgurl = line_bot_url + '/484.jpg'
        sendMsg = ImageSendMessage(preview_image_url=imgurl,
                                   original_content_url=imgurl)
        line_bot_api.reply_message(replyToken, sendMsg)

    for case in switch(message):
        if case('貼圖'):
            sendMsg = StickerSendMessage(package_id='1', sticker_id='15')
            line_bot_api.reply_message(replyToken, sendMsg)
            break
        if case('打招呼'):
            sendMsg = TextSendMessage(text='志鈞哥,馬克哥 早安!!')
            line_bot_api.reply_message(replyToken, sendMsg)
            break
        if case('ㄤ'):
            sendMsg = TextSendMessage(text='ㄤㄤ泥豪')
            line_bot_api.reply_message(replyToken, sendMsg)
            break
        if case('叫大哥'):
            sendMsg = TextSendMessage(text='大哥好')
            line_bot_api.reply_message(replyToken, sendMsg)
            break
        if case('這是什麼'):
            sendMsg = TextSendMessage(text='港幣!')
            line_bot_api.reply_message(replyToken, sendMsg)
            break
        if case('我知道'):
            sendMsg = TextSendMessage(text='知道還問')
            line_bot_api.reply_message(replyToken, sendMsg)
            break
        if case('我沒有資格問嗎'):
            sendMsg = TextSendMessage(text='有資格!有資格!有資格!')
            line_bot_api.reply_message(replyToken, sendMsg)
            break
        if case('getid'):
            if event.source.type == 'user':
                sendMsg = TextSendMessage(text=event.source.user_id)
            elif event.source.type == 'group':
                sendMsg = TextSendMessage(text=event.source.group_id)
            elif event.source.type == 'room':
                sendMsg = TextSendMessage(text=event.source.room_id)
            line_bot_api.reply_message(replyToken, sendMsg)
            break
        if case('道歉'):
            if event.source.user_id == markID:
                sendMsg = TextSendMessage(text='歷史不是捏造就能改變')
            if event.source.user_id == QQID:
                sendMsg = TextSendMessage(text='Q哥 你頭髮世界直 抱歉')
            if event.source.user_id == d607ID:
                sendMsg = TextSendMessage(text='哲哥 抱歉 你水冷最猛')
            if event.source.user_id == KKID:
                sendMsg = TemplateSendMessage(
                    alt_text='Image Carousel template',
                    template=ImageCarouselTemplate(columns=[
                        ImageCarouselColumn(
                            image_url=line_bot_url + '/newsorry.jpg',
                            action=MessageTemplateAction(label='志鈞哥',
                                                         text='我要幹到你口吐白沫')),
                        ImageCarouselColumn(
                            image_url=line_bot_url + '/newsorry2.jpg',
                            action=MessageTemplateAction(label='小妹錯了',
                                                         text='我要幹到你口吐白沫')),
                        ImageCarouselColumn(
                            image_url=line_bot_url + '/newsorry3.jpg',
                            action=MessageTemplateAction(label='只好露出',
                                                         text='我要幹到你口吐白沫')),
                        ImageCarouselColumn(image_url=line_bot_url +
                                            '/newsorry4.jpg',
                                            action=MessageTemplateAction(
                                                label='胸部', text='我要幹到你口吐白沫')),
                        ImageCarouselColumn(image_url=line_bot_url +
                                            '/newsorry5.jpg',
                                            action=MessageTemplateAction(
                                                label='胸部', text='我要幹到你口吐白沫')),
                        ImageCarouselColumn(image_url=line_bot_url +
                                            '/newsorry6.jpg',
                                            action=MessageTemplateAction(
                                                label='胸部', text='我要幹到你口吐白沫')),
                        ImageCarouselColumn(image_url=line_bot_url +
                                            '/newsorry7.jpg',
                                            action=MessageTemplateAction(
                                                label='胸部', text='我要幹到你口吐白沫')),
                        ImageCarouselColumn(image_url=line_bot_url +
                                            '/newsorry8.jpg',
                                            action=MessageTemplateAction(
                                                label='胸部', text='我要幹到你口吐白沫')),
                        ImageCarouselColumn(image_url=line_bot_url +
                                            '/newsorry9.jpg',
                                            action=MessageTemplateAction(
                                                label='胸部', text='我要幹到你口吐白沫')),
                        ImageCarouselColumn(image_url=line_bot_url +
                                            '/newsorry10.jpg',
                                            action=MessageTemplateAction(
                                                label='胸部', text='我要幹到你口吐白沫')),
                    ]))

            if event.source.user_id == DDID:
                sendMsg = TextSendMessage(
                    text='抱歉 你也是大哥\n葉子媚是個賢妻良母,兩百塊最聰明,戈巴契夫頭髮最長,海珊總統最不愛打仗')
            line_bot_api.reply_message(replyToken, sendMsg)
            break
        if case('懺悔'):
            if event.source.user_id == markID:
                sendMsg = TextSendMessage(text='才會真正得到尊嚴')
            line_bot_api.reply_message(replyToken, sendMsg)
            break
        if case('認錯'):
            if event.source.user_id == markID:
                sendMsg = TextSendMessage(text='事實不是說謊就能帶過')
            line_bot_api.reply_message(replyToken, sendMsg)
            break
        if case('=='):
            sendMsg = TextSendMessage(text='你以為說==就沒事了嗎?')
            line_bot_api.reply_message(replyToken, sendMsg)
            break
        if case('0.0'):
            sendMsg = TextSendMessage(text='靠杯喔')
            line_bot_api.reply_message(replyToken, sendMsg)
            break
        if case('=_='):
            sendMsg = TextSendMessage(text='神經病')
            line_bot_api.reply_message(replyToken, sendMsg)
            break
        if case('對不起'):
            if event.source.user_id == KKID:
                sendMsg = ImageSendMessage(
                    preview_image_url=line_bot_url + '/saySorry.jpg',
                    original_content_url=line_bot_url + '/saySorry.jpg')
                line_bot_api.reply_message(replyToken, sendMsg)
            break
        if case('笑死'):
            sendMsg = ImageSendMessage(
                preview_image_url=line_bot_url + '/haha.jpg',
                original_content_url=line_bot_url + '/haha.jpg')
            line_bot_api.reply_message(replyToken, sendMsg)
            break
        if case('= ='):
            sendMsg = ImageSendMessage(
                preview_image_url=line_bot_url + '/==.jpg',
                original_content_url=line_bot_url + '/==.jpg')
            line_bot_api.reply_message(replyToken, sendMsg)
            break
コード例 #30
0
def get_movie_releasenow(user_token):
    users_ref = db.collection("隨機推薦電影清單").document('上映中')
    docs = users_ref.get()
    movie_name = []  # 存上映中電影名稱
    for doc in docs.to_dict():
        movie_name.append(str(docs.to_dict().get(doc).strip()))

    image_url = []  # 圖片網址
    movie_name_Chinese = []  # 電影中文名稱
    movie_name_English = []  # 電影英文名稱
    movie_type = []  # 電影類型
    trailer_url = []  # 預告片網址
    age_level = []  # 電影分級

    line_bot_api.push_message(user_token,
                              TextSendMessage('正在為您尋找上映中評分最高且最適合您的電影...'))

    for lis in range(0, 8, 1):
        users_ref = db.collection("上映中電影").document("%s" % (movie_name[lis]))
        doc = users_ref.get()
        if 'Movie_Name_Chinese' in doc.to_dict():
            movie_name_Chinese.append(doc.to_dict()['Movie_Name_Chinese'])
        else:
            movie_name_Chinese.append('')

        if 'Movie_Name_English' in doc.to_dict():
            movie_name_English.append(doc.to_dict()['Movie_Name_English'])
        else:
            movie_name_English.append('')

        if 'Movie_ImageURL' in doc.to_dict():
            image_url.append(doc.to_dict()['Movie_ImageURL'])
        else:
            image_url.append('')

        if 'Movie_PreviewURL' in doc.to_dict():
            trailer_url.append(doc.to_dict()['Movie_PreviewURL'])
        else:
            trailer_url.append('')

        if 'Movie_Type' in doc.to_dict():
            movie_type.append(doc.to_dict()['Movie_Type'])
        else:
            movie_type.append('')

        if 'Movie_AgeLimit' in doc.to_dict():
            age_level.append(doc.to_dict()['Movie_AgeLimit'])
        else:
            age_level.append('0+')

    # 宣告儲存橫向捲軸的list
    column_list = []
    for pnum in range(0, 8, 1):
        if trailer_url[pnum] != '':
            URLweb = trailer_url[pnum]
        else:
            URLweb = 'https://www.youtube.com/results?search_query=' + movie_name_Chinese[
                pnum] + '預告'

        carouselcolumn = CarouselColumn(
            thumbnail_image_url='%s' % (image_url[pnum]),  # 電影的圖片
            title='電影名稱:%s' % (movie_name_Chinese[pnum]),  # 電影的名字
            text='電影類型:' + movie_type[pnum] + '\n' + '分級限制:' +
            age_level[pnum],  # 電影的類型
            actions=[
                PostbackTemplateAction(
                    label='我想看這部',
                    text='我想看' + '\n' + movie_name_Chinese[pnum],
                    data='我想看' + '\n' + movie_name_Chinese[pnum]),
                URITemplateAction(label='觀看預告', uri='%s' % (URLweb))
            ])
        column_list.append(carouselcolumn)

        Carousel_template = CarouselTemplate(
            columns=column_list,
            image_aspect_ratio=
            "square",  # 圖片形狀,一共兩個參數。square指圖片1:1,rectangle指圖片1.5:1
            image_size=
            "contain"  # 圖片size大小設定,一共兩個參數。cover指圖片充滿畫面,contain指縮小圖片塞到畫面
        )
    line_bot_api.push_message(
        user_token,
        TemplateSendMessage(alt_text="為您推薦上映中的電影",
                            template=Carousel_template))  # 將影城的圖片等資訊傳送給使用者)