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