質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Q&A

解決済

2回答

652閲覧

linebot コードの反映

aoi68

総合スコア9

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

0グッド

0クリップ

投稿2021/07/27 04:21

編集2021/07/27 04:39

linebotについて質問です。

linebotの作り方 for youtube

この方の動画を参考にしてlinebotを作り、無事に完成したのですが、自分で改良する際に、vscodeのコードを変えても変更されませんでした。どうすれば変更した部分が反映されるのでしょうか。

python

1from flask import Flask, request, abort 2 3from linebot import ( 4 LineBotApi, WebhookHandler 5) 6from linebot.exceptions import ( 7 InvalidSignatureError 8) 9from linebot.models import ( 10 MessageEvent, TextMessage, TextSendMessage, 11) 12 13app = Flask(__name__) 14 15line_bot_api = LineBotApi('ふせさせていただきます。') 16handler = WebhookHandler('ふせさせていただきます') 17 18@app.route("/") 19def test(): 20 return "OK" 21 22@app.route("/callback", methods=['POST']) 23def callback(): 24 # get X-Line-Signature header value 25 signature = request.headers['X-Line-Signature'] 26 27 # get request body as text 28 body = request.get_data(as_text=True) 29 app.logger.info("Request body: " + body) 30 31 # handle webhook body 32 try: 33 handler.handle(body, signature) 34 except InvalidSignatureError: 35 print("Invalid signature. Please check your channel access token/channel secret.") 36 abort(400) 37 38 return 'OK' 39 40from time import time 41users = {} 42@handler.add(MessageEvent, message=TextMessage) 43def handle_message(event): 44 userId = event.source.user_id 45 if event.message.text == "勉強開始": 46 reply_message = "計測を開始しました。" 47 if not userId in users: 48 users[userId] = {} 49 users[userId]["total"] = 0 50 users[userId]["start"] = time() 51 else: 52 end = time() 53 difference = int(end - users[userId]["start"]) 54 users[userId]["total"] += difference 55 hour = difference // 3600 56 minute = (difference % 3600) // 60 57 second = difference % 60 58 reply_message = f"勉強時間は{hour}時間{minute}{second}秒です。お疲れ様でした!合計で{users[userId]['total']}秒勉強しています。" 59 60 line_bot_api.reply_message( 61 event.reply_token, 62 TextSendMessage(text=reply_message)) 63 64 65if __name__ == "__main__": 66 app.run()

requirements.txt

1certifi==2021.5.30 2charset-normalizer==2.0.3 3click==8.0.1 4Flask==2.0.1 5future==0.18.2 6gunicorn==20.1.0 7idna==3.2 8itsdangerous==2.0.1 9Jinja2==3.0.1 10line-bot-sdk==1.19.0 11MarkupSafe==2.0.1 12requests==2.26.0 13urllib3==1.26.6 14Werkzeug==2.0.1

procfile

1web: gunicorn app:app --log-file -

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aoi68

2021/07/27 04:27

マルチポストという行為がダメだということを知りませんでした。知恵袋の投稿は削除いたします。
K_3578

2021/07/27 04:32 編集

何をどう変えたのかこちらにはわからないのでとりあえずソースコード提示するところからですね。 (動画貼られても見るの面倒なので私は見てません)
aoi68

2021/07/27 04:36

ソースコード提示しました。よろしくお願い致します。reply_messageに格納されている「勉強時間は」の「は」の文字を消しました。
K_3578

2021/07/27 04:39 編集

文字列消しただけで反映されてないならファイルそもそも保存されてないとか? あと、f"勉強時間は…ってなってますけどこの"f"は意図した物ですか?
aoi68

2021/07/27 04:44

vscodeで作っていて、ファイルは常に自動保存になっているためそれはないかと思います。 fに関しましては私もよくわからないのですが、動画では「エフストリング」と言っていました。意味はあると思います。
K_3578

2021/07/27 04:50 編集

一応確認だけはしておいてください。自動保存が機能していない可能性もなくはないので。 f文字列の事だと思うんですけど、私Pythonはメインでやってないのでそこまで詳しくないので 見当違いの指摘だったかもしれません、
aoi68

2021/07/27 04:58

ファイル名の右に白い丸が無い為、やはり保存自体はされていると思います。制作の最後の方で、herokuという、サーバーを借りられる?サービスを使ったのですが、もしかしたらherokuの方で何か保存的なことをすれば反映されるかもしれません。少しherokuについて調べてみたいと思います。
K_3578

2021/07/27 05:09

VScodeで書いてあるのはあくまでローカル上で書いてるものなので、 herokuに上げた物を動かしているなら合わせて更新してあげないとダメですね。
aoi68

2021/07/27 05:10

解決いたしました。予想通り、herokuで保存的なことをしなければ反映されないらしく、herokuをいじった結果、無事に反映されました。この保存みたいな操作のことを「デプロイ」というみたいです。一緒に解決策を考えてくださりありがとうございました。
K_3578

2021/07/27 05:13

一応自分で解決されたようなので自己解決でクローズしておいていただければ。 同様の問題に当たった人のために解決に至った方法を書いておいてくださるとナレッジとして役立ちます。
guest

回答2

0

自己解決

私の場合はherokuというサーバーを借りられる?ようなサービスを使っていました。なので、vscodeでコードを変更した後、herokuで「デプロイ」と呼ばれる、保存的な作業をすれば、ちゃんと反映されます。具体的なやり方としまして、herokuの作業ページに行き、「deploy」というところを押します。下の方にある「Deploy your changes
」というところに書いてある三つの文を、ターミナルで実行してあげれば、デプロイが完了致します。これで、lineに反映されます。

投稿2021/07/27 05:31

aoi68

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

あなたは修正しているコードとは別のファイルを実行してませんか。
そこんところチェックしてみよう

投稿2021/07/27 04:26

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aoi68

2021/07/27 04:29

プログラムを書き込んでるファイルは一つだけなので、それはないかと思います。
y_waiwai

2021/07/27 04:37

なら、VSCodeで、ファイルの保存を実行してから、実行させてみては。 VSCodeでは、ファイルを修正したあとそのまま終了させたら、修正内容はファイルには反映されません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問