我正在使用telepot python库,我知道当你有某人的UserID(这是一个数字)时你可以发送一条消息。 我想知道是否可以在没有用户ID的情况下向某人发送消息,但只能使用他们的用户名(以'@'开头的那个),还有一种方法可以将用户名转换为用户ID。
答案 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)
https://api.telegram.org/bot<Bot_token>/getUpdates
页。答案 3 :(得分:2)
答案 4 :(得分:1)
根据Telegram Bot API documentation,您应该可以指定@channelusername
。
<强>更新强>
没有可能实现这一目标。我在Telegram Bot API Changelog中找到this note:
为此,僵尸程序必须是渠道
中的管理员
答案 5 :(得分:0)
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还提到了另一种方法。我还没有检查过,但是看起来很有趣。