Comments 28
А почему именно эта библиотека как основа для телеграмм ботов ?
Я пробовал python-telegram-bot библиотеку, но aiogram кажется на шаг впереди по развитию идёт: к примеру асинхронность была завезена много версий назад, а в PTB только приехала полгода-год как. Лично мне дизайном больше понравилась. Хотя среди 3-4 хайповых библиотек (в кои входит и aiogram и PTB), как мне кажется, критических отличий нет.
Часть кода будет жить в статическом файле и будет провалидирована на старте, изменять её сможет не-технический специалист.
О сколько нам открытий чудных… Вам придется выбирать два из трех: правки нетехническим специалистом, текстовый формат, markup language.
Кроме того у вас фактически получается неявная машина состояний с фиксированными переходами между этими состояниями. В свою очередь либо все выльется в DSL, если продолжите добавлять возможности в yaml описание бота, либо в то, что «менеджеры» смогут максимум опечатки в тексте править.
Желаю удачи:)
Всё так, думаем завезти полную кастомизацию. С другой стороны это всё должно быть опциональным: можно вынести в конфиг только текст и остальное оставить в коде, а можно полностью конфигурировать файлом.
А вот про два из трех не понял, можешь пояснить?
Нормальный менеджер никогда не станет переписывать никакой конфигурационный файл с читабельным синтаксисом т.к. если что то пойдёт не так (а что то пойдёт не так обязательно), то виноватым окажется он, а не вы. Поэтому он просто позвонит вам и скажет что надо поменять словами. По тому, что во первых это проще, а во вторых он переложит ответственность с себя на вас.
Ну это если нормальный менеджер. Если менеджер у вас тоже студент без опыта, то он может и сам полезть конфиг править.
Нужен бот, которому менеджер будет говорить, что надо поменять, а бот, в свою очередь, будет вносить правки в конфиг)
Гы-гы. Уж бот точно всё сломает. Поэтому будет так:
Менеджер наговаривает боту аудиосообщение. Бот распознает речь, понимает что надо делать, вносит правки в конфиг, а потом отправляет их разработчику на согласование. Разработчик прослушивает аудиофайл, открывает правку, глазами смотрит, глаза лезут на лоб от увиденного, он переписывает все с нуля и в таком виде аппрувит изменение в код. Т.к. теперь его работа сильно автоматизирована и ему помогает ИИ бот, разработчику сокращают время на закрытие тасков и повышают норму выработки на спринт.
Вот это правильное решение, ориентированное на конечного пользователя
лично знаю менеджеров топовых айти компаний со стажем 12+ лет, которые спокойно манипулируют данными в бд и в некоторых ситуациях ковыряются под капотом сервисов, при наличии интерфейса для подгрузки новой версии файла это кажется вполне адекватным действием для не-технического специалиста, его зона ответственности конечно остается большой
+ в статье говорится об исполнении части кода на этапе запуска приложения, что можно расширить до валидации файла при его подмене
Возможно у нас разные понятия о менеджерах, такое бывает, как мне кажется. В компании, где я работаю, менеджеры в том числе несут ответственность за конфиги разной степени важности, редактируют их, и окают чужие правки.
Почему уровень статьи средний?
Тоже думал над решением проблемы редактирования сообщений, но у меня была мысль сделать интерфейс администратора, где уже можно как минимум править текст сообщений.
Можно и ещё что добавить, но как по мне, лучше уж тогда полноценный конструктор выбрать, чем свой собственный язык разметки писать.
контроля гораздо больше у такого языка разметки, ты все еще кодишь, добавляя элементы конструктора в код, кажется удобно
Мне чем нравится свой язык разметки в отличие от конструктора - весь контроль за кодом в руках программиста. Использование подобного языка не обременяет обязательствами, в отличие от конструктора. В любой момент можно написать хэндлер в привычном стиле, если есть такая необходимость.
Сам я JS-ер, но сейчас дочери помогаю в проектах по изучению Python в связке с телеграм ботами.
Так вот у меня возникала такая идея:
Сделать условно админские права на бота. Если user_id из списка, то доступна команда /admin, /superadmin
По команде /superadmin получаем меню добавить/удалить админов
По команде админ получаем доступ на редактирование конфигурации
Конфигурацию можно хранить в файле json (я не даром джаваскриптер)
Админу в режиме постепенного углубления предлагают дойти до пункта меню требующего коррекции.
Далее спрашиваю, что он хочет откорректировать текст/кнопку?
Ну, а ответ админа собственно подменит это значении в файле конфигурации
Или дать возможность выгрузки текущего файла конфигурации и его загрузки после правок. Можно высылать суперадмину файл на верификацию корректности
В целом ваша статья попала для меня в актуальную тему, будет приятно если что выстрелит! Надеюсь не в ногу)
Статья имба, легко и просто, спасибо
Что за велосипеды с кодом?
Вынести нужно не целиковый читаемый код, а редактируемый словарь в стиле ключ/значение, где менеджер ручками будет менять что-то в стиле
"Приветствие": Здравствуйте, с помощью команды чето там сделай четко там
А вы не смотрели в сторону aiogram i18n?
В целом не совсем понимаю суть реализации правок в конфига, если уж и говорить о собственных реализациях, то была задача аналогичная, только изменять текст должен был будущий владелец бота. Для этого сделал весь текст в отдельном файле с переменными (если есть StateMachine, то прописываешь новое состояние), затем написал функцию для изменения этого текста на новый, в том "окне", которое необходимо. Реализация проще простого. Хотите придумывать тут велосипед, пожалуйста, но зачем?
здесь речь идет как раз о том, что не придется писать множество однотипных функций, обрабатывающих текст, кнопки и тд из конфига, прямо в yaml файле (что абсолютно эквивалентно json, достаточно только подменить загрузчик) достаточно указать мапперы для пришедших с бэкенда данных и остальные статические параметры, в коде функции плодиться не будут
Конфигурация вместо кода при написании Telegram-бота