linebotについて質問です。
この方の動画を参考にして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 -
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14246718369
以下ご対応ください。
https://teratail.com/help#posted-otherservice
マルチポストという行為がダメだということを知りませんでした。知恵袋の投稿は削除いたします。
何をどう変えたのかこちらにはわからないのでとりあえずソースコード提示するところからですね。
(動画貼られても見るの面倒なので私は見てません)
ソースコード提示しました。よろしくお願い致します。reply_messageに格納されている「勉強時間は」の「は」の文字を消しました。
文字列消しただけで反映されてないならファイルそもそも保存されてないとか?
あと、f"勉強時間は…ってなってますけどこの"f"は意図した物ですか?
vscodeで作っていて、ファイルは常に自動保存になっているためそれはないかと思います。
fに関しましては私もよくわからないのですが、動画では「エフストリング」と言っていました。意味はあると思います。
一応確認だけはしておいてください。自動保存が機能していない可能性もなくはないので。
f文字列の事だと思うんですけど、私Pythonはメインでやってないのでそこまで詳しくないので
見当違いの指摘だったかもしれません、
ファイル名の右に白い丸が無い為、やはり保存自体はされていると思います。制作の最後の方で、herokuという、サーバーを借りられる?サービスを使ったのですが、もしかしたらherokuの方で何か保存的なことをすれば反映されるかもしれません。少しherokuについて調べてみたいと思います。
VScodeで書いてあるのはあくまでローカル上で書いてるものなので、
herokuに上げた物を動かしているなら合わせて更新してあげないとダメですね。
解決いたしました。予想通り、herokuで保存的なことをしなければ反映されないらしく、herokuをいじった結果、無事に反映されました。この保存みたいな操作のことを「デプロイ」というみたいです。一緒に解決策を考えてくださりありがとうございました。
一応自分で解決されたようなので自己解決でクローズしておいていただければ。
同様の問題に当たった人のために解決に至った方法を書いておいてくださるとナレッジとして役立ちます。
回答2件
あなたの回答
tips
プレビュー