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

假如想象 提交于 2019-12-06 19:30:14

问题


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.


回答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"}



回答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.



回答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.




回答4:


According to Telegram Bot API documentation you should be able to specify @channelusername.

UPDATE

There is no possibility to achieve this. I found this note in Telegram Bot API Changelog:

For this to work, the bot must be an administrator in the channel



来源:https://stackoverflow.com/questions/41664810/how-can-i-send-a-message-to-someone-with-my-telegram-bot-using-their-username

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!