HerokuとPythonでTelegramのbotを作成する
親に作ってって言われたんで作る。自分の仕事なんだし自分で作れや。
使用したサイト・ツール
- heroku
- git
手順
herokuのインストール手順は下記参照。
https://qiita.com/mickie895/items/9d9e95f2b2efb1b961df
まずはTelegramのアカウントを作り、botのアクセストークンを取得する。手順は下記参照のこと。
https://telegram-creators.bacronym.net/wiki/bot-entry/
Echobotの作成・調整
下記アドレスのgithubのソースをgit-cloneし、(プロジェクト名)/examples/echobot2.pyを一つ上の階層にコピーし、"main.py"にリネームする。
https://github.com/python-telegram-bot/python-telegram-bot
このファイルの56行目の"TOKEN"をbotfatherから受け取ったアクセストークンに差し替えればいいが、ソースコードを公開したときにアクセストークンが流出しないようにしたほうが良いと思う。
そのためには下記のようにソースコードを一部変更する。
18行目~21行目を変更
import logging import os from telegram.ext import Updater, CommandHandler, MessageHandler, Filters ACCESS_TOKEN = os.environ["TELEGRAM_ACCESS_TOKEN_ONE"]
56行目付近を変更
updater = Updater(ACCESS_TOKEN, use_context=True)
herokuを使うための設定
herokuでアプリを動かすためにはProcfileという名前のファイルをプロジェクトのディレクトリに入れる必要がある。
下記がファイルの中身。
web: python3 main.py
herokuを使わないんだったらmain.pyをどうにかして実行すれば大丈夫。
herokuでアプリを登録
herokuで新しいアプリを作り、git pushする。ここは日本語の解説も多いので省略。
そして実行したが投稿が帰ってこない……?logを見てみる。
2020-05-11T06:46:27.820936+00:00 app[api]: Scaled to web@1:Free by user mken.mickie@gmail.com 2020-05-11T06:47:32.345476+00:00 heroku[web.1]: State changed from starting to crashed 2020-05-11T06:47:32.348520+00:00 heroku[web.1]: State changed from crashed to starting 2020-05-11T06:48:36.017510+00:00 heroku[web.1]: State changed from starting to crashed
1分程度でクラッシュしてる上にログが出てないぞ……?
最低限の用は済んだし、一旦ここで区切って余力があれば追加を調べることにする。
Google Code Jam 2019 Round1 覚書
Google Code Jam 2019 Round1 覚書
ものの見事に0完だったが、考え方をメモしておく。
問題1 Pylons
問題2の方に時間を取られていて回答できなかった。
全体的な正答率を考えてとりあえず8点でも取れていれば次のラウンドに進めそうだったので、Case1をゴリ押ししようとしたが失敗。
問題文をよく読んでいたら一筆書きの問題だと気がつき、実装例を探そうとしたが実装は間に合いそうになかった。
あるマスから飛べるマスとの間を辺として考えれば一筆書きになる。
問題2 Alien Rhyme
すべての文字列について入力の最後の文字から順番にどれほど一致しているかを見て、一致していなかったところでペアを探す、とやっていったら不正解だった。
こんな入力で解答を6にできず4になっていたことが発覚。アルゴリズム自体が間違っている模様。
CODEJAM
EJAM
HAM
MUM
HUM
M