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 + "」のお知らせをするぽん!"))
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必要な時はいつでも呼んでぽんね!" ))
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)
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)
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="新しい予定を入力するぽん"))