独自の Telegram ボットを作成する方法 – パート 2 説明とマークアップ

in Vlog

こんにちは、私の名前はAlex Nekrashenkoです。前回は、基本的なこと、Telegram APIとは何か、インスタンスボットの作成方法について説明しました。そのためのテクノロジーを選択し、APIに関する一般的なことを説明しました。今すぐ詳しく見ていきましょう。

Tot Bot が正確に何なのかについてまだ説明していないことに今気づきました。Tot Bot は Telegram ボットであることは明らかですが、主な目的は人々が言語を学習できるように支援することです。

これは教師にとっても、自分で言語を学びたい人にとっても役立ちます。例を挙げてみましょう。

ボットの使用を開始すると、ボットの使い方がガイドされます。最初の手順は誰にとっても同じで、チャンネルを作成し (たとえば、「My German」という名前を付けました)、そこにボットを追加して管理者にします。

このチャットでメッセージが届きます。

今はボタンを選択する必要があります。自分用に作成するので、「自分用」をクリックします。

素晴らしい!これで完了です。もう使用できます。ボットに戻って、唯一のコマンドをクリックするだけです。 /管理ボットは、誰がユーザーで誰が教師であるかを自ら定義します。これは私のお気に入りの機能の 1 つです。実際、何もする必要はありません。ボットはあなたと生徒に関するすべての情報をすでに把握しています。

わかりました。その後は、チャンネルを設定するだけです。これは MVP にすぎないことを忘れないでください。現時点では、機能は 1 つだけあります。それは、単語の繰り返しです。ボットを使用して、翻訳の有無にかかわらず、チャンネルに単語を追加できます。最後のステップは、表示時間を設定することです。

とても簡単そうに聞こえませんか?実際そうなんです。

期間の選択期間の選択

ご覧のとおり、私は毎日午前 10 時と午後 3 時を選択し、次の単語を追加しました。

Guten Morgen – おはようございます

今回はそれが手に入ります。

GIFアニメーションGIFアニメーション

一番良いのは、ボットがあなたの単語を特別な形式に変換し、翻訳を隠すことです。単語を覚えたかどうかを尋ねられます。覚えているかどうかは簡単です。仮定を確認して、ネタバレエリアをクリックしましょう。

ユーザーはオプションの 1 つを選択できますが、素晴らしいのは、その後、ボットがすぐにそれに反応することです。

見てください、私が選んだのは まだ、 ボットは私に幸運を祈ってくれたので、明日またこの言葉を聞くことになるでしょう。でももし私が 私はその言葉を学びました、 ボットで有効にしなかった場合、私の言葉は無効になり、二度と見ることができなくなります。

これが、生徒の語彙を増やすのを手助けする多くの教師のポイントです。生徒に毎日 5 回続けて学習させることはできますが、本当に習得できるでしょうか。一方、生徒が最初の試みですでに単語を習得している場合も同じです。生徒に選択させましょう。生徒に自分で結果を追跡させましょう。信じてください、そのほうが生徒にとってより役立つでしょう。

もちろん、教師も授業にこのチャンネルを使用したり、生徒の発音を追跡したりすることができます。

さて、Tot Bot が実際に何であるかがわかったので、より技術的な話に戻りましょう。前回は、userState テーブルについて説明しましたので、そこから続けるのが公平でしょう。残念ながら、Telegram はまだ開発者が必要とするものを提供していません。その一部は非常に不明瞭であると説明されています。

そのため、私のような人間は、たとえばデータの送信方法について独自のアイデアを開発する必要があります。つまり、ご覧のとおり、私のアプリケーションでユーザーが行うすべてのアクションは制御下にあります。すべてのアクションはメッセージに添付されたボタンに関連しているため、何を送信し、何を取得するかは確実にわかっています。ただし、ユーザーが入力で何かを送信する場合や、このアクションを追跡するために userState を正確に使用する場合は例外です。

ボタンについて話しましょう。Telegramのこのメカニズムは reply_markup正確に言うと、このフィールドに関するロジックが多すぎるため、このロジックのみを記述する別のファイルを作成しました。

もう 1 つ重要な点は、ユーザーが呼び出すマークアップを多数持つことができることです。正直に言うと、私は他のボットのベスト プラクティスを採用し、ユーザーがイベントをコミットした後にマークアップを削除することにしました。こうすることで、API を不要なアクションから保護しました。

GIFアニメーションGIFアニメーション

マークアップの一部は、ユーザーが必要とするため、まだ削除できませんが、このようなイベントはすでに用意してあり、そのすべてをユーザーに任せています。これは完全なアプリケーションではなく、単なるボットであり、ユーザーが自分でどうするかを決めることができることを忘れないでください。明確化: 履歴を消去して、必要なメッセージを削除できます。私は、そのために必要な特別なイベントを制御しているだけです。

ユーザー イベントについて言えば、これはまさに私のアプリケーションが動作する方法です。

覚えていると思いますが、データの制限についてお話ししました。それが私が話していたことです。

const reply_markup = {
  inline_keyboard: (
    (
      {
        text: 'Button 1',
        callback_data: Your callback data,
      },
      {
        text: 'Button 2',
        callback_data: Your callback data,
      },
    ),
  );
}

それが reply_markup コードを見ると、 inline_keyboard ここに配列内の配列があります。これらのボタンは、作成すると垂直に表示されます。

const reply_markup = {
  inline_keyboard: (
    (
      {
        text: 'Button 1',
        callback_data: Your callback data,
      },
    ),
    (
      {
        text: 'Button 2',
        callback_data: Your callback data,
      },
    ),
  );
}

しかし、最初の例と同じように並べると、水平に一列に並びます。ここで最も重要なのは callback_data なぜなら、まさにここでユーザー データを API に転送する必要があるからです。これが少し複雑になる理由は 2 つあります。1 つ目は、前述したように、コールバック データは文字列のみでなければならず、長さ制限があるからです。

2 つ目は、すべてのデータをこの制限内に収める必要があることです。この制限はそれほど大きくはありません。想像してみてください。イベントが何であるか、ユーザーが何を送信したか、どのチャネルから送信したかを取得する必要があります。すでに多くの情報がありますが、ユーザーが学習した単語や、そのデータに関係するその他の情報も取得する必要があります。

もちろん、私はそれについて書いています。 第三部 この記事の終わりに、皆さんの注目に感謝したいと思います。

私が下した決断について知りたい方は、いいねを押して私のブログを購読してください。

関連記事

前の投稿
ダブルマテリアリティの台頭による現実世界のESGインパクトの取り込み
次の投稿
2024 年の CIO にとって重要な 5 つの法的課題