linebotについて質問です。
この方の動画を参考にしてlinebotを作り、無事に完成したのですが、自分で改良する際に、vscodeのコードを変えても変更されませんでした。どうすれば変更した部分が反映されるのでしょうか。
python
from flask import Flask, request, abort from linebot import ( LineBotApi, WebhookHandler ) from linebot.exceptions import ( InvalidSignatureError ) from linebot.models import ( MessageEvent, TextMessage, TextSendMessage, ) app = Flask(__name__) line_bot_api = LineBotApi('ふせさせていただきます。') handler = WebhookHandler('ふせさせていただきます') @app.route("/") def test(): return "OK" @app.route("/callback", methods=['POST']) def callback(): # get X-Line-Signature header value signature = request.headers['X-Line-Signature'] # get request body as text body = request.get_data(as_text=True) app.logger.info("Request body: " + body) # handle webhook body try: handler.handle(body, signature) except InvalidSignatureError: print("Invalid signature. Please check your channel access token/channel secret.") abort(400) return 'OK' from time import time users = {} @handler.add(MessageEvent, message=TextMessage) def handle_message(event): userId = event.source.user_id if event.message.text == "勉強開始": reply_message = "計測を開始しました。" if not userId in users: users[userId] = {} users[userId]["total"] = 0 users[userId]["start"] = time() else: end = time() difference = int(end - users[userId]["start"]) users[userId]["total"] += difference hour = difference // 3600 minute = (difference % 3600) // 60 second = difference % 60 reply_message = f"勉強時間は{hour}時間{minute}分{second}秒です。お疲れ様でした!合計で{users[userId]['total']}秒勉強しています。" line_bot_api.reply_message( event.reply_token, TextSendMessage(text=reply_message)) if __name__ == "__main__": app.run()
requirements.txt
certifi==2021.5.30 charset-normalizer==2.0.3 click==8.0.1 Flask==2.0.1 future==0.18.2 gunicorn==20.1.0 idna==3.2 itsdangerous==2.0.1 Jinja2==3.0.1 line-bot-sdk==1.19.0 MarkupSafe==2.0.1 requests==2.26.0 urllib3==1.26.6 Werkzeug==2.0.1
procfile
web: 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をいじった結果、無事に反映されました。この保存みたいな操作のことを「デプロイ」というみたいです。一緒に解決策を考えてくださりありがとうございました。
一応自分で解決されたようなので自己解決でクローズしておいていただければ。
同様の問題に当たった人のために解決に至った方法を書いておいてくださるとナレッジとして役立ちます。
まだ回答がついていません
会員登録して回答してみよう