Stepicボット
言語とライブラリの選択
StapikaバックエンドはDjangoで作成されており、ボットを共通インフラストラクチャに統合する最も簡単な方法はDjangoアプリケーションを作成することであるため、Pythonがプログラミング言語として選択されました。
Telegram APIの多くのラッパーライブラリのうち、 eternnoir / pyTelegramBotAPIが選択されました。 オプションには、さらに3つがありました: datamachine / twx.botapi 、 nickoala / telepot 、 sourcesimian / txTelegramBot 。 その選択は、第一に、積極的にサポートされていたという事実によるものであり、第二に、最小のロシア語でそれに関する良いガイドがあります。 ところで、このチュートリアルの作成者はVKでグループを作成し、Telegramボットに関連するあらゆる種類の質問に完全に無料で非常に迅速に回答します。
アカウントのリンク
ボットがいくつかの有用なアクションを実行できるようにするには、StepikアカウントをTelegramアカウントにリンクする必要があります。 このために、ディープリンクと呼ばれるメカニズムが使用されます。 これについては、Telegram APIのドキュメントまたはここで読むことができます (2番目のリンクはより明確です:)。
この場合、メカニズムは次のとおりです。
- Stepic.orgでは、各ユーザーに一意のランダムに生成されたトークンが割り当てられます。
- アカウントをリンクするには、ユーザーはサイトのプロファイルにあるtelegram.me/ <bot_name>?Start =%token%という形式の一意のリンクをたどる必要があります。 このリンクをたどると、ボットがユーザーからstart%token%という形式のメッセージを受信することになります。
- このようなメッセージを受信すると、ボットはデータベースを検索し、そのようなトークンを持つユーザーを検索します。見つかった場合、このユーザーはこのメッセージの発信元のTelegramアカウントに対応していることを記憶します。
また、人々が主にPCからコースを受講し、モバイルデバイスでTelegramを使用することも検討する価値があります。 したがって、Stepic.orgを介してボットを見つけられなかったかどうかを尋ね、そこに行ってこのリンクをクリックするのは悪い考えです。 このデバイスにログインしていない可能性があり、パスワードは長い間忘れられています。 したがって、アカウントをリンクするための2番目のオプションがあります-電子メール経由。 ボットは、なじみのないユーザーが彼に手紙を書いた場合、登録中に使用された電子メールアドレスの入力を求め、そのような電子メールアドレスが見つかった場合、そこに一意のリンクが送信され、ユーザーは電子メールクライアントを入力し、このリンクをクリックして、すべての準備が整います。
便利なアクション
アカウントをリンクする方法を学んだ後、ボット自体ができることを決定する必要があります。 このテーマについては多くのアイデアがありましたが、最初は機能について説明することにしました。
- リクエストに応じて、コースの最も近い締め切りのリストを送信します。
- 新しいレビュー、コメント、今後の締め切り、受け取った証明書へのリンクなどに関する通知を送信します。 すべてが郵便局に届きました。
- コースを検索します。
- 学生コース間のコミュニケーションの組織。
設計
チャットボットの動作をシミュレートする最も簡単な方法は、 ステートマシンです。
この場合、次のようになります。
赤の状態は、ボットがユーザーからの入力を期待している状態です。
私は、ボットが次のコマンドのいずれかを予期する初期状態です。
II-これは登録方法の選択です(Webサイトまたは電子メール経由)。
III-ユーザー入力メールの待機状態。
IVは、ボットが次のコマンドのいずれかを予期している状態です。
Vは検索で、ボットはリクエストの入力を待っています。
実際、すべてのコマンドの意味は非常に明白であり、使用例もいくつかあります。
学生間のコミュニケーションは最も簡単な方法で実装されます-コースのチャットが作成され、ユーザーの要求に応じて、彼はコースのチャットのリストを受け取ります。ユーザーはこのコースに登録されているかどうかに応じて2つのカテゴリに分けられます。
ところで、ところで、botAPI 2.0の新機能、つまり、組み込みのキーボードとメッセージの編集が使用されました。 すべてのチャットを一度に表示することは可能ですが、ユーザーが登録されていないコースでは非常に多くのチャットが発生する可能性があり、ユーザーが複数の画面を見たい場合は、意識的にそれをさせます。
検索コース:
アカウントの削除:
登録方法の選択:
/ deadlinesからの出力例:
TelegramのStepic.org:
ボットは、telegram.me / stepicbotにあります。
または、stepic.org / telegramのように、Stepic.orgアカウントをTelegramアカウントにすぐにリンクできます。
質問にお答えします。建設的な批判も歓迎します!
そして、Stepicステッカーのスイートセットの場合:telegram.me/addstickers/Stepic