당신의 텔레그램 봇은 문자들의 나열이며, 세 가지 규칙이 그 기능을 결정합니다.
BotFather가 토큰을 건네주는 데는 1분이면 충분합니다. 대부분의 첫 봇을 막는 건 그 다음에 오는 코드가 아니라, 그룹에서의 프라이버시 모드, 채팅에서 초당 1개 메시지, 그리고 대량으로는 초당 약 30개라는 제한입니다. 이 세 가지는 모두 공개되어 있습니다.
Michael Chen検索するとき、誰もが必ず目にする2つの検索フレーズがあります。それはトークンとチャットIDです。この組み合わせこそ、初心者にとっての課題全体を凝縮したものです。最初の1分でトークンを取得できても、ボットには話す場所がないことに気づくのです。
ですから、これはフレームワークの比較ではありません。トークンとは何か、それを手に入れた後にボットを止めるものは何か、そして、あなたが何かを構築する際にその形を決める3つの公開された制限についてです。
BotFatherが実際に提供するもの
Telegramのボット作成用公式ボットとのチャットを開き、/newbotと送信し、2つの質問に答えます。Telegramのドキュメントには、名前とユーザーネームを尋ね、その後認証トークンを生成すると正確に記載されています。
そのトークンこそがボットです。数字のプレフィックスとコロンの後の長いシークレットからなる文字列で、Telegram自身の言葉を借りれば、ボットを認証し、APIにリクエストを送信するために必要です。別のパスワードも、ログインするアカウントも、2つ目の認証情報もありません。この文字列を手にした人は誰でもボットを完全に制御できるため、環境変数に保存し、リポジトリやスクリーンショット、グループチャットには絶対に置かないようにすべきです。
その時点で、何もしない動作するボットができあがります。なぜなら、誰もリッスンしていないからです。これは正しい状態であり、実際の作業はここから始まります。
ルール1:グループ内では、ボットは意図的に聞こえない
これは最もよくある「ボットが壊れた」という報告であり、バグではなくドキュメント化された動作です。Telegramは、グループに追加されたすべてのボットはデフォルトでプライバシーモードで動作し、関連するメッセージとコマンドのみを認識すると述べています。
つまり、グループにいるボットは通常の会話を受信しません。ボットに宛てたメッセージとコマンドを受信するのです。これが設計です。すべてを読み取る必要があるモデレーションボットを構築している場合は、BotFatherを通じて意図的にその設定を変更します。質問に答えるヘルパーを構築している場合は、そのままにしておきます。デフォルトはプライバシーを保護するものであり、大量の無関係なアップデートを避けることもできます。
ボット間のワークフローを構築している人を悩ませる関連ルールがあります。Telegramは、ボットが他のボットからのメッセージを一切見られないように決定しました。モードに関係なく、ループに陥るのを防ぐためです。自分の2つのボットが直接会話することはできません。
ルール2:チャットごとに毎秒1メッセージ
Telegramのガイダンスは明確です。1つのチャットでは、毎秒1メッセージ以上送信しないようにしてください。これは厳格な制限というよりアドバイスとして表現されており、実際には、完全に拒否するのではなく、ボットを待たせることで制限が適用されます。
設計上の結果は早い段階で理解しておく価値があります。6つの短いメッセージで質問に答えるボットは、1つのメッセージで答えるボットよりもユーザーにとって6倍遅く感じられます。ナレーションではなく、1つの返信にまとめましょう。
ルール3:バルクで毎秒30件、そしてその後の計算
バルク通知について、Telegramはボットが毎秒約30メッセージ以上をブロードキャストできないと述べています。
ブロードキャスト機能を設計する前に計算をしてください。容赦ないからです。1万人の購読者に毎秒30件送信する場合、何も失敗せず、再試行もないと仮定すると、5分半強の継続的な送信になります。10万人ならほぼ1時間です。大規模なリストに何かを通知することを目的としたボットは、実際にはキューであり、その先にボットがいるだけです。単純なループとして構築すると、ニュースが古くなった後もずっと送信され続けるブロードキャストになります。
実用的な答えは一般的なものです。個々のユーザーにプッシュするのではなく、チャンネルに送信して購読者にプルさせるか、キューを受け入れて進捗状況を表示するかです。最初に意図的に選択してください。
意図的に小さな最初のバージョン
Telegramはすべての開発者に基本的なコマンドの小さなセットをサポートするよう求めており、ユーザーとの対話を開始するものとして/startをリストの先頭に置いています。また、ボットに送信されたすべてのメッセージに応答することも求めています。この2つの行の間に、最初のバージョンの仕様があります。
/startに応答する:ボットが何をするのかを短く説明します。これはすべてのユーザーが最初に目にするものであり、確実に表示される唯一の画面です。- 実際の繰り返しの質問にマッチさせる:推測したリストではなく、すでに手動で回答しているメッセージから取ります。
- 決して沈黙しない:認識できない入力には、人間がフォローアップするという返信を返します。何も言わないボットは壊れているように見え、「理解できませんでした。誰かが後で連絡します」と言うボットは機能しているように見えるからです。
このループを確実にすれば、その後のすべて(スケジュール投稿、グループモデレーション、データベース参照)は再構築ではなく追加になります。
買えない2つのものと、買える1つのもの
このマーケットプレイスに何があり、何がないのかについてのメモです。このようなサイトでは当然の質問だからです。
購入できるボットはありません。16,735件のアクティブなリスティングすべてでタイトルにその単語が含まれるものを検索すると、3件の結果が返りますが、そのすべてが別のものです。名前に「Bot」が含まれるコンソールゲーム、ボットが配信メカニズムであるTelegramリスティング、売り手がボットを通じて管理者権限を譲渡するFacebookリスティングです。トークンは無料で1分で取得できるため、ここでボットを販売している人はいません。
あなたが欲しいかもしれないのは、テスト用の通常のTelegramアカウントです。デバッグ中のボットに個人の番号を追加しないようにするためです。また、登録用の番号も必要です。両方とも存在します:TelegramアカウントとSMS認証番号です。アカウント棚の保証期間は中央値で12時間なので、週末ではなく、届いたらすぐにログインをテストしてください。
公開向けのものを構築している場合に知っておくべき1つの非対称性があります。Telegramの認証はチャンネル、ボット、公開グループに適用されます。あなたのボットは対象リストに含まれています。実行元のアカウントは含まれていません。
構築中に開いておくべきリファレンスは、Telegram自身のBot APIドキュメントです。このページで引用されているすべてはそこからのものであり、最新の状態を保つ唯一の情報源です。