こんにちは、ハブロフスク! 最近、MRCOダイアリーのパーサーの作成方法に関する記事を執筆し、最終的にTelegramボットとの統合について書くことを約束しました。 私が本当に後悔していること 。 これで、 ボットの準備が整い、完全に機能するようになりました。 この作品で私が使用したものと、私が遭遇した困難をお伝えしたいと思います。
PythonとTelegram
ボット (@mrkorobot)を作成するために、 pyTelegramBotAPIライブラリを使用することにしました。 インストールが簡単で、使いやすいだけでなく、優れた本を書いてくれました。 ボットでは、次のライブラリを使用します。
- webhookの竜巻
- ウェブでの作業のリクエスト
- 日記データを取得するBeautifulSoup
- Redisデータベースを操作するためのRedis
- Telegramと対話するためのpyTelegramBotAPI
- 毎日の通知用のcrontab
日記にアクセスするには、ユーザー名とパスワードが必要です。 最初のステップは、ユーザーにそれらを要求し、それらをデータベースに入れることです。 ユーザーがボットにアクセスするたびにユーザー名とパスワードが必要になるため、高速のデータベースを選択する必要がありました。 私の選択はRedisにあり、Pythonで作業するために同じ名前のライブラリを使用することに決めました。 以前にPythonに組み込まれたhashlibライブラリを使用してmd5でパスワードを暗号化したので 、データベース内のキーの下にパスワードを入れました。キーの名前はTelegramのユーザーIDだけです。 視覚的な表現は次のとおりです。
{ "id_": ["", "__MD5"] }
このようなスキームを使用する場合、そのようなIDを持つセルがあるかどうかをすぐに確認できます。そうでない場合、ユーザーはnoに承認されます。
その結果、日ごとのクラススケジュール、宿題、科目の成績、添付ファイル(ある場合)を表示できるボットが作成されます。
毎日の通知
原則として、現時点では、宿題の表示の実装は終了していますが、私はさらに先に進み、成績について毎日通知したかったのです。 考えた後、cronに追加した簡単なスクリプトを作成し、 ここで式を生成しました 。 ロジックは非常に単純です:最初に、すべての許可されたユーザーのリストを取得し(ボットにユーザー名とパスワードを提供)、ユーザーが毎日の通知をオンにしているかどうかを確認します。
あなたの日記をチェックすることはかつてないほど容易になりました!
プライベートメッセージ
また、プライベートメッセージを表示する機能を実装したいと考えました。 「どうして?」 -着信メッセージを表示できるメソッドを考えて作成しました。 驚くほど複雑なものはありませんでした。 mrko.mos.ru/dnevnik/services/dnevnik.php?r=1&first=1ではなく、 mrko.mos.ru / dnevnik / services / mail.php?r = 0に連絡する必要がありました 。 その後、通常の解析とすべての準備が整いました。
ところで、ホスティングに問題がありました。何らかの理由でサーバーmrko.mos.ruがGoogle Cloud Platformのサーバーから利用できなかったため、しばらくの間、友人とボットを配置する必要がありました。
あなたが日記を試すことは私にとって非常に重要です。
(@mrkorobot)職場で考えを述べました。 すべてのアイデアは非常に慎重に検討されます。 幸せなプログラミング!