Skip to content

krezefal/eng-tg-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Telegram Bot for English

Телеграм-бот для изучения английских слов по методу интервальных повторений, основанному на алгоритме SM-2.

Стек

  • Go
  • PostgreSQL
  • gopkg.in/telebot.v4
  • golang-migrate (миграции)

Переменные окружения

Используется .env - подхватывается автоматически.

Required

  • TOKEN — токен Telegram-бота
  • DB_DSN — строка подключения к PostgreSQL

Optional

  • POLLING_TIMEOUT — timeout long polling, по умолчанию 10s
  • DEBUGtrue/false, по умолчанию false
  • LOG_FORMATconsole или json, по умолчанию console
  • TIME_FORMAT — формат времени в console-логах, по умолчанию 2006-01-02 15:04:05

Сборка и запуск

1) Миграции

mkdir -p ./bin
go build -o ./bin/migrator ./cmd/migrator
./bin/migrator --up

2) Сиды

mkdir -p ./bin
go build -o ./bin/seeder ./cmd/seeder
./bin/seeder --up --file [filepath]

Запуск с дефолтным сидом:

./bin/seeder --up --file ./seeds/random_pool_a2_basic_50.json

3) Сам бот

mkdir -p ./bin
go build -o ./bin/bot ./cmd/bot
./bin/bot

Или без сборки:

go run ./cmd/bot/main.go

См. Makefile для автоматизации сборки и запуска.

Юзкейсы

  • Onboarding:

    • /start — регистрация пользователя (идемпотентно), приветствие
    • /removeMe — удаление пользователя и связанных данных
  • Catalog:

    • /dict — список публичных словарей
    • /mydict — список словарей пользователя
    • Подробнее — карточка словаря + примеры слов
  • Subscription:

    • Подписаться / Отписаться
    • при отписке показывается подтверждение Да/Нет
    • при подтверждении отписки удаляется прогресс словаря
  • Learning:

    • вход: /learn <номер> или кнопка Учить у словаря
    • показывается случайное новое слово (которое еще не трекалось у пользователя)
    • действия:
      • Добавить в словарь (проставляется status=learning)
      • Не показывать (проставляется status=blocked и больше не показывается пользователю)
      • Повторить (логика повторения изученных слов)
      • Назад (возврат в меню)
  • Review:

    • вход: /review <номер>, кнопка Повторить у словаря, либо переход из режима обучения
    • Старт — показывает слова, у которых наступил срок повторения (due)
    • оценка слова по 4-балльной шкале (Не помню/Трудно/Легко/Помню!) с пересчетом интервала по алгоритму SM-2
    • если due-слов нет, предлагается форс-режим: выбираются слова по ближайшей дате повторения
    • Закончить подход / В главное меню — завершение сессии повторения

Примечания

  • seeder выполняет операции идемпотентно.
  • migrator выполняет операции идемпотентно.
  • Из 2-х типов словарей сейчас поддерживаются только random_pool-словари.
  • Названия словарей должны быть уникальными (среди всех авторов) - это констрейнт данной системы.

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages