提问者:小点点

如何使用我的电报机器人使用他们的用户名向他们发送消息


我正在使用Telepot python库,我知道当你有某人的UserID(这是一个数字)时,你可以发送消息。我想知道是否有可能在没有UserID的情况下向某人发送消息,而只使用他们的用户名(以 '@'), 开头的用户名)。此外,如果有一种方法可以将用户名转换为UserID。


共3个答案

匿名用户

  1. 从用户向机器人发布一条消息。
  2. 打开https://api.telegram.org/bot

匿名用户

只能向已经在您的机器人上使用 /start的用户发送消息。当他们启动您的机器人时,您可以直接从他们发送 /start的消息中找到update. message.from.user_id,并且可以使用相同的方法找到update.message.from.username。为了向“@Username”发送消息,您需要他们启动您的机器人,然后将用户名与user_id存储在一起。然后,您可以在每次向他们发送消息时输入用户名以找到正确的user_id。

匿名用户

您不能使用@username形式的用户名向用户发送消息,您可以将消息发送到您的机器人管理员的通道用户名。Telegram bot 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"
}