Telegram bot API 对于每个联系机器人的用户来说,chat_id 是唯一的吗?

the*_*ter 5 python authentication telegram python-telegram-bot telegram-bot

我们正在为电报机器人使用 python API,并且需要能够识别用户。

连接机器人的每个用户的 chat_id 是否唯一?

我们可以相信 chat_id 是一致的吗?例如,相同的chat_id 会告诉我们这是同一个用户,并且每个与bot 连接的用户都会有一个在会话之间保持一致的chat_id?

谢谢

0st*_*ne0 6

连接机器人的每个用户的 chat_id 是否唯一?

是的

chat_id对于连接到您的机器人的每个用户,将始终是唯一的。如果同一个用户向不同的机器人发送消息,他们将始终使用自己独特的id.

请记住,这会getUpdates显示用户 ID 和聊天中的 ID。

{
    "ok": true,
    "result": [
        {
            "update_id": 1234567,
            "message": {
                "message_id": 751,
                "from": {
                    "id": 12122121,                     <-- user.id
                    "is_bot": false,
                    "first_name": "Me",
                    "last_name": "&",
                    "username": "&&&&",
                    "language_code": "en"
                },
                "chat": {
                    "id": -104235244275,                <-- chat_id
                    "title": "Some group",
                    "type": "supergroup"
                },
                "date": 1579999999,
                "text": "Hi!"
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

根据这篇文章chat.id即使该组转换为超级组,也不会改变

基于评论;私人/群聊示例的小概述

user_1 ---> bot_a     in private chat
{
    "message": {
        "from": {
            "id": 12345678          <-- id from user_1
        },
        "chat": {
            "id": 12345678,         <-- send from private chat, so chat is equals to user_id
        }
    }
}

user_2 ---> bot_a     in private chat
{
    "message": {
        "from": {
            "id": 9876543          <-- id from user_2
        },
        "chat": {
            "id": 9876543,         <-- send from private chat, so chat is equals to user_id
        }
    }
}

user_1 ---> bot_a     in group chat
{
    "message": {
        "from": {
            "id": 12345678         <-- id from user_1
        },
        "chat": {
            "id": 5646464,         <-- send from group chat, so id is from groupchat
        }
    }
}

user_2 ---> bot_a     in group chat
{
    "message": {
        "from": {
            "id": 9876543          <-- id from user_2
        },
        "chat": {
            "id": 5646464,         <-- send from group chat, so id is from groupchat
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • “chat_id”和“user_id”都将相同,因为您是从同一用户发送聊天,因此是相同的(私人)聊天。如果第一个用户向机器人发送私人消息,而第二个用户将通过群聊瞄准机器人,则(来自)“user_id”将相同。只不过这次(来自)“chat_id”会不同,一个是私人聊天的 id,另一个是群聊的 id (3认同)