Комментарии 9
Особо сильно не вчитываясь в саму статью(был интересен только код), могу написать несколько вещей
1)Не используйте(пожалуйста) call.message.anwser при ответе на inline. Есть edit_text/подобная функция. Telegram ждёт ответа на кнопку(это хоть здесь и реализовано, но накидывает много лишних сообщений, которые можно перекрыть одним edit_text)
2)Странная логика написания кода. Где-то импорта логически разделены(через Enter), где то посредине импорта стоит sys) Где-то один отступ перед функцией, а где-то два. Странная логика
3)Закрывать через
setTimeout(() => {
window.Telegram.WebApp.close();
}, 100);
необязательно) Можно повесить реакцию на кнопку "закрыть/похожую по логике кнопку"
4)Очень опционально, но улучшает пользовательский опыт - постановка цветов темы из телеграмма (в документации в красках все расписано). То же касается MainButton, showAlert и тд
Сама тема интересная, но не особо раскрыта тема telegram mini apps js(там очень много интересных функций есть, но про них почему-то никто не говорит)
1)Не используйте(пожалуйста) call.message.anwser при ответе на inline. Есть edit_text/подобная функция. Telegram ждёт ответа на кнопку(это хоть здесь и реализовано, но накидывает много лишних сообщений, которые можно перекрыть одним edit_text)
Бывают разные ситуации. Я писал больше 12-ти крупных статей по аиграм и очень хорошо осведомлен о всех методах. В текущем коде мне показался такой подход более уместный.
2)Странная логика написания кода. Где-то импорта логически разделены(через Enter), где то посредине импорта стоит sys) Где-то один отступ перед функцией, а где-то два. Странная логика
Это не логика написания кода, а логика его сюда вставки. Когда статья перекатывает за 20 минут чтения начинаются очень серьезные глюки в оформлении. Кроме того, это никакого отношения к логике не имеет.
"посредине импорта стоит sys". Расскажите, пожалуйста, а как в текущей логике кода получить тот же результат миграций Alembic без использования "посередине импорта sys". Вы знакомы с этой технологией? Приложение запускается с корня проекта. Нужно к нему прикрутить модели алхимии и прочее. Просто интересно, просвятите)
3)Закрывать через
Это классический синтаксис и как по мне он более понятный.
4)Очень опционально, но улучшает пользовательский опыт - постановка цветов темы из телеграмма (в документации в красках все расписано). То же касается MainButton, showAlert и тд
Ограничения. Я всегда стараюсь в подобных проектах отходить от готового кода JavaScript телеграм. Как по мне он сильно ограничивает.
Сама тема интересная, но не особо раскрыта тема telegram mini apps js(там очень много интересных функций есть, но про них почему-то никто не говорит)
Есть FastApi и JavaScript. Зачем использовать чужое если можно написать полностью свое и под себя?)
Я думаю причина многих вопросов в том, что вы не вчитывались в статью, а, точнее, не читали.
В текущем коде мне показался такой подход более уместный.
С точки зрения пользователя - показатель незнания API у разработчика. Хотя-бы ради приличия delete перед answer вставляйте)
"посредине импорта стоит sys". Расскажите, пожалуйста, а как в текущей логике кода получить тот же результат миграций Alembic без использования "посередине импорта sys"
Здесь имеется в виду обрывание импортов ради вызова sys, да, с Alembic я не знаком, но не нудаю что прям жизненно необходимо написать 2 импорта, потом вызов sys(в котором я не вижу ничего плохо, для меня странно только его расположение в коде), а потом только остальные импорты.
Это классический синтаксис и как по мне он более понятный.
Классический синтаксис - через const, куда помещается Telegram.WebApp. А закрытие через setTimeout - очень странная штука(никогда не видел код, который бы так закрывал mini app)
Ограничения. Я всегда стараюсь в подобных проектах отходить от готового кода JavaScript телеграм. Как по мне он сильно ограничивает.
Никогда такого не заметил. Даже наоборот - сильно улучшал пользовательский опыт. Да, есть определенные ограничения, но они опциональны(в том плане, что если вы хотите - вы можете получить готовый код, но с определенными ограничениями). Очень часто замечаю, что в Mini App только одна тема(если делаете свои цвета - делайте 2 темы тогда, темную и светлую), Teelgram позволяет получить состояние темы пользователя (вместе с эвентом кстати)
Есть FastApi и JavaScript. Зачем использовать чужое если можно написать полностью свое и под себя?)
А зачем тогда использовать FastAPI, если есть socket?)
А если без шуток - не изобретайте велосипед, все равно одно колесо будет квадратное, а другое треугольное.
Здесь имеется в виду обрывание импортов ради вызова sys, да, с Alembic я не знаком, но не нудаю что прям жизненно необходимо написать 2 импорта, потом вызов sys(в котором я не вижу ничего плохо, для меня странно только его расположение в коде), а потом только остальные импорты.
Я считаю, что вам нужно разобраться в вопросе, а после делать замечания к таким кускам кода.
В данном случае мы «обманули» Alembic, заставив его думать, что он находится в папке app
. Это необходимо, чтобы Alembic правильно обрабатывал импорты и понимал, как они работают в контексте проекта.
Благодаря такому подходу появилась возможность выполнять импорт класса Base и модели. То есть, это, действительно "жизненно важно", так как по другому Alembic работать не будет.
А зачем тогда использовать FastAPI, если есть socket?)
Судя по этой шутке вы и с FastApi не особо знакомы, да?
Судя по этой шутке вы и с FastApi не особо знакомы, да?
Почему? Много писал на FastAPI и считаю его хорошей библиотекой для создания API. Просто шутка заключается в том, что вы создаёте свой велосипед, а не используете готовый(который кстати стоит рядом и просит, чтобы вы его использовали)
В данном случае мы «обманули» Alembic, заставив его думать, что он находится в папке app. Это необходимо, чтобы Alembic правильно обрабатывал импорты и понимал, как они работают в контексте проекта.
Тут хорошо, тогда вопросов нет. Просто для меня это правда выглядело странно, но если так он работает - ладно.
FastApi в этом проекте закрыл вопрос подъема бота (вебхуки) и отрисовал страницы для MiniApp. Если я уже прикрутил его, почему тогда не использовать его по прямому назначению? По вашей анологии в гараже стоит и велосипед и мотоцикл. Зачем ехать на велосипеде?
А как вы работаете с базами данных в своих FastApi приложениях без Alembic?
А как вы работаете с базами данных в своих FastApi приложениях без Alembic?
Я впринципе не использую алхимию как таковую. Вместо нее - tortoise orm, более удобный и не надо заворачивать каждый раз в сессию.
Если я уже прикрутил его, почему тогда не использовать его по прямому назначению?
А я говорил что это плохо? Просто я прошу не крутить велосипеды в js коде и все. А с FastAPI - просто шутка.
В основе проекта — асинхронное взаимодействие с базой данных SQLite с помощью SQLAlchemy, что позволит нам реализовать масштабируемое и эффективное приложение.
Я может быть не до конца осознаю масштабы масштабирования SQLite.. Хотелось бы узнать что за масштабирование тут имеется ввиду.
Telegram Web App, FastAPI и вебхуки в одном приложении: Создаем Telegram-бот с веб-интерфейсом для приема заявок