Бот Telegram: использование смещения в методе getUpdates

Я хочу создать бот-телеграмму для подписки на фиды, чтобы подписчики могли получать обновления сайта. Но мне нужен пользователь, чтобы начать чат с моим ботом. Я буду использовать глубокие ссылки в соответствии с этим URL:
https://core.telegram.org/bots#deep-linking
(при условии, что есть 2 пользователя)

  1. Покажите ссылку ниже для пользователя # 2
    https://telegram.me/MyBot?start=$ UNIQUE_CODE
  2. Пользователь # 2 нажимает на ссылку и начинает чат с ботом.
  3. Пользователь № 2 возвращается на мой сайт и нажимает кнопку проверки.
  4. Сайт делает запрос getUpdates и находит chat_id, связанный с уникальным кодом пользователя.
  5. Смещение будет увеличено на 1.

Теперь есть проблема. При увеличении смещения пользователь # 1 начинает чат с ботом непосредственно перед пользователем # 2.
Если # 1 нажмет кнопку проверки после увеличения смещения на # 2, бот не получит сообщение # 1.

постскриптум Я не хочу использовать ssl и webhook

Извините за плохой английский.

4

Решение

Вы почти правы в том, чего пытаетесь достичь. Две вещи:

  • Шаг 3 не нужен.
  • Вы должны хранить этот $ unique_id где-нибудь,
    вместе с именем пользователя на вашем сайте. Потом, когда это
    человек нажимает на вашу ссылку с вашим уникальным идентификатором, вы можете связать
    userId пользователя к имени пользователя.

Итак, шаги становятся:

  1. Создайте уникальный код (назовем его $ unique_code). Сохранить этот код
    вместе с именем пользователя
    в настоящее время вошли на ваш сайт (давайте назовем это $ username) в базе данных.
  2. Показать пользователю # 2 ссылку с этим уникальным кодом (https://telegram.me/MyBot?start=$ UNIQUE_CODE)
  3. Пользователь нажимает на ссылку, после чего ваш бот получает сообщение с кодом $ unique_code (‘/ start $ unique_code’).
  4. Бот связывает $ unique_code с $ username и сохраняет chat_id пользователя, отправившего сообщение, в базу данных. (message.chat.id — см. https://core.telegram.org/bots/api#message)

Теперь, когда вы хотите отправить сообщение на $ username, просто найдите их chat_id в базе данных и отправьте сообщение на этот chatId (https://core.telegram.org/bots/api#sendmessage).

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]