169 похожих чатов

Вопрос относительно структуры бота. Если у меня есть функция генерирования инлайн

клавиатуры, она должна быть в том же файле, что и соответсвующий хэндлер? Или можно ее вынести в отдельный файл/папку с другими клавиатурами и импортировать? Просто там же calback_data?

15 ответов

18 просмотров

Куда хочешь

Просто импортируй её из другого файла

Jem- Автор вопроса
AS1 RimUwU
Куда хочешь

просто импорт и все? А колбэкдата подтянется сама?

Смотри по нескольким факторам. Во-первых, у тебя по-любому не один хендлер и не одна клавиатура. Если ты делаешь всё в отдельных файлах, будь последовательным, делай так со всеми хендлерами. И наоборот. Во-вторых, ты должен ориентировать по тому, насколько у тебя раздулся файл. Если он всё ещё хорошо читаем, делай в одном. Если раздулся, выноси

Я за разделение ответственности. Можешь архитектурку чекнуть. Вообще главное — это здравый смысл. Тело (логика) хендлера должна читаться максимально просто; не стоит мешать бизнес-логику и view-слой. То есть api и коннекты к базы уж 100% не имеют права в теле хендлера лежать. Далее, если эта инлайн клавиатура может использоваться только этим хендлером и дублирования кода в будущем не будет, то можешь ее в файл с хендлером положить. Это концепцию разделения ответственности ломает не критично

Я тут глянул твой шаблончик... 1) Почему в переменных окружения явно указан вендор БД.Если бд изменится, то надо ещё и переменные окружения везде менять. Чем плох префикс db_ - непонятно 2) Мелкие косяки по пеп8, в частности по пустым строкам 3) зачем нужен bot["db"] когда тройка умеет в кварги диспетчера 4) Scheduler() и _register_schedulers() выглядит как пиздец 5) Нет гарантии (обещания) что при остановке бота все апдейты будут исполнены т.к. системные сигналы сразу останавливают бота. 6) Лоад конфиг с LRU кэшем. 7) Какого-то хуя приложение знает, в проде оно работает или нет. Этого ему знать не надо. 8) Вложенные классы - зло 9) Дублировать код как здесь - плохо 10) Почему методы работы с юзером из БД реализованы отдельно, а класс - наследник... 11) Блядский синглтон 12) Тексты реплик бота сохранены в .py файлах - очень сильно пиздец.Уж лучше использовать Fluentogram. 13) Модуль кастомных эксепшенов - и нет ни одного.WTF... 14) Ручное указание типов апдейтов для диспетчера когда тройка умеет сама их находить 15) Константа RATE LIMIT в реализации троттлинга - этот параметр следует пробрасывать извне. Оставляю за собой право не заметить что-то сразу и добавить позднее.

Типа на KeyboardInterrupt? Не очень понял.

⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣Andrey @Karych
Типа на KeyboardInterrupt? Не очень понял.

А вообще помимо эксепшенов там и другие болячки

Aleksandr Danilov 🇺🇦
Я тут глянул твой шаблончик... 1) Почему в переме...

о, видел шаблон в англоязычном чате плосую под замечаниями

Alex RootJunior 🇺🇦
каком из? я не просматривал глубоко

try: asyncio.run(main()) except (KeyboardInterrupt, SystemExit): # Log this is pointless pass

Aleksandr Danilov 🇺🇦
try: asyncio.run(main()) except (KeyboardInter...

Я в какой-то момент осознал что это ж пиздец. У нас есть апдейты, которые уже обрабатываются? Да поебать!Выходим! Нет бы Graceful Shutdown, чтоб хендлер на системные эксепшены (если сигнал нормальный, не девятка какая-нибудь) аккуратно отключал диспетчер, проверял какую-нибудь in-memory очередь вроде arq, что всё обработано, и уже потом гасил базу и так далее

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
7
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Карта сайта