質問: yyk_pay * int(yyk_num) 2019-02-23T13:37:59.474389+00:00 app[web.1]: UnboundLocalError: local variable 'yyk_pay' referenced before assignment 2019-02-23T13:37:59.474630+00:00 app[web.1]: 10.63.225.86 - - [23/Feb/2019 13:37:59] "POST /callback HTTP/1.1" 500 - ``` と出てきます。 このログの見方もよくわかっていないのですが、これはyyk_~の変数たちへの代入ができていない=うまくメッセージをリストにできていないということで間違いないでしょうか? ### 試したこと もしかしてevent.message.textは普通の文字列じゃないのかも?と思いLINEのドキュメントや他サイトも探してみたのですが中々自分の知識に翻訳できるものがありませんでした。 しまいにはJSON形式?のような言葉も出てきて完全にお手上げとなりました。 長くなってしまいましたが、質問したいのは 相手からのメッセージをリストにするにはどうしたらいいでしょうか?ということです。 初心者ゆえにお見苦しい箇所も多いと思いますが、よろしくお願いいたします。 ### 補足情報(FW/ツールのバージョンなど) Windowsでpython-3.7.2 を使っています。 上記の書き換えた個所以外は参考サイトを踏襲しています。 コードの問題点の他、厚かましながらこういったアプリを作るうえでの今後の方針などもご教授いただけると嬉しい限りです。 例えば、内内のコミュニティで運用するならともかく、公開して不特定多数のお客さんにも利用してもらうとなると何かクラッシュするんじゃないかなというようなことも懸念しています。
回答: > > local variable 'yyk_pay' referenced before assignment > > > ローカル変数`yyk_pay`は代入される前に参照されました(拙訳) ``` if yyk_var == "一般": yyk_pay = 3000 elif yyk_var == "高校生": yyk_pay = 1500 elif yyk_var == "U25": yyk_pay = 2000 ``` どの条件も`True`にならないとき、`yyk_pay`が定義されません。なのでそのエラーになります。 そのAPIやherokuについての知識がある訳ではないので、実際にどう直せば良いとかは知りませんが。「一般」「高校生」「U25」などと送ってもエラーになるのなら、まずは`yyk_var`がどんな値になっているか見てみることでしょう。 普通にprintすればログに吐けるんじゃないかな? あるいはlineメッセージとして返しても良いでしょう。 あとは、else節を追加して意図しない文字列が来たときの動作を定義しておくと良いです。 書式と合致しているかチェックして、合致していなければ「こういう書式で送ってください」とでも返すと多少親切ではあります。