web-dev-qa-db-ja.com

ユーザー名を使用して、電報ボットの誰かにメッセージを送信するにはどうすればよいですか

私はテレポットを使用していますpythonライブラリ、誰かのUserIDがあればメッセージを送信できることを知っています(これは数字です)。誰かにメッセージを送信できるかどうかを知りたいユーザーIDを持たず、ユーザー名(「@」で始まるもの)のみで、ユーザー名をユーザーIDに変換する方法がある場合.

9
ATheCoder

@usernameの形式のユーザー名を使用してユーザーにメッセージを送信することはできません。ボットが管理者であるチャンネルユーザー名にメッセージを送信するだけです。 TelegramボットAPIは、メッセージの送信にchat_id識別子を使用します。ユーザーのchat_idを達成したい場合は、 telegram-cli を使用できますが、そのプロジェクトは中止されているため、自分でデバッグする必要があるため、まったく簡単ではありません。あなたの場合、次のコマンドを実行する必要があります。

> resolve_username vahid_mas

出力は次のようになります。

{"user": {"username": "Vahid_Mas", "id": "$010000006459670b02c0c7fd66d44708", "last_name": "", "peer_type": "user", "print_name": "Vahid", "flags": 720897, "peer_id": 191322468, "first_name": "Vahid", "phone": "xxxxxxx"}, "online": false, "event": "online-status", "state": -1, "when": "2017-01-22 17:43:16"}
6
Vahid Msm

ボットで既に/ startを使用しているユーザーにのみメッセージを送信できます。ボットを起動すると、/ start withで送信したメッセージから直接update.message.from.user_idを見つけることができ、同じ方法でupdate.message.from.usernameを見つけることができます。 「@Username」にメッセージを送信するには、ボットを起動し、user_idでユーザー名を保存する必要があります。次に、ユーザー名を入力して、メッセージを送信するたびに正しいuser_idを見つけます。

7
Resin Drake
  1. ユーザーからボットに1つのメッセージを投稿します。
  2. 開いた https://api.telegram.org/bot<Bot_token>/getUpdatesページ。
  3. このメッセージを見つけて、result-> message-> chat-> idキーに移動します。
  4. このIDを[chat_id]パラメーターとして使用して、ユーザーに個人的なメッセージを送信します。
6

Telegram Bot API documentation によると、@channelusername

Documentation screenshot

[〜#〜] update [〜#〜]

これを達成する可能性はありません。 Telegram Bot API変更ログで このメモ を見つけました:

これが機能するには、ボットがチャンネルの管理者である必要があります

Documentation screenshot

1