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

时间:2017-01-15 18:38:14

标签: python telegram telegram-bot python-telegram-bot

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

7 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:5)

您无法使用@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"}

答案 2 :(得分:4)

  1. 从用户发送一条消息给Bot。
  2. 打开https://api.telegram.org/bot<Bot_token>/getUpdates页。
  3. 找到此消息并导航至结果 - &gt; message-&gt; chat-&gt; id键。
  4. 使用此ID作为[chat_id]参数向用户发送个人信息。

答案 3 :(得分:2)

作为您要学习其ID的用户,请将任何内容的消息发送到@JsonDumpBot。它将回复从电报收到的整个JSON元素,包括用户的ID:

enter image description here

答案 4 :(得分:1)

根据Telegram Bot API documentation,您应该可以指定@channelusername

Documentation screenshot

<强>更新

没有可能实现这一目标。我在Telegram Bot API Changelog中找到this note

  

为此,僵尸程序必须是渠道

中的管理员

Documentation screenshot

答案 5 :(得分:0)

TaaS

真的很简单
  1. 注册,为电话号码或漫游器令牌创建API密钥
  2. 使用JSON正文向https://api.t-a-a-s.ru/client发出POST请求:
export class A {
    data;
    async method_A() {
        this.data = await observable$.first().toPromise();
    }
}

您将收到用户的chat_id作为响应。

答案 6 :(得分:0)

使用互联网上提供的其他电报版本是绝对不安全的,但是我发现Telegram Plus可以在您的个人资料中向您显示用户的chat_id,即使您没有他们的联系人。

提取该特定用户的chat_id的另一种方法是,您拥有该帐户的电话号码,将其保存为联系人,然后将其共享给this机器人。自己编写代码很容易,但是如果您想接收chat_id,也可以将用户的内容转发到该机器人。

urmurmur还提到了另一种方法。我还没有检查过,但是看起来很有趣。