@ImZero

Как узнать User_id в inline mode?

Привет. Я решил сделать бота с inline mode.
Мне нужно чтобы Inline mode передавал реф.ссылку, но я не понимаю как получить user_id...
Вот пример ->
63e6f075a7a25649635646.png

Вот код ->
Скриншот фрагмента кода удалён модератором.
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
У объекта query, который передаётся в inline query handler, есть поле from_user, содержащее объект пользователя. Там есть и его id. Например:

@bot.inline_handler(lambda query: len(query.query) > 0)
def query_text(inline_query):
    print (inline_query.from_user.id)


(это для телебота, другие библиотеки могут иметь некоторые отличия)

Надо понимать, что inline mode - это лишь средство помощи в написании сообщения от имени пользователя, а не полноценное средство взаимодействия с пользователем. Результат ответа от бота может кэшироваться на серверах Телеграма и не перезапрашиваться при каждом запросе пользователя. А самое главное, что бот не может узнать, в какой чат отправляется сообщение, да и оно может не отправиться вообще. Единственный вариант - это если бот присутствует в нужном чате и имеет доступ к сообщениям, тогда он может ссылку via_bot с информацией о боте.

В целом да, можно по user_id генерить реферальный хеш, а в качестве результата отдавать реферальную ссылку. Но нужно учитывать все ограничения режима и не ожидать от него слишком многого.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы