【问题标题】:Telegram bot API is the chat_id unique for each user contacting the bot?Telegram bot API 对于每个联系该机器人的用户来说,chat_id 是唯一的吗?
【发布时间】:2020-05-02 00:27:29
【问题描述】:

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

对于每个连接机器人的用户来说,chat_id 是唯一的吗?

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

谢谢

【问题讨论】:

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


    【解决方案1】:

    每个连接机器人的用户的 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!"
                }
            }
        ]
    }
    

    根据this postchat.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
            }
        }
    }
    

    【讨论】:

    • 所以如果我有两个机器人,并且同一个用户将与他们两个交谈,他/她将有两个 chat_id 还是一个?
    • chat_iduser_id 将是相同的,因为您是从同一用户发送聊天,因此是相同的(私人)聊天。如果第一个用户向机器人发送私人消息,而第二个用户将通过群聊定位机器人,那么(来自)user_id 将是相同的。除了这次(发件人)chat_id 会有所不同,一个是私聊,另一个是群聊
    • 我添加了一个小例子@thebeancounter
    • 任何人都可以在这里帮助我解决类似的问题:stackoverflow.com/q/68815736/10302693
    • @0stone0 如果是两个不同的机器人怎么办? from.id 对于所有组和 bot 直接消息(对于 bot_a 和 bot_b)中的同一用户帐户是否相同?
    猜你喜欢
    • 2022-10-18
    • 2018-12-01
    • 2019-02-15
    • 2018-12-03
    • 2020-04-04
    • 2022-12-26
    • 1970-01-01
    • 2018-08-11
    • 2011-01-28
    相关资源
    最近更新 更多