예제 #1
0
def handle_datetime_postback(event):
    """
    datetimeのpostbackイベントを受け取るmethod
    Args:
        event (linebot.models.events.MessageEvent): LINE Webhookイベントオブジェクト
    """
    # 送信元
    send_id = func.get_send_id(event)

    # 日付文字列をdatetimeに変換
    date = event.postback.params['datetime'].replace('T', ' ')
    remind_at = datetime.strptime(date, "%Y-%m-%d %H:%M")

    # リマインド内容を保存する
    context = func.regist_reminder(event, send_id, remind_at)

    # 登録完了メッセージを返す
    hiduke = remind_at.strftime('%Y年%m月%d日 %H時%M分')
    func.reply_message(
        event.reply_token,
        TextSendMessage("了解だぽん!\n" + hiduke + "に「" + context + "」のお知らせをするぽん!"))
예제 #2
0
def handle_follow(event):
    """
    followイベントを受け取るmethod
    Args:
        event (linebot.models.events.FollowEvent): LINE Webhookイベントオブジェクト
    """
    # 送信元
    send_id = func.get_send_id(event)

    rich_menu_id = 'richmenu-0a44bd1d889f7b4fe01e8558002429a8'
    rmm = RichMenuManager(config.ACCESS_TOKEN)

    # rich_menu_object = line_bot_api.get_rich_menu(rich_menu_id)
    # print(rich_menu_obj.rich_menu_id)
    rmm.apply(send_id, rich_menu_id)

    # フォローメッセージ送信
    func.reply_message(
        event.reply_token,
        TextSendMessage(
            text=
            "フォローありがとうだぽん!(ʃƪ ˘ ³˘) (˘ε ˘ ʃƪ)♡ \n私は「リマインダヌキ」だぽん!\n必要な時はいつでも呼んでぽんね!"
        ))
예제 #3
0
def handle_message(event):
    """
    messageイベントを受け取るmethod
    Args:
        event (linebot.models.events.MessageEvent): LINE Webhookイベントオブジェクト
    """
    # 送信元
    send_id = func.get_send_id(event)

    # redisに接続
    redis_connection = redis.StrictRedis(host=config.REDIS_URL,
                                         port=config.REDIS_PORT,
                                         db=0)
    context = ""
    if redis_connection.get(send_id):
        context = redis_connection.get(send_id).decode('utf-8')

    if event.message.text == "新しいリマインダ":
        func.reply_message(
            event.reply_token,
            TextSendMessage(
                text="リマインドして欲しい予定を入力するぽん!\n例:「お買い物」「きつねさんとランチ」「お金の振り込み」"))
    elif context != "" and event.message.text == "キャンセル":
        # redisのコンテキストを削除
        redis_connection.delete(send_id)
        func.reply_message(event.reply_token,
                           TextSendMessage(text="また何かあったら言って欲しいたぬ~"))
    elif event.message.text == "一覧を見る":
        # DBからその送信元に紐づくリマインダーを現在日時に近いものから最大5件取得する
        remind_list = func.get_remind_list(send_id)
        func.reply_message(event.reply_token, remind_list)
    else:
        # redisにコンテキストを保存
        redis_connection.set(send_id, event.message.text)
        # datepickerの作成
        date_picker = func.create_datepicker(event.message.text)
        func.reply_message(event.reply_token, date_picker)
예제 #4
0
def handle_message(event):
    """
    messageイベントを受け取るmethod
    Args:
        event (linebot.models.events.MessageEvent): LINE Webhookイベントオブジェクト
    """
    # 送信元
    send_id = func.get_send_id(event)

    # redisに接続
    redis_connection = redis.StrictRedis(host=config.REDIS_URL,
                                         port=config.REDIS_PORT,
                                         db=0)
    context = ""
    new_reminders = ["新しいリマインダ", "追加", "予定", "ついか", "よてい", "新規作成"]
    canceled_reminders = ["やめる", "もういい", "削除", "いらない", "キャンセル", "やっぱりやめる"]
    if redis_connection.get(send_id):
        context = redis_connection.get(send_id).decode('utf-8')

    if event.message.text in new_reminders:
        func.reply_message(
            event.reply_token,
            TextSendMessage(
                text="リマインドして欲しい予定を入力するぽん!\n例:「お買い物」「きつねさんとランチ」「お金の振り込み」"))
    elif context == "カレンダーID登録中":
        calendar_id = event.message.text
        if '@gmail.com' in calendar_id:
            func.update_calendar_id(send_id, calendar_id)
            redis_connection.delete(send_id)
            func.reply_message(
                event.reply_token,
                TextSendMessage(text="登録完了だぽん!\nカレンダーの設定を公開にしてくださいぽん!"))
        else:
            func.reply_message(
                event.reply_token,
                TextSendMessage(
                    text="GoogleIDじゃないぽん!!\nもう一度GoogleIDを登録してくださいたぬ!"))
    elif context != "" and event.message.text in canceled_reminders:
        # redisのコンテキストを削除
        redis_connection.delete(send_id)
        func.reply_message(event.reply_token,
                           TextSendMessage(text="また何かあったら言って欲しいたぬ~"))
    elif event.message.text == "一覧を見る":
        # DBからその送信元に紐づくリマインダーを現在日時に近いものから最大10件取得する
        remind_list = func.get_remind_list(send_id)
        func.reply_message(event.reply_token, remind_list)
    elif redis_connection.get(send_id + "_update"):
        new_context = event.message.text
        id = redis_connection.get(send_id + "_update")
        func.update_contents_reminder(new_context, id)
        #redisのidとnew_contextを削除
        redis_connection.delete(send_id + "_update")
        new_message = func.update_contents_reminder(event, new_context, id)
        func.reply_message(event.reply_token,
                           TextSendMessage(text=new_message))
    elif event.message.text == "お天気":
        #お天気の情報を取得して表示
        weather_info = weather.weather_information()
        func.reply_message(event.reply_token,
                           TextSendMessage(text=weather_info + "だぽん"))
    elif "今" in event.message.text and "時間" in event.message.text:
        random_timezone = random.choice(
            list(timezone_list.timezone_list.keys()))
        now_date = datetime.now(
            timezone(timezone_list.timezone_list[random_timezone])).strftime(
                "%H時%M分")
        func.reply_message(
            event.reply_token,
            TextSendMessage(text="僕は" + random_timezone + "に遊びに来ているぽん!今は" +
                            str(now_date) + "だぽん!"))
    elif "+" in event.message.text or "-" in event.message.text or "×" in event.message.text or "÷" in event.message.text:
        # 計算記号が含まれていた場合eval関数を使って結果を出力する
        event.message.text = event.message.text.replace("×", "*")
        event.message.text = event.message.text.replace("÷", "/")
        func.reply_message(
            event.reply_token,
            TextSendMessage(text="答えは" + str(eval(event.message.text)) +
                            "だぽん"))
    elif event.message.text == "おはよう":
        weather_info = weather.weather_information()
        func.reply_message(
            event.reply_token,
            TextSendMessage(text="おはようぽん!今日1日もキバるで!" + "\n" + weather_info +
                            "だぽん"))
    elif event.message.text == "ありがとう":
        func.reply_message(event.reply_token, TextSendMessage(text="ええでええで〜"))
    elif event.message.text == "さよなら":
        func.reply_message(event.reply_token,
                           TextSendMessage(text="おおきに!いつでも呼んだってなぽん!"))
    elif event.message.text == "リマインダヌキ":
        func.reply_message(
            event.reply_token,
            TextSendMessage(
                text=
                "僕は「リマインダヌキ」だぽん!\nリマインドして欲しいことをラインしたらお知らせするんだぽん!\nでも、僕は日本にいないだぽん!! ◟( ˘ ³˘)◞  → 詳しくは「今時間」入力"
            ))
    elif event.message.text == "カレンダー":
        redis_connection.set(send_id, "カレンダーID登録中")
        func.reply_message(event.reply_token,
                           TextSendMessage(text="GoogleIDを入力してくださいたぬ〜"))
    elif event.message.text == "今日の予定":
        cal = googlecal.getCal(send_id)
        func.reply_message(event.reply_token, cal)
    else:
        # redisにコンテキストを保存
        redis_connection.set(send_id, event.message.text)
        # datepickerの作成
        date_picker = func.create_datepicker(event.message.text)
        func.reply_message(event.reply_token, date_picker)
예제 #5
0
def handle_datetime_postback(event):
    """
    datetimeのpostbackイベントを受け取るmethod
    Args:
        event (linebot.models.events.MessageEvent): LINE Webhookイベントオブジェクト
    """
    postback_data = event.postback.data

    #カルーセルオブジェクトのdataにreminders_idが含まれていれば、dataを解析してidを入手する
    if "reminders_id" in postback_data:
        parse_pbd = urllib.parse.parse_qs(postback_data)
        #グローバル変数としてidを定義
        global id
        id = parse_pbd["reminders_id"]

    if "createdatepicker" in postback_data:
        # 送信元
        send_id = func.get_send_id(event)

        # 日付文字列をdatetimeに変換
        date = event.postback.params['datetime'].replace('T', ' ')
        remind_at = datetime.strptime(date, "%Y-%m-%d %H:%M")

        # リマインド内容を保存する
        context = func.regist_reminder(event, send_id, remind_at)

        # 登録完了メッセージを返す
        hiduke = remind_at.strftime('%Y年%m月%d日 %H時%M分')
        func.reply_message(
            event.reply_token,
            TextSendMessage("了解だぽん!\n" + hiduke + "に「" + context +
                            "」のお知らせをするぽん!"))
    elif "cancel" in postback_data:
        #「予定のキャンセル」が押された場合のポストバックアクション
        delete_text = func.cancel_reminder(id[0])
        func.reply_message(
            event.reply_token,
            TextSendMessage(text="「" + delete_text +
                            "」完璧に忘れたぽん。データベースからも消したから安心するぽん。"))
    elif "update" in postback_data and "remind_time" in postback_data:
        #「時間の変更」ボタンが押された場合のポストバックアクション
        func.update_datetimepicker(event, id)
    elif "dateupdater" in postback_data:
        #変更後の時刻が入力された場合のポストバックアクション

        #変更後のリマインド時刻を受け取る
        new_date = event.postback.params['datetime'].replace('T', ' ')
        new_remind_at = datetime.strptime(new_date, "%Y-%m-%d %H:%M")
        new_message = func.update_datetime_reminder(event, new_remind_at,
                                                    id[0])
        func.reply_message(event.reply_token,
                           TextSendMessage(text=new_message))
    elif "update" in postback_data and "contents" in postback_data:
        #「予定の変更」ボタンが押された場合のポストバックアクション
        #redisに接続
        redis_connection = redis.StrictRedis(host=config.REDIS_URL,
                                             port=config.REDIS_PORT,
                                             db=0)
        send_id = func.get_send_id(event)

        #redisにオブジェクトに紐づいているidを保存
        redis_connection.set(send_id + "_update", id[0])
        func.reply_message(event.reply_token,
                           TextSendMessage(text="新しい予定を入力するぽん"))