2015-07-31 5 views
3

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

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

В настоящее время существует проблема. Когда смещение увеличилось, что касается пользователя №1, который начинает чат с ботом непосредственно перед пользователем # 2. Если # 1 нажимает кнопку проверки после увеличения смещения на # 2, бот не получит сообщение # 1.

p.s. Я не хочу использовать ssl и webhook

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

+0

Я думаю, вы должны прочитать телеграмму getUpdates api снова. – hamed

+0

@hamed спасибо. Я читал его несколько раз, но не мог понять. –

+0

вам не нужно показывать каждому пользователю уникальную ссылку, у каждого пользователя есть уникальный идентификатор пользователя, и вы можете использовать его везде, где оно вам нужно. – hamed

ответ

2

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

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

Так шаги стали:

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

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

Смежные вопросы