Open WhiteHodok opened 5 months ago
Вставляй пустую строку между каждой группой импортов.
Импорты должны быть сгруппированы в следующем порядке:
1. импорты из стандартной библиотеки
2. импорты сторонних библиотек
3. импорты модулей текущего проекта
Куча if/elif это конечно круто, но попробуй match/case
Не используй глобальные переменные!
[!TIP] Если надо хранить данные пользователя, используй базу данных. Если надо передать данные из хендлеров используй state.get_data()
Не советую хранить большие объемы текстовых данных прям в боте (joke.py), лучше воспользуйся json или бд
Всегда проверяй код перед отправкой, вот например повторяющийся хендлер (отразил, так сказать, русскую культуру, сделал матрешку)
[!IMPORTANT] Ознакомься с PEP 8 и будь внимательнее
Никогда не выкладывайте токены на GitHub
Храните все ключи и токены в файле .env, предварительно добавив его в .gitignore
README.md очень важен, нужно расписывать полный процесс запуска и функционал
"Многие очевидные вещи - неочевидны"
requirements.txt нужен (об этом говорилось в фидбеке от Влада)
Файл .idea - лишний
*Стейты должны быть везде! Если хендлер для "всего" пишем state = ""**
Стейты в боте это его логика, представляй работу с ботом как разговор с человеком.
Нельзя прыгать из раздела в раздел
(Отсутствие кнопки не говорит о том, что это кнопку нельзя прописать руками в чат)
Все стейты должны быть описаны в отдельном файле, а не где-то посреди кода
Никто не будет бегать и искать по коду каждый отдельный state
Для шуток можно было воспользоваться API или парсить их с сайта, было бы интереснее
Кнопки тоже расписываются в отдельном файле. (Есть редкие исключения)
[!WARNING]
- Мнение ревьюера является субъективным и носит рекомендательный характер!!!
- Некоторые пункты могут повторяться у других ревьюеров (являются дополнениями)
- При необходимости Менторы направления Telegram Bot всегда могут устроить созвон в нашем канале Discord и обсудить все тонкости кода. (Писать на аккаунт Student labs)
- Фидбек Ментора не является окончательным перечнем ошибок и недочетов кода (это скорее советы, которые мы посчитали необходимыми)
Disclaimer ! Это субъективное мнение ревъюера, оно носит рекомендательный характер
По репозиторию
По самому боту
Про машину состояний
Лучше объявлять классы состояний после всех необходимых процедур импорта и всего прочего, до начала описания команд бота, либо растаскивать состояния в отдельный файл для каждой роли/меню
Реализация языков в боте, это конечно классно, но нужно думать о том, чтобы тебе и пользователю было удобно, для этого можно пользоваться различными библиотеками для билингва или, сделать вот такое решение как тут https://ru.stackoverflow.com/questions/705042/python-telebot-Как-реализовать-многоязычного-бота
Если использовать машину состояний, то использовать на полную, почему при использовании кнопки мы не указываем ей единственное/множественное состояние из которого она работает? Пример: Я введу какой-то TEXT, который выбьет меня из нужного состояния и вгонит в ненужное (допустим я смогу попасть в админку бота(если она есть))