Example #1
0
 def message(line_event):
     text = "画像を送信してください"
     line_bot_api.reply_message(line_event.reply_token, TextSendMessage(text=text))
Example #2
0
def handle_message(event):
    if event.message.type is not 'audio':
        # 入ってきたものがaudio以外だったら、デフォルトメッセージを返す
        start_youtube_time = time.time()
        for i in range(1, MAX_RETRY):
            try:
                line_bot_api.reply_message(
                    event.reply_token,  # トークンとテキストで紐づけてる
                    TextSendMessage(text='あなたと一緒にコード解析するよー!\n'
                                    'LINEで録音して送ってみてね。\n'
                                    '容量の小さいmp3ファイルも解析できるよ'))
                upload_s3.sign_s3('/tmp/analize_log//{}'.format(logging_file),
                                  'mico/log/{}'.format(logging_file))
                break
            except LineBotApiError as e:
                logger.error('LineBotApiError: {}'.format(e))
                logger.error('retry: {0}/{1}'.format(i, MAX_RETRY))
                line_bot_api.reply_message(
                    event.reply_token,  # トークンとテキストで紐づけてる
                    TextSendMessage(text='あなたと一緒にコード解析するよー!\n'
                                    'LINEで録音して送ってみてね\n'
                                    '容量の小さいmp3ファイルも解析できるよ\n'))
                upload_s3.sign_s3('/tmp/analize_log//{}'.format(logging_file),
                                  'mico/log/{}'.format(logging_file))

                return 'ok'
    # logger.info('Message ID: {}'.format(str(event.message.id)))
    #
    # return 'ok'
    logger.info('Message ID: {}'.format(str(event.message.id)))
    upload_s3.sign_s3('/tmp/analize_log//{}'.format(logging_file),
                      'mico/log/{}'.format(logging_file))
    # オーディオデータ(バイナリ形式。'audio/x-m4a')を取得する
    message_content = line_bot_api.get_message_content(event.message.id)
    # tmpディレクトリに保存
    input_file_path = '/tmp/{}.m4a'.format(event.message.id)
    logger.info('Receive m4a file name: {}'.format(str(input_file_path)))
    upload_s3.sign_s3('/tmp/analize_log//{}'.format(logging_file),
                      'mico/log/{}'.format(logging_file))
    if os.path.exists('/tmp/') is not True:
        logger.info('make temporary directory')
        os.mkdir('/tmp/')
    line_bot_api.push_message(
        event.source.user_id,  # トークンとテキストで紐づけてる
        TextSendMessage(text='解析してみるよー!\n'
                        '終わったら話しかけるねー。\n'
                        '1分経ってもお返事が来なかったら、もう少し短いファイルを送ってみてくれるかな?'))
    start_chunk = time.time()
    with open(input_file_path, 'wb') as fd:
        for i in range(MAX_RETRY):  # m4aバイナリの書き込みに失敗したら、5回までリトライ処理入れる
            try:
                for chunk in message_content.iter_content():
                    fd.write(chunk)
                break
            except:
                logger.error('LineBotApiError: {}'.format(
                    traceback.format_exc()))
                logger.error('retry: {0}/{1}'.format(i, MAX_RETRY))
                sleep(i * 5)
        end_chunk = time.time() - start_chunk
        logger.info('chunk time: {}'.format(end_chunk))
        start_conv_mp3 = time.time()
        # S3にアップロード
        upload_s3.sign_s3(input_file_path,
                          'mico/m4a/{}.m4a'.format(event.message.id))

    # m4aバイナリファイルをローカルに保存し、mp3バイナリファイルに変換する
    chunk_mp3 = song_upload.m4a_to_mp3(input_file_path)
    end_conv_mp3 = time.time() - start_conv_mp3
    logger.info('converted time: {} [sec]'.format(end_conv_mp3))
    start_analize = time.time()
    chord_analize_response = mp3_to_response(chunk_mp3)
    end_analize = time.time() - start_analize
    logger.info('Analize time: {} [sec]'.format(end_analize))
    # push API使えないバージョン
    # line_bot_api.reply_message(
    #     event.reply_token,  # トークンとテキストで紐づけてる
    #     TextSendMessage(
    #         text=
    #         str(chord_analize_response)
    #     )
    # )
    line_bot_api.push_message(
        event.source.user_id,  # トークンとテキストで紐づけてる
        TextSendMessage(text=str(chord_analize_response)))
    logger.info(
        'Success! Sent response for user: {}'.format(chord_analize_response))
    # S3にアップロード
    upload_s3.sign_s3('/tmp/analize_log//{}'.format(logging_file),
                      'mico/log/{}'.format(logging_file))
    return 'ok'
Example #3
0
def pushTextMessage(line_id, message):
    line_bot_api.push_message(line_id, TextSendMessage(text=message))
Example #4
0
def send_text_message(reply_token, text):
    line_bot_api = LineBotApi(channel_access_token)
    line_bot_api.reply_message(reply_token, TextSendMessage(text=text))

    return "OK"
Example #5
0
             profile = line_bot_api.get_profile(event.source.sender_id)
             line_bot_api.reply_message(
                 event.reply_token, [
                     TextSendMessage(text="Nama: " + profile.display_name),
                     TextSendMessage(text="Status bio: " + profile.status_message)
                 ]
             )
         else:
             line_bot_api.reply_message(
                 event.reply_token,
                 TextSendMessage(text="Bot can"t use profile in group chat"))

    if text == "!coss-bye":
        if isinstance(event.source, SourceGroup):
            line_bot_api.reply_message(
                event.reply_token, TextSendMessage(text="Bye semuanya :D"))
            line_bot_api.leave_group(event.source.group_id)
        elif isinstance(event.source, SourceRoom):
            line_bot_api.reply_message(
                event.reply_token, TextSendMessage(text="Bye semuanya :D"))
            line_bot_api.leave_room(event.source.room_id)
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text="Command ini tidak bisa dipakai dalam private chat :("))
#=====[ SEARCH ID LINE ]=============
    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)
Example #6
0
def handle_join(event):
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text='Joined this ' + event.source.type))
Example #7
0
def handle_beacon(event):
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text='Got beacon event. hwid=' + event.beacon.hwid))
Example #8
0
File: app.py Project: jayaranah/ttt
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 ]==========[ ARSYBAI ]======================
    if "/yt" in text:
        separate = text.split(" ")
        search = text.replace(separate[0] + " ", "")
        url = requests.get(
            "http://api.w3hills.com/youtube/search?keyword={}&api_key=86A7FCF3-6CAF-DEB9-E214-B74BDB835B5B"
            .format(search))
        data = url.json()
        no = 0
        result = "Search"
        for anu in data["videos"]:
            no += 1
            result += "\n{}. {}\n{}".format(str(no), str(anu["title"]),
                                            str(anu["webpage"]))
        result += "\nall{}".format(str(len(data["videos"])))
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=result))
    if "/news" in text:
        try:
            separate = text.split(" ")
            country = text.replace(separate[0] + " ", "")
            if (separate == None): country == "th"
            user_agent = {'User-agent': 'Mozilla/5.0'}
            url = requests.get(
                "https://newsapi.org/v2/top-headlines?country={}&apiKey=763b6fc67a594a4e9e0f9d29303f83dd"
                .format(country))
            data = url.json()
            result = "New Releases"
            for anu in data["articles"]:
                if len(result) > 500:
                    line_bot_api.reply_message(event.reply_token,
                                               TextSendMessage(text=result))
                else:
                    result += "\n" + anu["title"] + "\n" + anu["url"] + "\n"
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text=result))
        except Exception as Error:
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text=Error))
    if "/snews" in text:
        separate = text.split(" ")
        searchx = text.replace(separate[0] + " ", "")
        search = searchx
        gs = goslate.Goslate()
        search = gs.translate(searchx, 'en')
        r = requests.get("http://www.google.co.th/search?q=" + search +
                         "&tbm=nws")
        content = r.text
        news_summaries = []
        soup = BeautifulSoup(content, "html.parser")
        st_divs = soup.findAll("div", {"class": "st"})
        g_divs = soup.findAll("div", {"class": "g"})
        trs = "News about " + searchx
        news_d = []
        for g_div in g_divs:
            news_d.append(g_div.text)
        for st_div in st_divs:
            news_summaries.append(st_div.text)
        for i in news_summaries:
            for x in news_d:
                try:
                    if len(trs) > 600:
                        line_bot_api.reply_message(event.reply_token,
                                                   TextSendMessage(text=trs))
                    else:
                        gs = goslate.Goslate()
                        x = gs.translate(x, 'en')
                        trs += "\n\n" + x + "\nRead more at"
                except Exception as error:
                    line_bot_api.reply_message(event.reply_token,
                                               TextSendMessage(text=error))
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=trs))
    if text == "/bye":
        if (event.source.user_id == "U2c7d1341178eed8c93c23e914cbcb6a0"):
            confirm_template_message = TemplateSendMessage(
                alt_text='God message',
                template=ConfirmTemplate(
                    text='Will remove the bot? Are you sure?',
                    actions=[
                        PostbackAction(label='sure',
                                       text='goodbye',
                                       data='action=buy&itemid=1'),
                        MessageAction(label='Not', text='...')
                    ]))
            line_bot_api.reply_message(event.reply_token,
                                       confirm_template_message)
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text="This user is not allowed."))
    if "/ti/g/" in text:
        link_re = re.compile(
            '(?:line\:\/|line\.me\/R)\/ti\/g\/([a-zA-Z0-9_-]+)?')
        links = link_re.findall(text)
        n_links = []
        for l in links:
            if l not in n_links:
                n_links.append(l)
        for ticket_id in n_links:
            group = line_bot_api.findGroupByTicket(ticket_id)
            line_bot_api.acceptGroupInvitationByTicket(group.id, ticket_id)
    if text == '/contact':
        buttons_template_message = TemplateSendMessage(
            alt_text='God message',
            template=ButtonsTemplate(
                thumbnail_image_url=
                'https://gamingroom.co/wp-content/uploads/2017/11/CyCYOArUoAA2T6d.jpg',
                title='Contact',
                text='contact',
                actions=[
                    PostbackAction(label='Line',
                                   text='http://line.me/ti/p/~1535915621_',
                                   data='action=buy&itemid=1'),
                    MessageAction(label="Facebook",
                                  text='https://www.facebook.com/DPunisher'),
                    URIAction(label='Contact',
                              uri='http://line.me/ti/p/~1535915621_')
                ]))
        line_bot_api.reply_message(event.reply_token, buttons_template_message)
        bubble = BubbleContainer(
            direction='ltr',
            hero=ImageComponent(
                url=
                'http://images4.fanpop.com/image/photos/15800000/Animes-anime-cuties-15887436-1400-875.jpg',
                size='full',
                aspect_ratio='20:13',
                aspect_mode='cover',
                action=URIAction(uri='http://line.me/ti/p/~esci_', label='@')),
            body=BoxComponent(
                layout='vertical',
                contents=[
                    # title
                    TextComponent(text='PASUNx', weight='bold', size='xl'),
                    # review
                    # 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='Bangkok, Thailand',
                                                  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="00:00 - 23:59",
                                        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='contact',
                                        uri="https://line.me/ti/p/~esci_"))
                ]),
        )
        #message = FlexSendMessage(alt_text="God message", contents=bubble)
        #line_bot_api.reply_message(
        #    event.reply_token,
        #    buttons_template_message
        #)
    if '/wiki ' in text:
        try:
            wiki = text.replace("/wiki ", "")
            wikipedia.set_lang("en")
            pesan = "Wikipedia About"
            pesan += wikipedia.page(wiki).title
            pesan += "\n\n"
            pesan += wikipedia.summary(wiki, sentences=1)
            pesan += "\n\nRead more\n"
            pesan += wikipedia.page(wiki).url
            titlex = wikipedia.page(wiki).title
            textx = wikipedia.summary(wiki, sentences=1)
            urlx = wikipedia.page(wiki).url
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text=pesan))
        except:
            try:
                pesan = "Over limit message! Please click the link below to read more.\n"
                pesan += wikipedia.page(wiki).url
                line_bot_api.reply_message(event.reply_token,
                                           TextSendMessage(text=pesan))
            except Exception as e:
                line_bot_api.reply_message(event.reply_token,
                                           TextSendMessage(text=str(e)))
    if text == "/kick":
        line_bot_api.kickoutFromGroup(0, event.source.group_id,
                                      "Udaa0a2f396dd41e4398b106d903d92fd")
    if text == "/2kick":
        line_bot_api.kickoutFromGroup(event.source.group_id,
                                      "u541bbaba15d68f3a652106a0de5a3e94")
    if text == "/3kick":
        line_bot_api.kickoutFromGroup(0, event.source.group_id,
                                      "u541bbaba15d68f3a652106a0de5a3e94")
    if text == "/4kick":
        line_bot_api.kickoutFromGroup(event.source.group_id,
                                      "Udaa0a2f396dd41e4398b106d903d92fd")

    if text == '/gid':
        profile = line_bot_api.get_profile(event.source.user_id)
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.display_name))
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=event.source.group_id))
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.picture_url))
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.status_message))
    if text == '/id':
        profile = line_bot_api.get_profile(event.source.user_id)
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.display_name))
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=event.source.user_id))
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.picture_url))
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.status_message))
    if text == '/bio':
        profile = line_bot_api.get_profile(event.source.user_id)
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.display_name))
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=event.source.user_id))
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.picture_url))
        line_bot_api.reply_message(
            event.reply_token, TextSendMessage(text=profile.status_message))
    if text == '/pic':
        profile = line_bot_api.get_profile(event.source.user_id)
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.display_name))
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=event.source.user_id))
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=profile.picture_url))
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.status_message))
    if text == '/name':
        profile = line_bot_api.get_profile(event.source.user_id)
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=profile.display_name))
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=event.source.user_id))
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.picture_url))
        #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=profile.status_message))
    if text == 'goodbye':
        if (event.source.user_id == "U2c7d1341178eed8c93c23e914cbcb6a0"):
            if isinstance(event.source, SourceGroup):
                line_bot_api.reply_message(event.reply_token,
                                           TextSendMessage(text='Outgoing...'))
                line_bot_api.leave_group(event.source.group_id)
            elif isinstance(event.source, SourceRoom):
                line_bot_api.reply_message(event.reply_token,
                                           TextSendMessage(text='Outgoing...'))
                line_bot_api.leave_room(event.source.room_id)
            else:
                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(
                        text="The bot can not leave chat. 1:1 have"))

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

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

    elif '/test' in text:
        buttons_template_message = TemplateSendMessage(
            alt_text='Buttons template',
            template=ButtonsTemplate(
                thumbnail_image_url='https://example.com/image.jpg',
                title='Menu',
                text='God message',
                actions=[
                    PostbackAction(label='postback',
                                   text='postback text',
                                   data='action=buy&itemid=1'),
                    MessageAction(label='message', text='message text'),
                    URIAction(label='uri', uri='http://example.com/')
                ]))
        line_bot_api.reply_message(event.reply_token,
                                   image_carousel_template_message)
Example #9
0
def handle_message(event):
    message = TextSendMessage(text=(event.message.text + "喜歡男人"))
    message = message
    line_bot_api.reply_message(event.reply_token, message)
Example #10
0
 def setUp(self):
     self.tested = LineBotApi('channel_secret')
     # test data
     self.text_message = TextSendMessage(text='Hello, world')
     self.message = [{"type": "text", "text": "Hello, world"}]
Example #11
0
def handle_text_message(event):  # default
    msg = event.message.text  #message from user

    # 針對使用者各種訊息的回覆 Start =========
    line_bot_api.reply_message(event.reply_token, TextSendMessage(text=msg))
Example #12
0
def handle_message(event):
    access = Access.query.get(1)
    all_access = Access.query.get(2)
    lagi_pelajaran_ipa = Access.query.get(3)
    accessible = access.accessible
    user_message = event.message.text
    user_message_lower = user_message.lower()
    reply_token = event.reply_token
    account = LineAccount.query.filter_by(
        account_id=event.source.user_id).first()

    if not account:
        account = LineAccount(account_id=event.source.user_id)
        try:
            account.name = line_bot_api.get_profile(
                account.account_id).display_name
        except LineBotApiError:
            pass
        db.session.add(account)
        db.session.commit()
    elif not account.name:
        try:
            account.name = line_bot_api.get_profile(
                account.account_id).display_name
        except LineBotApiError:
            pass
        else:
            db.session.commit()

    if event.source.type == "group":
        group = LineGroup.query.get(event.source.group_id)
        if not group:
            group = LineGroup(id=event.source.group_id)
            group.name = line_bot_api.get_group_summary(group.id).group_name
            db.session.add(group)
            db.session.commit()
        if user_message_lower == "/bye":
            line_bot_api.leave_group(group.id)
            return
        if (account.tic_tac_toe and account.tic_tac_toe.is_playing
            ) or user_message_lower == "/tictactoe":
            if account.tic_tac_toe_id == group.id or not account.tic_tac_toe:
                if tictactoe.play(group.id, account, user_message, reply_token,
                                  line_bot_api):
                    return
    elif event.source.type == "room":
        if user_message_lower == "/bye":
            line_bot_api.leave_room(event.source.room_id)
            return
        if (account.tic_tac_toe and account.tic_tac_toe.is_playing
            ) or user_message_lower == "/tictactoe":
            if account.tic_tac_toe_id == event.source.room_id or not account.tic_tac_toe:
                if tictactoe.play(event.source.room_id, account, user_message,
                                  reply_token, line_bot_api):
                    return
    if (account.tic_tac_toe and account.tic_tac_toe.is_playing and account.tic_tac_toe_id == account.account_id) \
            or user_message_lower == "/tictactoecomp":
        tictactoe.play(account.account_id, account, user_message, reply_token,
                       line_bot_api, True)
        return

    if account.is_add_question:
        account.is_add_question = False
        db.session.commit()
        add_answer(account.question_id, user_message)
        line_bot_api.reply_message(
            reply_token,
            TextSendMessage(get_question_str(account.question_id)))
    elif "dupan!" in user_message_lower:
        account.tweet_phase = "img ask"
        account.next_tweet_msg = util.filter_tweet(user_message)
        account.last_tweet_req = util.datetime_now_string()
        db.session.commit()
        line_bot_api.reply_message(
            reply_token,
            TextSendMessage(
                "Want to attach an image?\n\n"
                f"/yes {get_emoji_str('0x1000A5')} or /no {get_emoji_str('0x1000A6')}\n"
                "/canceltweet to cancel ❌",
                quick_reply=QuickReply(items=[
                    QuickReplyButton(action=MessageAction("YES", "/yes")),
                    QuickReplyButton(action=MessageAction("NO", "/no")),
                    QuickReplyButton(
                        action=MessageAction("CANCEL", "/canceltweet"))
                ])))
    elif user_message_lower == "snmptn":
        day, hour, minute, second = util.get_delta_time(2021, 3, 22, 15)
        countdown = f"{day} hari {hour} jam {minute} menit {second} detik lagi."
        line_bot_api.reply_message(
            reply_token,
            TemplateSendMessage(
                alt_text=f"Pengumuman SNMPTN\n"
                f"🕒 {countdown} 😲",
                template=ButtonsTemplate(
                    thumbnail_image_url=
                    'https://statik.tempo.co/data/2019/12/01/id_893849/893849_720.jpg',
                    title='Pengumuman SNMPTN',
                    text=f"{countdown}.",
                    actions=[
                        URIAction(label='Live Countdown',
                                  uri='https://snmptn.arsaizdihar.com/')
                    ])))
    elif user_message_lower == "sbmptn":
        day, hour, minute, second = util.get_delta_time(2021, 6, 14)
        line_bot_api.reply_message(
            reply_token,
            TextSendMessage(
                text=f"PENGUMUMAN SBMPTN\n"
                f"{get_emoji_str('0x100071')}"
                f"{day} hari {hour} jam "
                f"{minute} menit {second} detik lagi {get_emoji_str('0x100032')}"
            ))
    elif user_message_lower == "ppkb":
        day, hour, minute, second = util.get_delta_time(2021, 3, 26, 13)
        line_bot_api.reply_message(
            reply_token,
            TextSendMessage(
                text=f"PENGUMUMAN PPKB\n"
                f"{get_emoji_str('0x100071')}"
                f"{day} hari {hour} jam "
                f"{minute} menit {second} detik lagi {get_emoji_str('0x100032')}"
            ))
    elif user_message_lower == "/testtweet":
        test = test_tweet()
        if test:
            line_bot_api.reply_message(reply_token, TextSendMessage("success"))
        else:
            line_bot_api.reply_message(reply_token, TextSendMessage("fail"))
    elif re.match("/youtube +[^ ]", user_message_lower):
        query = re.sub("/youtube +([^ ])",
                       r"\1",
                       user_message,
                       flags=re.IGNORECASE)
        title, url = get_youtube_url(query)
        line_bot_api.reply_message(reply_token,
                                   TextSendMessage(text=f"{title}\n{url}"))

    elif user_message_lower == "/meme":
        response = requests.get('https://meme-api.herokuapp.com/gimme')
        url = response.json()['url']
        line_bot_api.reply_message(
            reply_token,
            ImageSendMessage(original_content_url=url, preview_image_url=url))
    elif user_message_lower.startswith("/number"):
        if user_message_lower == "/number":
            message = "Keywords: \n" \
                      "- /number (number)\n" \
                      "- /number/random"
        else:
            res_type = random.choice(('math', 'trivia'))
            req = user_message_lower[7:]
            if req == "/random":
                response = requests.get('http://numbersapi.com/random/' +
                                        res_type)
                message = response.text
            else:
                try:
                    req = int(req)
                except ValueError:
                    message = "Invalid request"
                else:
                    response = requests.get('http://numbersapi.com/' +
                                            str(req) + "/" + res_type)
                    message = response.text
        line_bot_api.reply_message(reply_token, TextSendMessage(text=message))

    elif user_message_lower == "/cat":
        response = requests.get("https://api.thecatapi.com/v1/images/search")
        data = response.json()
        url = data[0]['url']
        line_bot_api.reply_message(reply_token, ImageSendMessage(url, url))
    elif user_message_lower == "/tweet28fess":
        account.tweet_phase = "from"
        account.next_tweet_msg = "from: "
        account.last_tweet_req = util.datetime_now_string()
        db.session.commit()
        line_bot_api.reply_message(
            reply_token,
            TextSendMessage(
                f"from: \n\n/canceltweet to cancel ❌",
                quick_reply=QuickReply(items=[
                    QuickReplyButton(
                        action=MessageAction("CANCEL", "/canceltweet"))
                ])))
    elif user_message_lower == "/tumbal" and event.source.type == "group":
        group = LineGroup.query.get(event.source.group_id)
        if not group:
            group = LineGroup(id=event.source.group_id)
            db.session.add(group)
        group.name = line_bot_api.get_group_summary(group.id).group_name
        if group.phase == "tumbal":
            user_name = line_bot_api.get_group_member_profile(
                event.source.group_id, event.source.user_id).display_name
            if user_name not in group.data.split("\n"):
                group.data += "\n" + user_name
                group.member_ids += "\n" + event.source.user_id
        else:
            group.phase = "tumbal"
            group.data = line_bot_api.get_group_member_profile(
                event.source.group_id, event.source.user_id).display_name
            group.member_ids = event.source.user_id
        line_bot_api.reply_message(
            reply_token, TextSendMessage("Daftar Tumbal" + "\n" + group.data))
        db.session.commit()
    elif user_message_lower == "/tumbalkelar" and event.source.type == "group":
        group = LineGroup.query.get(event.source.group_id)
        if group:
            if group.phase == "tumbal" and group.data:
                member_ids = group.member_ids.split("\n")
                member = line_bot_api.get_group_member_profile(
                    event.source.group_id, random.choice(member_ids))
                if member.picture_url:
                    messages = [
                        TextSendMessage("Yang jadi tumbal: " +
                                        member.display_name),
                        ImageSendMessage(member.picture_url,
                                         member.picture_url)
                    ]
                else:
                    messages = TextSendMessage("Yang jadi tumbal: " +
                                               member.display_name),
                line_bot_api.reply_message(reply_token, messages=messages)
                group.data = ""
                group.phase = ""
                group.member_ids = ""
                db.session.commit()
    elif re.match("/google +[^ ]", user_message_lower):
        query = re.sub("/google +([^ ])",
                       r"\1",
                       user_message,
                       flags=re.IGNORECASE)
        results = search_google(query)
        message = ""
        for result in results:
            message += f"{result['title']}\n{result['description']}\n{result['link']}\n\n"
        message = message[:-2]
        line_bot_api.reply_message(reply_token, TextSendMessage(message))
    elif user_message_lower.startswith(
            "/pilih ") and ", " in user_message_lower:
        pilihan = user_message[7:].split(", ")
        line_bot_api.reply_message(reply_token,
                                   TextSendMessage(random.choice(pilihan)))
    elif user_message_lower.startswith("/kerangajaib "):
        random.seed(user_message_lower)
        random_range = random.random()
        if random_range <= 0.4:
            answer = "iya"
        elif random_range <= 0.8:
            answer = "tidak"
        elif random_range <= 0.98:
            answer = "bisa jadi"
        else:
            answer = "siapa lu nanya2"
        line_bot_api.reply_message(reply_token, TextSendMessage(answer))
        random.seed()
    elif re.match("/balik +[^ ]", user_message_lower):
        message = " ".join("".join(reversed(x)) for x in re.sub(
            "/balik +([^ ])", r"\1", user_message, flags=re.IGNORECASE).split(
                " "))
        line_bot_api.reply_message(reply_token, TextSendMessage(message))
    elif re.match("/mirror +[^ ]", user_message_lower):
        trans = str.maketrans(
            'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
            'ɐqɔpǝɟɓɥᴉſʞๅɯuodbɹsʇnʌʍxʎzⱯꓭꓛꓷƎꓞꓨHIſꓘꓶWNOꓒῸꓤSꓕꓵꓥMX⅄Z')
        message = re.sub("/mirror +([^ ])",
                         r"\1",
                         user_message,
                         flags=re.IGNORECASE).translate(trans)

        line_bot_api.reply_message(reply_token, TextSendMessage(message))
    elif user_message_lower == "/balik":
        if account.tweet_phase == "balik":
            account.tweet_phase = ""
            line_bot_api.reply_message(reply_token,
                                       TextSendMessage("Balik mode off"))
        else:
            account.tweet_phase = "balik"
            line_bot_api.reply_message(reply_token,
                                       TextSendMessage("Balik mode on"))
        db.session.commit()
    elif user_message_lower == "/mirror":
        if account.tweet_phase == "mirror":
            account.tweet_phase = ""
            line_bot_api.reply_message(reply_token,
                                       TextSendMessage("Mirror mode off"))
        else:
            account.tweet_phase = "mirror"
            line_bot_api.reply_message(reply_token,
                                       TextSendMessage("Mirror mode on"))
        db.session.commit()
    elif re.match("(/addq|/addqa|/addqs) +[^ ]", user_message_lower):
        if ((account.ipa_access or account.ips_access)
                and accessible) or account.is_superuser or account.is_adder:
            account.is_add_question = True
            groups = re.match(r"(/addq|/addqa|/addqs) +([^ ][\s\S]+)",
                              user_message,
                              flags=re.IGNORECASE)
            query = groups.group(1).lower()
            is_ipa = query == "/addqa"
            is_ips = query == "/addqs"
            if not is_ipa and not is_ips:
                is_ipa = True
                if not lagi_pelajaran_ipa.accessible:
                    is_ips = True
            question = groups.group(2)
            question_id = add_question(question, is_ipa, is_ips)
            if question_id:
                line_bot_api.reply_message(
                    reply_token,
                    TextSendMessage(
                        f"Question Added. ID: {question_id}\nAnswer: "))
                account.question_id = question_id
                db.session.commit()
            else:
                line_bot_api.reply_message(
                    reply_token,
                    TextSendMessage(
                        f"Question already exist.\n{search_question(question, is_ipa, is_ips)}"
                    ))
        else:
            line_bot_api.reply_message(reply_token,
                                       TextSendMessage("Access Denied."))

    elif re.match(r"/addans +[\d]+ +[^ ]", user_message_lower):
        if ((account.ipa_access or account.ips_access)
                and accessible) or account.is_superuser or account.is_adder:
            groups = re.match(r"/addans +([\d]+) +([^ ][\s\S]+)",
                              user_message,
                              flags=re.IGNORECASE)
            question_id = groups.group(1)
            answer = groups.group(2)
            if add_answer(question_id, answer, True):
                message = get_question_str(question_id)
            else:
                message = "ID invalid"
            line_bot_api.reply_message(reply_token, TextSendMessage(message))
        else:
            line_bot_api.reply_message(reply_token,
                                       TextSendMessage("Access Denied."))
    elif user_message_lower == "/soalganti":
        if (
            (account.ipa_access or account.ips_access) and accessible
        ) or account.is_superuser or all_access.accessible or account.is_adder:
            line_bot_api.reply_message(
                reply_token,
                TextSendMessage(
                    get_changed_questions(account.ipa_access,
                                          account.ips_access,
                                          account.is_superuser)))
        else:
            line_bot_api.reply_message(reply_token,
                                       TextSendMessage("Access Denied."))

    elif re.match("(/searchq|/sq) +[^ ]", user_message_lower):
        if (
            (account.ipa_access or account.ips_access) and accessible
        ) or account.is_superuser or all_access.accessible or account.is_adder:
            message = search_question(
                re.sub("(/searchq|/sq) +([^ ])",
                       r"\2",
                       user_message,
                       flags=re.IGNORECASE), account.ipa_access,
                account.ips_access, account.is_superuser)
            if len(message) > 5000:
                message = "Too many results."
            line_bot_api.reply_message(reply_token, TextSendMessage(message))
        else:
            line_bot_api.reply_message(reply_token,
                                       TextSendMessage("Access Denied."))

    elif re.match(r"/getq +\d+", user_message_lower):
        if (
            (account.ipa_access or account.ips_access) and accessible
        ) or account.is_superuser or all_access.accessible or account.is_adder:
            question_id = re.sub(r"/getq +(\d+)", r"\1", user_message)
            line_bot_api.reply_message(
                reply_token, TextSendMessage(get_question_str(question_id)))
        else:
            line_bot_api.reply_message(reply_token,
                                       TextSendMessage("Access Denied."))

    else:
        if account:
            phase = account.tweet_phase
            if phase and phase == "balik":
                message = " ".join("".join(reversed(x))
                                   for x in user_message.split(" "))
                line_bot_api.reply_message(reply_token,
                                           TextSendMessage(message))
            if phase == "mirror":
                trans = str.maketrans(
                    'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
                    'ɐqɔpǝɟɓɥᴉſʞๅɯuodbɹsʇnʌʍxʎzⱯꓭꓛꓷƎꓞꓨHIſꓘꓶWNOꓒῸꓤSꓕꓵꓥMX⅄Z')
                message = user_message.translate(trans)
                line_bot_api.reply_message(reply_token,
                                           TextSendMessage(message))
            elif phase:
                if user_message_lower == "/canceltweet":
                    util.clear_account_tweet_data(account)
                    line_bot_api.reply_message(
                        reply_token, TextSendMessage("Tweet Cancelled"))
                else:
                    if util.check_timeout(account.last_tweet_req, 300):
                        now = util.datetime_now_string()
                        account.last_tweet_req = now
                        if phase == "from":
                            account.tweet_phase = "to"
                            account.next_tweet_msg += user_message + "\nto: "
                            line_bot_api.reply_message(
                                reply_token,
                                TextSendMessage(
                                    f"to: \n\n/canceltweet to cancel ❌",
                                    quick_reply=QuickReply(items=[
                                        QuickReplyButton(action=MessageAction(
                                            "CANCEL", "/canceltweet"))
                                    ])))
                        if phase == "to":
                            account.tweet_phase = "text"
                            account.next_tweet_msg += user_message + "\n"
                            line_bot_api.reply_message(
                                reply_token,
                                TextSendMessage(
                                    f"message: \n\n/canceltweet to cancel ❌",
                                    quick_reply=QuickReply(items=[
                                        QuickReplyButton(action=MessageAction(
                                            "CANCEL", "/canceltweet"))
                                    ])))
                        if phase == "text":
                            msg = util.filter_tweet(account.next_tweet_msg +
                                                    user_message)
                            account.tweet_phase = "img ask"
                            account.next_tweet_msg = msg
                            line_bot_api.reply_message(
                                reply_token,
                                TextSendMessage(
                                    "Want to attach an image?\n\n"
                                    f"/yes {get_emoji_str('0x1000A5')} or /no {get_emoji_str('0x1000A6')}\n"
                                    "/canceltweet to cancel ❌",
                                    quick_reply=QuickReply(items=[
                                        QuickReplyButton(action=MessageAction(
                                            "YES", "/yes")),
                                        QuickReplyButton(
                                            action=MessageAction("NO", "/no")),
                                        QuickReplyButton(action=MessageAction(
                                            "CANCEL", "/canceltweet"))
                                    ])))
                        if phase == "img ask":
                            if user_message_lower == "/yes":
                                account.img_soon = True
                                account.tweet_phase = "img"
                                line_bot_api.reply_message(
                                    reply_token,
                                    TextSendMessage(
                                        "Send an image within 5 min.\n\n"
                                        f"/canceltweet to cancel ❌",
                                        quick_reply=QuickReply(items=[
                                            QuickReplyButton(
                                                action=MessageAction(
                                                    "CANCEL", "/canceltweet"))
                                        ])))
                            elif user_message_lower == "/no":
                                account.tweet_phase = "confirm"
                                line_bot_api.reply_message(
                                    reply_token,
                                    TextSendMessage(
                                        "❗❗CONFIRMATION❗❗\n\n"
                                        f"{account.next_tweet_msg}\n\n"
                                        f"/send to tweet ✉️\n"
                                        f"/canceltweet to cancel ❌",
                                        quick_reply=QuickReply(items=[
                                            QuickReplyButton(
                                                action=MessageAction(
                                                    "SEND", "/send")),
                                            QuickReplyButton(
                                                action=MessageAction(
                                                    "CANCEL", "/canceltweet"))
                                        ])))
                        if phase.startswith(
                                "confirm") and user_message_lower == "/send":
                            if account.img_soon:
                                msg_media_id = phase.split(" ")[-1]
                                pic = line_bot_api.get_message_content(
                                    msg_media_id)
                                file = io.BytesIO(pic.content)
                                url = tweet(account.next_tweet_msg,
                                            file,
                                            account=account)
                                file.close()
                            else:
                                url = tweet(account.next_tweet_msg,
                                            account=account)
                            util.clear_account_tweet_data(account)
                            if url.startswith("https"):
                                account.last_tweet = now
                                message = f"Tweet Posted.\nurl: {url}"
                            else:
                                message = url
                            line_bot_api.reply_message(
                                reply_token, TextSendMessage(message))
                    else:
                        util.clear_account_tweet_data(account)
                db.session.commit()

    if account.account_id == MY_LINE_ID:
        if user_message_lower.startswith("/getid "):
            search_name = user_message[7:]
            accounts = LineAccount.query.filter(
                LineAccount.name.ilike(f"%{search_name}%"))
            if accounts:
                msg_ids = '\n'.join(
                    [search_account.account_id for search_account in accounts])
                line_bot_api.reply_message(reply_token,
                                           TextSendMessage(f"ID:\n{msg_ids}"))
            else:
                line_bot_api.reply_message(
                    reply_token, TextSendMessage("No account found."))
        elif user_message_lower.startswith("/addacca "):
            requested_account = LineAccount.query.get(user_message[9:])
            requested_account.ipa_access = True
            db.session.commit()
            line_bot_api.reply_message(
                reply_token,
                TextSendMessage(
                    f"{requested_account.name} added to MIPA access"))

        elif user_message_lower.startswith("/addaccs "):
            requested_account = LineAccount.query.get(user_message[9:])
            requested_account.ips_access = True
            db.session.commit()
            line_bot_api.reply_message(
                reply_token,
                TextSendMessage(
                    f"{requested_account.name} added to IPS access"))

        elif user_message_lower.startswith("/removeacca "):
            requested_account = LineAccount.query.get(user_message[12:])
            requested_account.ipa_access = False
            db.session.commit()
            line_bot_api.reply_message(
                reply_token,
                TextSendMessage(
                    f"{requested_account.name} removed from MIPA access"))

        elif user_message_lower.startswith("/removeaccs "):
            requested_account = LineAccount.query.get(user_message[12:])
            requested_account.ips_access = False
            db.session.commit()
            line_bot_api.reply_message(
                reply_token,
                TextSendMessage(
                    f"{requested_account.name} removed from IPS access"))

        elif user_message_lower.startswith("/delq "):
            question_id = user_message_lower[6:]
            if question_id.isnumeric():
                line_bot_api.reply_message(
                    reply_token, TextSendMessage(delete_question(question_id)))

        elif user_message_lower == "/delqall":
            delete_all()
            line_bot_api.reply_message(reply_token,
                                       TextSendMessage("All Question deleted"))

        elif user_message_lower == "/allacc":
            all_accounts = LineAccount.query.filter(
                or_(LineAccount.ipa_access, LineAccount.ips_access)).all()
            line_bot_api.reply_message(
                reply_token,
                TextSendMessage("\n".join([acc.name for acc in all_accounts])))

        elif user_message_lower == "/allacca":
            all_accounts = LineAccount.query.filter(
                LineAccount.ipa_access).all()
            line_bot_api.reply_message(
                reply_token,
                TextSendMessage("\n".join([acc.name for acc in all_accounts])))

        elif user_message_lower == "/allaccs":
            all_accounts = LineAccount.query.filter(
                LineAccount.ips_access).all()
            line_bot_api.reply_message(
                reply_token,
                TextSendMessage("\n".join([acc.name for acc in all_accounts])))

        elif user_message_lower == "/qaccess":
            access.accessible = not access.accessible
            message = "All access enabled" if access.accessible else "All access disabled"
            db.session.commit()
            line_bot_api.reply_message(reply_token, TextSendMessage(message))

        elif user_message_lower == "/qallaccess":
            all_access.accessible = not all_access.accessible
            message = "All access for everyone enabled" if all_access.accessible else "All access for everyone disabled"
            db.session.commit()
            line_bot_api.reply_message(reply_token, TextSendMessage(message))
        elif user_message_lower == "/ipamode":
            lagi_pelajaran_ipa.accessible = not lagi_pelajaran_ipa.accessible
            message = "MIPA enabled" if lagi_pelajaran_ipa.accessible else "MIPA disabled"
            db.session.commit()
            line_bot_api.reply_message(reply_token, TextSendMessage(message))
        elif user_message_lower == "/joingroup":
            group_access = Access.query.get(4)
            group_access.accessible = not group_access.accessible
            db.session.commit()
            message = "Join group enabled" if group_access.accessible else "Join group disabled"
            line_bot_api.reply_message(reply_token, TextSendMessage(message))
def selectedQuestion(event, index, uuid, line_bot_api):
    text = ""
    buttons_template = ""
    #從1開始才是第1題的答案
    if index != 0:
        f = open(path + "/" + uuid + ".txt", 'a')
        #把答案寫進檔案裡
        f.write(event.message.text + "\n")

    if index == 0:
        text = "您的姓名:"

    elif index == 1:
        buttons_template = TemplateSendMessage(
            alt_text="Buttons Template",
            template=ButtonsTemplate(title=" ",
                                     text=str(index + 1) + ". 您的性別:",
                                     actions=[
                                         MessageTemplateAction(label="男",
                                                               text="男"),
                                         MessageTemplateAction(label="女",
                                                               text="女")
                                     ]))

    elif index == 2:
        buttons_template = TemplateSendMessage(
            alt_text="Buttons Template",
            template=ButtonsTemplate(title=" ",
                                     text=str(index + 1) + ". 您是否期望有固定座位:",
                                     actions=[
                                         MessageTemplateAction(label="是,每個人都有",
                                                               text="是,每個人都有"),
                                         MessageTemplateAction(
                                             label="是,但不用每個人都有",
                                             text="是,但不用每個人都有"),
                                         MessageTemplateAction(label="否",
                                                               text="否")
                                     ]))

    elif index == 3:
        buttons_template = TemplateSendMessage(
            alt_text="Buttons Template",
            template=ButtonsTemplate(title=" ",
                                     text=str(index + 1) + ". 您所期望實驗室的人數:",
                                     actions=[
                                         MessageTemplateAction(label="1~5人",
                                                               text="1~5人"),
                                         MessageTemplateAction(label="6~10人",
                                                               text="6~10人"),
                                         MessageTemplateAction(label="11~15人",
                                                               text="11~15人"),
                                         MessageTemplateAction(
                                             label="16人以上",
                                             text="16人以上",
                                         )
                                     ]))

    elif index == 4:
        buttons_template = TemplateSendMessage(
            alt_text="Buttons Template",
            template=ButtonsTemplate(title=" ",
                                     text=str(index + 1) + ". 您預計待在實驗室的時間:",
                                     actions=[
                                         MessageTemplateAction(label="1~3天",
                                                               text="1~3天"),
                                         MessageTemplateAction(label="4~6天",
                                                               text="4~6天"),
                                         MessageTemplateAction(label="每天",
                                                               text="每天")
                                     ]))

    elif index == 5:
        buttons_template = TemplateSendMessage(
            alt_text="Buttons Template",
            template=ButtonsTemplate(title=" ",
                                     text=str(index + 1) + ". 您期望與指導教授開會的頻率:",
                                     actions=[
                                         MessageTemplateAction(label="每週一次",
                                                               text="每週一次"),
                                         MessageTemplateAction(label="兩週一次",
                                                               text="兩週一次"),
                                         MessageTemplateAction(label="無固定",
                                                               text="無固定"),
                                         MessageTemplateAction(
                                             label="其他",
                                             text="其他",
                                         )
                                     ]))
        line_bot_api.reply_message(event.reply_token, buttons_template)
        return "continue"

    elif index == 6:
        buttons_template = TemplateSendMessage(
            alt_text="Carousel template",
            template=CarouselTemplate(columns=[
                CarouselColumn(title=str(index + 1) + ". 您預計的論文時程:",
                               text=" ",
                               actions=[
                                   MessageTemplateAction(label="碩一上開始,碩一下結束",
                                                         text="碩一上開始,碩一下結束"),
                                   MessageTemplateAction(label="碩一上開始,碩二上結束",
                                                         text="碩一上開始,碩二上結束"),
                                   MessageTemplateAction(label="碩一上開始,碩二下結束",
                                                         text="碩一上開始,碩二下結束")
                               ]),
                CarouselColumn(title=str(index + 1) + ". 您預計的論文時程:",
                               text=" ",
                               actions=[
                                   MessageTemplateAction(label="碩一下開始,碩二上結束",
                                                         text="碩一下開始,碩二上結束"),
                                   MessageTemplateAction(label="碩一下開始,碩二下結束",
                                                         text="碩一下開始,碩二下結束"),
                                   MessageTemplateAction(label="碩二上開始,碩二下結束",
                                                         text="碩二上開始,碩二下結束")
                               ])
            ]))

    elif index == 7:
        text = "您擁有哪些專長/專業:"

    elif index == 8:
        text = "您有哪些興趣/嗜好:"

    elif index == 9:
        text = "您的人格特質/個性:"

    elif index == 10:
        text = "您預計的論文領域及研究方向:"

    elif index == 11:
        text = "您所期望指導教授的領導風格:"

    elif index == 12:
        text = "您所期望實驗室的氣氛/氛圍:"

    elif index == 13:
        text = "您期望實驗室有哪些聚餐或活動(例如:桌遊、期末聚餐等):"

    elif index == 14:
        text = "您參與過的專題、計劃或競賽領域:"

    elif index == 15:
        text = "您曾經或現在工作、實習或打工的產業及領域有哪些:"

    elif index == 16:
        text = "在就讀研究所這段期間,有哪些其他規劃(例如:交換、雙聯、實習、提畢、延畢等):"

    elif index == 17:
        text = "您所期望畢業後的工作產業及領域:"

    elif index == 18:
        text = "您期望能在實驗室中學習到哪些事物:"

    elif index == 19:
        text = "您對自我的期望與目標:"

    elif index == 20:
        text = "我們已收到您的資料,謝謝您的耐心填答,請稍等媒合結果"
        line_bot_api.reply_message(event.reply_token, TextSendMessage(text))
        #回傳結束符號
        return "end"

    else:
        text = "您好"

    if text == "":
        line_bot_api.reply_message(event.reply_token, buttons_template)
    else:
        line_bot_api.reply_message(
            event.reply_token, TextSendMessage(str(index + 1) + ". " + text))
    return "continue"
Example #14
0
def handle_message(event):
    seg_list = jieba.cut(event.message.text)
    lineBotaAPI.reply_message(event.reply_token,
                              TextSendMessage(text=", ".join(seg_list)))
Example #15
0
def sendFlex(event):  #彈性配置
    try:
        bubble = BubbleContainer(
            direction='ltr',  #項目由左向右排列
            header=BoxComponent(  #標題
                layout='vertical',
                contents=[
                    TextComponent(text='冰火飲料', weight='bold', size='xxl'),
                ]),
            hero=ImageComponent(  #主圖片
                url='https://i.imgur.com/3sBRh08.jpg',
                size='full',
                aspect_ratio='792:555',  #長寬比例
                aspect_mode='cover',
            ),
            body=BoxComponent(  #主要內容
                layout='vertical',
                contents=[
                    TextComponent(text='評價', size='md'),
                    BoxComponent(
                        layout='baseline',  #水平排列
                        margin='md',
                        contents=[
                            IconComponent(
                                size='lg',
                                url='https://i.imgur.com/GsWCrIx.png'),
                            TextComponent(text='25   ',
                                          size='sm',
                                          color='#999999',
                                          flex=0),
                            IconComponent(
                                size='lg',
                                url='https://i.imgur.com/sJPhtB3.png'),
                            TextComponent(text='14',
                                          size='sm',
                                          color='#999999',
                                          flex=0),
                        ]),
                    BoxComponent(
                        layout='vertical',
                        margin='lg',
                        contents=[
                            BoxComponent(
                                layout='baseline',
                                contents=[
                                    TextComponent(text='營業地址:',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=2),
                                    TextComponent(text='台北市信義路14號',
                                                  color='#666666',
                                                  size='sm',
                                                  flex=5)
                                ],
                            ),
                            SeparatorComponent(color='#0000FF'),
                            BoxComponent(
                                layout='baseline',
                                contents=[
                                    TextComponent(text='營業時間:',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=2),
                                    TextComponent(text="10:00 - 23:00",
                                                  color='#666666',
                                                  size='sm',
                                                  flex=5),
                                ],
                            ),
                        ],
                    ),
                    BoxComponent(layout='horizontal',
                                 margin='xxl',
                                 contents=[
                                     ButtonComponent(
                                         style='primary',
                                         height='sm',
                                         action=URIAction(
                                             label='電話聯絡',
                                             uri='tel:0987654321'),
                                     ),
                                     ButtonComponent(
                                         style='secondary',
                                         height='sm',
                                         action=URIAction(
                                             label='查看網頁',
                                             uri="http://www.e-happy.com.tw"))
                                 ])
                ],
            ),
            footer=BoxComponent(  #底部版權宣告
                layout='vertical',
                contents=[
                    TextComponent(text='Copyright@ehappy studio 2019',
                                  color='#888888',
                                  size='sm',
                                  align='center'),
                ]),
        )
        message = FlexSendMessage(alt_text="彈性配置範例", contents=bubble)
        line_bot_api.reply_message(event.reply_token, message)
    except:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text='發生錯誤!'))
Example #16
0
def single_push(id, msg):


#新聞類別

    line_bot_api.push_message(id, TextSendMessage(text=msg))
Example #17
0
def handle_follow(event):
    line_bot_api.reply_message(
        event.reply_token, TextSendMessage(text='Got follow event'))
    def splitname(self, line):
        line_bot_api = self.line_bot_api
        event = self.event
        events = self.events
        user = self.user
        print(user)
        eventText = event.message.text
        trigger = "Mc3 inputchamp "
        s = eventText[eventText.find(trigger) + len(trigger):]
        # 4-nebula-4 30
        pieces = s.split()  # ['4-nebula-4', '30']
        champ = pieces[0]
        sig = pieces[1]
        profile = line_bot_api.get_profile(user)
        name = (profile.display_name)
        print(name)
        print(champ)
        print(sig)
        champ_prestige = get_prestige_for_champion(champ, sig)
        if champ_prestige is None:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(
                    text=
                    "Oops! You've entered an invalid champion or signature level."
                ))
            # this breaks out of our branch without exiting the bot script

        cur = None
        try:
            print(champ_prestige)
            cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)

            # get the user's information if it exists
            cur.execute(
                """SELECT lineid, summoner_name, champ_data FROM prestige_data WHERE lineid = %(lineid)s""",
                {"lineid": user})
            rows = cur.fetchall()
            print(rows)

            # The user exists in the database and a result was returned
            for row in rows:
                lineid = row['lineid']
                summoner_name = row['summoner_name']
                champs = json.loads(
                    row['champ_data'])  # contains a list of the user's champs
                break  # we should only have one result, but we'll stop just in case
            # The user does not exist in the database already
            else:
                lineid = user
                summoner_name = name
                champ_data = json.loads(
                    '{}')  # start with an empty list of champs
                champs = {}  # creates an empty Python list
        except BaseException:
            if cur is not None:
                cur.rollback()
                cur.close()

        finally:
            if cur is not None:
                cur.close()

        # either way, let's move on

        # this will make sure that the Summoner's name is always updated if their Line profile has changed
        summoner_name = name

        # add or update the user's champ
        champs[champ] = champ_prestige

        # put everything together and send it back to the database
        champ_data = json.dumps(champs)

        # Checks for an existing line ID and updates if it exists or adds if it doesn't
        cur = None
        try:
            cur = conn.cursor()
            cur.execute(
                """INSERT INTO prestige_data(lineid, summoner_name, champ_data)
                            VALUES(%(lineid)s, %(summoner_name)s, %(champ_data)s)
                            ON CONFLICT (lineid)
                            DO UPDATE SET summoner_name = Excluded.summoner_name, champ_data = Excluded.champ_data;""",
                {
                    "lineid": lineid,
                    "summoner_name": summoner_name,
                    "champ_data": champ_data
                })
            conn.commit()
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text=champ + " (" + champ_prestige +
                                ") added"))
        except psycopg2.Error:
            conn.rollback()
            print("PostgreSQL Error: " + e.diag.message_primary)
            pass
        finally:
            if cur is not None:
                cur.close()
Example #19
0
def handle_postback(event):
    if event.postback.data == 'ping':
        line_bot_api.reply_message(
            event.reply_token, TextSendMessage(text='pong'))
Example #20
0
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,
                TextSendMessage(
                    text="Bot can't use profile API without user ID"))
    elif text == 'bye':
        if isinstance(event.source, SourceGroup):
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='Leaving group'))
            line_bot_api.leave_group(event.source.group_id)
        elif isinstance(event.source, SourceRoom):
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='Leaving group'))
            line_bot_api.leave_room(event.source.room_id)
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text="Bot can't leave from 1:1 chat"))
    elif text == 'confirm':
        confirm_template = ConfirmTemplate(text='Do it?',
                                           actions=[
                                               MessageAction(label='Yes',
                                                             text='Yes!'),
                                               MessageAction(label='No',
                                                             text='No!'),
                                           ])
        template_message = TemplateSendMessage(alt_text='Confirm alt text',
                                               template=confirm_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'buttons':
        buttons_template = ButtonsTemplate(
            title='My buttons sample',
            text='Hello, my buttons',
            actions=[
                URIAction(label='Go to line.me', uri='https://line.me'),
                PostbackAction(label='ping', data='ping'),
                PostbackAction(label='ping with text',
                               data='ping',
                               text='ping'),
                MessageAction(label='Translate Rice', text='米')
            ])
        template_message = TemplateSendMessage(alt_text='Buttons alt text',
                                               template=buttons_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'carousel':
        carousel_template = CarouselTemplate(columns=[
            CarouselColumn(text='hoge1',
                           title='fuga1',
                           actions=[
                               URIAction(label='Go to line.me',
                                         uri='https://line.me'),
                               PostbackAction(label='ping', data='ping')
                           ]),
            CarouselColumn(text='hoge2',
                           title='fuga2',
                           actions=[
                               PostbackAction(label='ping with text',
                                              data='ping',
                                              text='ping'),
                               MessageAction(label='Translate Rice', text='米')
                           ]),
        ])
        template_message = TemplateSendMessage(alt_text='Carousel alt text',
                                               template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'image_carousel':
        image_carousel_template = ImageCarouselTemplate(columns=[
            ImageCarouselColumn(
                image_url='https://via.placeholder.com/1024x1024',
                action=DatetimePickerAction(label='datetime',
                                            data='datetime_postback',
                                            mode='datetime')),
            ImageCarouselColumn(
                image_url='https://via.placeholder.com/1024x1024',
                action=DatetimePickerAction(
                    label='date', data='date_postback', mode='date'))
        ])
        template_message = TemplateSendMessage(
            alt_text='ImageCarousel alt text',
            template=image_carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'imagemap':
        pass
    elif text == 'flex':
        bubble = BubbleContainer(
            direction='ltr',
            hero=ImageComponent(url='https://example.com/cafe.jpg',
                                size='full',
                                aspect_ratio='20:13',
                                aspect_mode='cover',
                                action=URIAction(uri='http://example.com',
                                                 label='label')),
            body=BoxComponent(
                layout='vertical',
                contents=[
                    # title
                    TextComponent(text='Brown Cafe', weight='bold', size='xl'),
                    # review
                    BoxComponent(
                        layout='baseline',
                        margin='md',
                        contents=[
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/grey_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/grey_star.png'),
                            TextComponent(text='4.0',
                                          size='sm',
                                          color='#999999',
                                          margin='md',
                                          flex=0)
                        ]),
                    # info
                    BoxComponent(
                        layout='vertical',
                        margin='lg',
                        spacing='sm',
                        contents=[
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='Place',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(text='Shinjuku, Tokyo',
                                                  wrap=True,
                                                  color='#666666',
                                                  size='sm',
                                                  flex=5)
                                ],
                            ),
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='Time',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(
                                        text="10:00 - 23:00",
                                        wrap=True,
                                        color='#666666',
                                        size='sm',
                                        flex=5,
                                    ),
                                ],
                            ),
                        ],
                    )
                ],
            ),
            footer=BoxComponent(
                layout='vertical',
                spacing='sm',
                contents=[
                    # callAction, separator, websiteAction
                    SpacerComponent(size='sm'),
                    # callAction
                    ButtonComponent(
                        style='link',
                        height='sm',
                        action=URIAction(label='CALL', uri='tel:000000'),
                    ),
                    # separator
                    SeparatorComponent(),
                    # websiteAction
                    ButtonComponent(style='link',
                                    height='sm',
                                    action=URIAction(
                                        label='WEBSITE',
                                        uri="https://example.com"))
                ]),
        )
        message = FlexSendMessage(alt_text="hello", contents=bubble)
        line_bot_api.reply_message(event.reply_token, message)
    elif text == 'quick_reply':
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='Quick reply',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(
                        action=PostbackAction(label="label1", data="data1")),
                    QuickReplyButton(
                        action=MessageAction(label="label2", text="text2")),
                    QuickReplyButton(action=DatetimePickerAction(
                        label="label3", data="data3", mode="date")),
                    QuickReplyButton(action=CameraAction(label="label4")),
                    QuickReplyButton(action=CameraRollAction(label="label5")),
                    QuickReplyButton(action=LocationAction(label="label6")),
                ])))
    else:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=event.message.text))
Example #21
0
def handle_text_message(event):
    text = event.message.text

    if text == 'profile':
        if isinstance(event.source, SourceUser):
            profile = line_bot_api.get_profile(event.source.user_id)
            line_bot_api.reply_message(
                event.reply_token, [
                    TextSendMessage(
                        text='Display name: ' + profile.display_name
                    ),
                    TextSendMessage(
                        text='Status message: ' + profile.status_message
                    )
                ]
            )
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextMessage(text="Bot can't use profile API without user ID"))
    elif text == 'bye':
        if isinstance(event.source, SourceGroup):
            line_bot_api.reply_message(
                event.reply_token, TextMessage(text='Leaving group'))
            line_bot_api.leave_group(event.source.group_id)
        elif isinstance(event.source, SourceRoom):
            line_bot_api.reply_message(
                event.reply_token, TextMessage(text='Leaving group'))
            line_bot_api.leave_room(event.source.room_id)
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextMessage(text="Bot can't leave from 1:1 chat"))
    elif text == 'confirm':
        confirm_template = ConfirmTemplate(text='Do it?', actions=[
            MessageTemplateAction(label='Yes', text='Yes!'),
            MessageTemplateAction(label='No', text='No!'),
        ])
        template_message = TemplateSendMessage(
            alt_text='Confirm alt text', template=confirm_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'buttons':
        buttons_template = ButtonsTemplate(
            title='My buttons sample', text='Hello, my buttons', actions=[
                URITemplateAction(
                    label='Go to line.me', uri='https://line.me'),
                PostbackTemplateAction(label='ping', data='ping'),
                PostbackTemplateAction(
                    label='ping with text', data='ping',
                    text='ping'),
                MessageTemplateAction(label='Translate Rice', text='米')
            ])
        template_message = TemplateSendMessage(
            alt_text='Buttons alt text', template=buttons_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'carousel':
        carousel_template = CarouselTemplate(columns=[
            CarouselColumn(text='hoge1', title='fuga1', actions=[
                URITemplateAction(
                    label='Go to line.me', uri='https://line.me'),
                PostbackTemplateAction(label='ping', data='ping')
            ]),
            CarouselColumn(text='hoge2', title='fuga2', actions=[
                PostbackTemplateAction(
                    label='ping with text', data='ping',
                    text='ping'),
                MessageTemplateAction(label='Translate Rice', text='米')
            ]),
        ])
        template_message = TemplateSendMessage(
            alt_text='Buttons alt text', template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'imagemap':
        pass
    else:
        line_bot_api.reply_message(
            event.reply_token, TextSendMessage(text=event.message.text))
Example #22
0
def handle_beacon(event):
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(
            text='Got beacon event. hwid={}, device_message(hex string)={}'.
            format(event.beacon.hwid, event.beacon.dm)))
Example #23
0
def process_text_message(event):
    user_id = event.source.user_id
    # 讀取本地檔案,並轉譯成消息
    result_message_array = []
    if event.message.text == "#切換新聞台":
        # 切換新聞台
        quickReplyList = QuickReply(
            items=create_QuickReplyButton(['TVBS新聞', 'Yahoo新聞', '蘋果日報']))
        quickReplyTextSendMessage = TextSendMessage(text='請選擇新聞台',
                                                    quick_reply=quickReplyList)
        # 發送
        line_bot_api.reply_message(event.reply_token,
                                   quickReplyTextSendMessage)

    elif event.message.text == "#新聞頭條":
        user_profile = vars(line_bot_api.get_profile(user_id))
        select_news = pg.select_table(
            "select select_news from user_info where user_id='" + user_id +
            "';")[0][0]
        flexCarouselContainerJsonDict = create_news_message(select_news, "首頁")
        if flexCarouselContainerJsonDict != "":
            carouselContent = CarouselContainer.new_from_json_dict(
                json.loads(flexCarouselContainerJsonDict))
            flexCarouselSendMeesage = FlexSendMessage(alt_text="新聞頭條",
                                                      contents=carouselContent)
            # 發送
            line_bot_api.reply_message(event.reply_token,
                                       flexCarouselSendMeesage)
    elif event.message.text == "#新聞類別":
        user_profile = vars(line_bot_api.get_profile(user_id))
        select_news = pg.select_table(
            "select select_news from user_info where user_id='" + user_id +
            "';")[0][0]
        if select_news == "TVBS新聞":
            # 切換類別
            quickReplyList = QuickReply(
                items=create_QuickReplyButton(['焦點', '地方社會', '娛樂']))
            quickReplyTextSendMessage = TextSendMessage(
                text='請選擇類別', quick_reply=quickReplyList)
            # 發送
            line_bot_api.reply_message(event.reply_token,
                                       quickReplyTextSendMessage)
        elif select_news == "Yahoo新聞":
            # 切換類別
            quickReplyList = QuickReply(
                items=create_QuickReplyButton(['選舉', '財金', '娛樂', '運動']))
            quickReplyTextSendMessage = TextSendMessage(
                text='請選擇類別', quick_reply=quickReplyList)
            # 發送
            line_bot_api.reply_message(event.reply_token,
                                       quickReplyTextSendMessage)
        elif select_news == "蘋果日報":
            # 切換類別
            quickReplyList = QuickReply(
                items=create_QuickReplyButton(['焦點', '政治', '娛樂', '生活']))
            quickReplyTextSendMessage = TextSendMessage(
                text='請選擇類別', quick_reply=quickReplyList)
            # 發送
            line_bot_api.reply_message(event.reply_token,
                                       quickReplyTextSendMessage)
    elif event.message.text == "#隨機新聞":
        user_profile = vars(line_bot_api.get_profile(user_id))
        select_news = pg.select_table(
            "select select_news from user_info where user_id='" + user_id +
            "';")[0][0]
        if select_news == "TVBS新聞":
            class_array = ['首頁', '焦點', '地方社會', '娛樂']
            select_class = class_array[random.randint(0, len(class_array) - 1)]
            flexCarouselContainerJsonDict = create_news_message(
                select_news, select_class)
            if flexCarouselContainerJsonDict != "":
                carouselContent = CarouselContainer.new_from_json_dict(
                    json.loads(flexCarouselContainerJsonDict))
                flexCarouselSendMeesage = FlexSendMessage(
                    alt_text="隨機新聞", contents=carouselContent)
                # 發送
                line_bot_api.reply_message(event.reply_token,
                                           flexCarouselSendMeesage)
        elif select_news == "Yahoo新聞":
            class_array = ['首頁', '選舉', '財金', '娛樂', '運動']
            select_class = class_array[random.randint(0, len(class_array) - 1)]
            flexCarouselContainerJsonDict = create_news_message(
                select_news, select_class)
            if flexCarouselContainerJsonDict != "":
                carouselContent = CarouselContainer.new_from_json_dict(
                    json.loads(flexCarouselContainerJsonDict))
                flexCarouselSendMeesage = FlexSendMessage(
                    alt_text="Yahoo新聞", contents=carouselContent)
                # 發送
                line_bot_api.reply_message(event.reply_token,
                                           flexCarouselSendMeesage)
        elif select_news == "蘋果日報":
            class_array = ['首頁', '焦點', '政治', '娛樂', '生活']
            select_class = class_array[random.randint(0, len(class_array) - 1)]
            flexCarouselContainerJsonDict = create_news_message(
                select_news, select_class)
            if flexCarouselContainerJsonDict != "":
                carouselContent = CarouselContainer.new_from_json_dict(
                    json.loads(flexCarouselContainerJsonDict))
                flexCarouselSendMeesage = FlexSendMessage(
                    alt_text="蘋果日報", contents=carouselContent)
                # 發送
                line_bot_api.reply_message(event.reply_token,
                                           flexCarouselSendMeesage)

    elif "#" in event.message.text:
        user_profile = vars(line_bot_api.get_profile(user_id))
        select_news = pg.select_table(
            "select select_news from user_info where user_id='" + user_id +
            "';")[0][0]
        select_class = event.message.text.replace("#", "")
        flexCarouselContainerJsonDict = create_news_message(
            select_news, select_class)
        if flexCarouselContainerJsonDict != "":
            carouselContent = CarouselContainer.new_from_json_dict(
                json.loads(flexCarouselContainerJsonDict))
            flexCarouselSendMeesage = FlexSendMessage(alt_text="#",
                                                      contents=carouselContent)
            # 發送
            line_bot_api.reply_message(event.reply_token,
                                       flexCarouselSendMeesage)
Example #24
0
"""
line_bot_api = LineBotApi(settings.CHANNEL_ACCESS_TOKEN)
parser  = WebhookParser(settings.LINE_CHANNEL_SECRET)

"""
app = Flask(__name__)

# 必須放上自己的Channel Access Token
line_bot_api = LineBotApi(
    'W3cJZwxPee8Xg74vRZ0KvQ7Sy0sjPpzlCnuhE59pXLUJrBUghurpxP7K9uqEK/cXYZyIgD6B8J926PB2Bfc73pT1tscfORX8koAxTWJZesgAF9LdzgKrlRnURH2m32Mm96s81v//uGWYdEE7cfZ2uwdB04t89/1O/w1cDnyilFU='
)
# 必須放上自己的Channel Secret
handler = WebhookHandler('02e59494ae3f01a49a87f538ff81ffb0')

line_bot_api.push_message('U7638b973e5e09749f86ecf44256f64d4',
                          TextSendMessage(text='你可以開始了'))


@csrf_exempt
@require_POST
def callback(request):
    signature = request.META['HTTP_X_Line_Signature']
    body = request.body.decode('utf-8')

    try:
        handler.handle(body, signature)
    except InvalidSignatureError:
        messages = (
            "Invalid signature. Please check your channel access token/channel secret."
        )
        HttpResponseForbidden()
Example #25
0
def handle_join(event):
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text="Terima kasih telah mengundang saya ke dalan group\nKetik !help untuk melihat event, team formation, dan fitur lainnya")) 
Example #26
0
def handl_message(event: MessageEvent):
    line_bot_api.reply_message(
        reply_token=event.reply_token,
        messages=TextSendMessage(text=event.message.text),
    )
Example #27
0
def handle_message(event):
    line_bot_api.reply_message(event.reply_token,
                               TextSendMessage(text=event.message.text))
Example #28
0
def handle_message(event):
  # get user_id from event
  uId = event.source.user_id
  profile = line_bot_api.get_profile(uId)
  name = profile.display_name

  # query player with uId
  query = Player.select().where(Player.lineId == uId)
  # if player is new
  if not( query.exists() ):
    # save Player
    player = Player(lineId = uId, displayName = name)
    player.save()
    print( "player saved!" )
  else:
    player = query.get()

  # store user's text
  text = event.message.text
  print( text )

  # play janken
  if text == u'ぐー':
      playerHand = ROCK
      reply_text = playJanken(playerHand)
      # reply
      line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=reply_text)
      )
  elif text == u'ちょき':
      playerHand = SCISSORS
      reply_text = playJanken(playerHand)
      # reply
      line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=reply_text)
      )
  elif text == u'ぱー':
      playerHand = PAPER
      reply_text = playJanken(playerHand)
      # reply
      line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=reply_text)
      )
  else:
    win = player.win
    reply_text = "win:" + str(win)
    # reply
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=reply_text)
    )

  # update player data
  if reply_text == "you win":
      win = player.win
      player.win = win + 1
      player.save()
  elif reply_text == "you lose":
      lose = player.lose
      player.lose = lose + 1
      player.save()
Example #29
0
def replyTextMessage(reply_token, message):
    line_bot_api.reply_message(reply_token, TextSendMessage(text=message))
Example #30
0
def reset_images(event):
    delete_images_on_server()
    reply_token = event.reply_token
    messages = TextSendMessage(text='写真を全て削除しました')
    app.logger.info("DEBUG:" + event.message.text)
    line_bot_api.reply_message(reply_token, messages)