How can I send a message to someone with my telegram bot using their Username

120,898

Solution 1

You can't send message to users using their username that is in form of @username, you can just send messages to channel usernames which your bot is administrator of it. Telegram bot api uses chat_id identifier for sending messages. If you want to achieve chat_id of users, you can use telegram-cli, but it's not easy at all because that project is discontinued and you should debug it yourself. in your case you should do following command:

> resolve_username vahid_mas

and the output will be something like this:

{
  "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"
}

Solution 2

  1. Post one message from User to the Bot.
  2. Open https://api.telegram.org/bot<Bot_token>/getUpdates page.
  3. Find this message and navigate to the result->message->chat->id key.
  4. Use this ID as the [chat_id] parameter to send personal messages to the User.

Solution 3

It is only possible to send messages to users whom have already used /start on your bot. When they start your bot, you can find update.message.from.user_id straight from the message they sent /start with, and you can find update.message.from.username using the same method. In order to send a message to "@Username", you will need them to start your bot, and then store the username with the user_id. Then, you can input the username to find the correct user_id each time you want to send them a message.

Solution 4

As the user you want to learn the ID of, send a message of any content to @JsonDumpBot. It will reply the whole JSON element that it receives from Telegram, including the ID of the user:

enter image description here

Share:
120,898
ATheCoder
Author by

ATheCoder

Updated on July 09, 2022

Comments

  • ATheCoder
    ATheCoder almost 2 years

    I am using the telepot python library, I know that you can send a message when you have someone's UserID(Which is a number). I wanna know if it is possible to send a message to someone without having their UserID but only with their username(The one which starts with '@'), Also if there is a way to convert a username to a UserID.

  • Krzysztof Kaczor
    Krzysztof Kaczor over 3 years
    Note: the first message NEEDS to be sent via phone not desktop :( stackoverflow.com/questions/43880243/…
  • Raul Chiarella
    Raul Chiarella over 2 years
    Yo, as of 2022 is there any other methods? I couldnt get this to work.