Search code examples
visual-studio-codepythontelegramtelegram-botpython-telegram-bot

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


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.


Solution

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