-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature(bot): inline-button for registrations #294
base: develop
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Некоторые сворачивают кнопку и не могут потом ее найти, поэтому нужны еще инлайн кнопка и в меню.
- Инлайн кнопка у тебя выдается обрезанная.
- В меню можно добавлять без FotFather https://docs.python-telegram-bot.org/en/stable/telegram.menubuttoncommands.html
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Мне кажется добавление кнопок везде звучало лучше чем получилось. Может стоит убрать в меню? @Ivan-Skvortsov @ADesBiysk
Мне inline кнопка не очень нравится. Я снял видео и задал вопрос в coreteam. |
Насколько я понял из доков телеги, для вебапп, запущенного из инлайн кнопки и из меню можно использовать answerWebAppQuery . Если резюмировать, то порядок действий для получения данных из вебапп должен быть такой:
P.S.: по сути, даже в answerWebAppQuery нет нужды, мы просто можем повесить на мейн баттон вебаппа скрипт, который выполняет п.п.1 и 2 и закрывает вебапп. А сообщение пользователю отправляем уже с бэка, в зависимости от результатов обработки P.P.S.: ну и чтобы не делать дополнительные шаблоны и логику на бэке, есть смысл переделать и также и текущую реализацию. Могу где-то ошибаться, поправьте меня) |
Ребята, подскажите @Ivan-Skvortsov @ADesBiysk @AntonRev Я просто не знаю js и поэтому очень много времени трачу на него :( не хотелось бы зависать над решением, которое не пригодится впоследствии) |
Сейчас реализовано не так как хотелось бы. Пример, как должно работать можно посмотреть в этом боте: https://t.me/DurgerKingBot |
Понял, буду переделывать |
Version #2. Added InlineButton & MenuButton to call registration process template. Added new handlers.
…aryery_backend into feature/new_registration_buttons
Version # 2. Added InlineButton & MenuButton to call registration process template. Added new handlers. Temporarily commented out checking of the secret token in the `webhook` endpoint.
77e32fa
to
e14382d
Compare
Version # 2. Added InlineButton & MenuButton to call registration process template. Added new handler. Temporarily commented out checking of the secret token in the `webhook` endpoint.
@Ivan-Skvortsov @ADesBiysk @AntonRev Понятно, что это не окончательный вариант, посмотрите, что выходит. Так пойдет?
|
} | ||
}); | ||
} else { | ||
tg.sendData(JSON.stringify(data)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Предлагаю от sendData вообще отказаться и все кейсы (кейбоард кнопка, инлайн кнопка и меню) обрабатывать одинаково.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Если это возможно, конечно)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
скорее невозможно, так как данные о чате и пользователе отсутствуют при активации формы регистрации с keyboard button в initDataUnsafe
, а больше и взять то негде
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Неприятно, конечно)
Получается, нам нужно либо отказываться от кейбоард кнопки, либо писать отдельно логику для кейбоард и отдельно для инлайн/меню?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
почему отказываться?
сейчас же работает. чуток совсем добавилось логики для инлайн/меню кнопок.
для пользователя разница лишь в способе оповещения о получении данных с формы: при активации с кейборд кнопки - встроенное телеграмовское оповещение, а при активации с меню/инлайн кнопки - отправка ботом сообщения от имени пользователя в чат.
bot_instance.add_handler( | ||
TypeHandler( | ||
dict, | ||
get_web_app_query_data, | ||
) | ||
) | ||
bot_instance.add_handler(MessageHandler(Regex(RE_PATTERN), web_app_data)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Довольно запутанно получилось, на мой взгляд)
Если я правильно понял назначение всех этих хэндлеров - ты пытаешься работать вокруг бота/чата телеги.
Попробуй посмотреть на эту задачу с другой стороны.
Фактически, у тебя есть полноценный фронт (вебапп) и полноценный бэкенд (собственно, наше приложение). При этом в бэкенде у тебя есть доступ к боту (bot_instance, который лежит в app.state).
То есть, для обработки данных из вебапп, чат телеги тебе не нужен вообще. Просто работай с ними как с любыми другими данными)
Вот, например, я накидал тестовый эндпойнт, который принимает запрос с данными из вебапп и отправляет пользователю инлайн сообщение, что все ок (взял кусок из твоего кода).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Ivan-Skvortsov
если это для того, чтобы только избавиться от функции get_web_app_query_data
, то да, спасибо, попробую сделать так.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Ivan-Skvortsov эта функция будет срабатывать получается вразрез с очередью бота update_queue
, не могу оценить - насколько это критично? ощущение, что это не очень хорошо
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Мне кажется, в данном случае нам это неважно. Я думаю, работу с вебапп нужно рассматривать как работу бэка с фронтом)
Могу ошибаться, конечно)
Version # 3. Added InlineButton & MenuButton to call registration process template. Added new handler. Added new endpoint for a requests with data coming from registration form launched via the keyboard button.
…aryery_backend into feature/new_registration_buttons
Version # 4. Added InlineButton & MenuButton to call registration process template. Added new handler. Added new endpoint for a requests with data coming from registration form launched via the keyboard button. Changed the function of the registration template rendering in terms of adding a url from the settings-file to receive requests with data launched via `inline/menu` button.
…aryery_backend into feature/new_registration_buttons
Version # 5. Added InlineButton & MenuButton to call registration process template. Added new handler. Added new endpoint for a requests with data coming from registration form launched via the keyboard button. Changed the function of the registration template rendering in terms of adding a url from the settings-file to receive requests with data launched via `inline/menu` button.
…aryery_backend into feature/new_registration_buttons
…aryery_backend into feature/new_registration_buttons
Version # 6. Added InlineButton & MenuButton to call registration process template. Added new handler. Added new endpoint for a requests with data coming from registration form launched via the keyboard button. Changed the function of the registration template rendering in terms of adding a url from the settings-file to receive requests with data launched via `inline/menu` button.
Added
InlineButton
andMenuButton
to call registration process template.https://www.notion.so/Bot-cae1343ec01d42a897219b42f3add7ae