Available in: English, Русский, Українська
Люди забывают информацию. В течение часа до 60% новой информации может быть утеряно, к концу недели сохранится лишь около 10%. Однако регулярное повторение информации поможет справиться с этой проблемой. Этот бот использует проверенный метод карточек для помощи пользователям в усвоении языков, истории и многого другого. Выучи однажды, помни всегда. Запустите бота: https://t.me/memo_card_bot
- Вы турист в новой стране и хотите овладеть основами иностранного языка.
- Вы разработчик и хотите лучше запомнить сложные команды bash или программные конструкции.
- Вы изучаете медицину и стремитесь запомнить все латинские названия мышц.
- Вы хотите улучшить свои знания в географии, запомнить страны, столицы, крупные города, горы, реки и другие географические факты.
- Вы изучаете музыку и хотите практиковаться в гармонии.
- Вы изучаете историю и хотите сохранить ключевые исторические факты.
- Вы учитель английского языка и хотите поделиться своими колодами со своими студентами.
Хотя существуют бесплатные приложения, такие как Anki, они имеют ограничены в функциональности:
- Anki не предлагает удобной возможности для пользователей делиться колодами с друзьями или коллегами вне функции общих публичных колод. Кроме того, чтобы поделиться колодой, требуется переключение между настольной и веб-версиями Anki. С ботом Memo Card пользователи могут легко делиться колодами прямо в Telegram.
- Для дополнительных функций в Anki пользователи должны устанавливать плагины, которые ограничены только настольной версией. Однако бот Memo Card доступен на Mac, Windows, iOS, Android и веб-версиях Telegram.
- У Anki нет автоматических push-уведомлений для предупреждения пользователей о предстоящих обзорах. Это может быть легко решено с помощью push-уведомлений в Telegram (над этой функцией идёт работа).
Этот проект состоит из двух приложений: фронтенда и бекенда, оба написаны на TypeScript. Бекенд создан с использованием функций Cloudflare.
Cloudflare Pages — хороший выбор для создания мини-приложения Telegram.
- Доменные имена для фронтенда и бекенда с включенным SSL.
- Автоматический CI/CD; простой
git push
разворачивает как фронтенд, так и бекенд. - 100 000 бесплатных запросов в день.
- UI для логов функций для каждой функции.
- Получите свой API-ключ у BotFather.
- Установите зависимости, используя
npm i
. - Скопируйте файл c переменными окружения для API:
cp .dev.vars.example .dev.vars
. Этот файл использует Cloudflare Workers для локальной разработки. Подробнее об этом вы можете узнать здесь. - Обновите переменную среды
BOT_TOKEN
, чтобы она соответствовала вашему API-ключу. - Запустите функции Cloudflare командой
npm run dev:api:start
. - Запустите фронтенд-проект командой
npm run dev:frontend:start
. - Чтобы сделать ваши фронтенд и API доступными в интернет и предоставить SSL, вы можете использовать ngrok. После регистрации вы получите 1 бесплатный стабильный домен. Получите его здесь и запустите
ngrok http --domain=<your_domain>.ngrok-free.app 5173
. - Сообщите BotFather об обновлении настроек: перейдите в Настройки бота -> Кнопка меню -> Изменить URL кнопки меню и введите полученный ранее домен.
После выполнения этих шагов достаточно выполнить команды npm run dev:api:start
, npm run dev:frontend:start
и ngrok
, чтобы запустить локальную версию бота.
Для деплоя достаточно выполнить git push
как только вы подключите ваш репозиторий к панели Cloudflare. Перейдите в Cloudflare Dashboard -> Workers & Pages -> Overview -> выберите вкладку Pages -> нажмите Connect to Git.
В панели Cloudflare добавьте переменные окружения BOT_TOKEN
, SUPABASE_KEY
,
SUPABASE_URL
.
Проект использует supabase в качестве основного хранилища данных. Это облачная реляционная база данных с UI и JavaScript-клиентом для общения по API. Под капотом используется PostgreSQL, а значит можно использовать все его возможности.
Последовательность шагов:
- Регистрация в supabase.com
- Добавление проекта
- Скопировать
SUPABASE_KEY
,SUPABASE_URL
из настроек проекта - Для локальной разработки вставить
SUPABASE_KEY
иSUPABASE_URL
в.dev.vars
- Для продакшн вставить переменные окружения в Cloudflare dashboard.
Для знакомства с supabase рекомендуется прочитать официальное руководство.
Данные, полученные через Mini App, должны проверяться для предотвращения несанкционированного доступа. В этом приложении реализация основана на Web Crypto API. Cloudflare Workers работают в уникальной среде, которая не является ни браузером в привычном понимании, ни традиционной серверной средой, как Node.js. Функции работают в сети Cloudflare, и их среда выполнения напоминает Service Worker веб-браузера. Именно поэтому мы должны использовать Web Crypto API для проверки данных, полученных через Mini App. В этом приложении данные пользователя передаются через заголовки HTTP и проверяются при каждом API-запросе.