API бота Telegram является уникальным chat_id для каждого пользователя, связавшегося с ботом? - PullRequest
2 голосов
/ 15 января 2020

Мы используем python API для ботов-телеграмм и должны иметь возможность идентифицировать пользователя.

Является ли chat_id уникальным для каждого пользователя, подключающего бота?

Можем ли мы доверять chat_id, чтобы он был согласованным? Например, тот же chat_id скажет нам, что это один и тот же пользователь, и у каждого пользователя, связывающегося с ботом, будет один chat_id, который согласован между сессиями?

Спасибо

1 Ответ

1 голос
/ 15 января 2020

Является ли chat_id уникальным для каждого пользователя, подключающего бота?

Да

chat_id всегда будет уникальным для каждого подключающегося пользователя вашему боту. Если один и тот же пользователь отправляет сообщения различным ботам, они всегда будут «идентифицировать себя» с помощью своего уникального id.

. Имейте в виду, что getUpdates показывает идентификатор пользователя и идентификатор из чата.

{
    "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!"
            }
        }
    ]
}

Согласно этого поста , это 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
        }
    }
}
...