Pull to refresh

Comments 28

Я пробовал python-telegram-bot библиотеку, но aiogram кажется на шаг впереди по развитию идёт: к примеру асинхронность была завезена много версий назад, а в PTB только приехала полгода-год как. Лично мне дизайном больше понравилась. Хотя среди 3-4 хайповых библиотек (в кои входит и aiogram и PTB), как мне кажется, критических отличий нет.

Часть кода будет жить в статическом файле и будет провалидирована на старте, изменять её сможет не-технический специалист.

О сколько нам открытий чудных… Вам придется выбирать два из трех: правки нетехническим специалистом, текстовый формат, markup language.

Кроме того у вас фактически получается неявная машина состояний с фиксированными переходами между этими состояниями. В свою очередь либо все выльется в DSL, если продолжите добавлять возможности в yaml описание бота, либо в то, что «менеджеры» смогут максимум опечатки в тексте править.

Желаю удачи:)

Всё так, думаем завезти полную кастомизацию. С другой стороны это всё должно быть опциональным: можно вынести в конфиг только текст и остальное оставить в коде, а можно полностью конфигурировать файлом.

А вот про два из трех не понял, можешь пояснить?

Я когда-то немного ковырялся с ботом. Помню, что было ограничение API. Вот, судя по комменту действительно так.

const parse_mode = "html"; //если ставить Markdown, то не работают обратные уведомления о получении сообщения (не может распарсить отдельные знаки)

Нормальный менеджер никогда не станет переписывать никакой конфигурационный файл с читабельным синтаксисом т.к. если что то пойдёт не так (а что то пойдёт не так обязательно), то виноватым окажется он, а не вы. Поэтому он просто позвонит вам и скажет что надо поменять словами. По тому, что во первых это проще, а во вторых он переложит ответственность с себя на вас.

Ну это если нормальный менеджер. Если менеджер у вас тоже студент без опыта, то он может и сам полезть конфиг править.

Нужен бот, которому менеджер будет говорить, что надо поменять, а бот, в свою очередь, будет вносить правки в конфиг)

Гы-гы. Уж бот точно всё сломает. Поэтому будет так:

Менеджер наговаривает боту аудиосообщение. Бот распознает речь, понимает что надо делать, вносит правки в конфиг, а потом отправляет их разработчику на согласование. Разработчик прослушивает аудиофайл, открывает правку, глазами смотрит, глаза лезут на лоб от увиденного, он переписывает все с нуля и в таком виде аппрувит изменение в код. Т.к. теперь его работа сильно автоматизирована и ему помогает ИИ бот, разработчику сокращают время на закрытие тасков и повышают норму выработки на спринт.

Не, ну я не имел ввиду прям так сразу ИИ бот) Просто тг бот как интерфейс к конфигу, через менюшки-кнопочки

Вот это правильное решение, ориентированное на конечного пользователя

лично знаю менеджеров топовых айти компаний со стажем 12+ лет, которые спокойно манипулируют данными в бд и в некоторых ситуациях ковыряются под капотом сервисов, при наличии интерфейса для подгрузки новой версии файла это кажется вполне адекватным действием для не-технического специалиста, его зона ответственности конечно остается большой

+ в статье говорится об исполнении части кода на этапе запуска приложения, что можно расширить до валидации файла при его подмене

Возможно у нас разные понятия о менеджерах, такое бывает, как мне кажется. В компании, где я работаю, менеджеры в том числе несут ответственность за конфиги разной степени важности, редактируют их, и окают чужие правки.

какой тебе кажется более подходящим и почему?

Две причины, на мой взгляд, которые возможно связаны:

1) Прошло модерацию.

2) Подходит под определение среднего уровня.

Тоже думал над решением проблемы редактирования сообщений, но у меня была мысль сделать интерфейс администратора, где уже можно как минимум править текст сообщений.

Можно и ещё что добавить, но как по мне, лучше уж тогда полноценный конструктор выбрать, чем свой собственный язык разметки писать.

контроля гораздо больше у такого языка разметки, ты все еще кодишь, добавляя элементы конструктора в код, кажется удобно

Мне чем нравится свой язык разметки в отличие от конструктора - весь контроль за кодом в руках программиста. Использование подобного языка не обременяет обязательствами, в отличие от конструктора. В любой момент можно написать хэндлер в привычном стиле, если есть такая необходимость.

Т.е. в этом файле пишется условно основное дерево диалога, а хендлеры, что задействуют уже какую-то бизнес-логику, пишутся вручную?

Ага. У меня комментарий notwizzard не подгрузился на момент написания, так что получился дубль по смыслу:/

Сам я JS-ер, но сейчас дочери помогаю в проектах по изучению Python в связке с телеграм ботами.

Так вот у меня возникала такая идея:

  1. Сделать условно админские права на бота. Если user_id из списка, то доступна команда /admin, /superadmin

  2. По команде /superadmin получаем меню добавить/удалить админов

  3. По команде админ получаем доступ на редактирование конфигурации

  4. Конфигурацию можно хранить в файле json (я не даром джаваскриптер)

  5. Админу в режиме постепенного углубления предлагают дойти до пункта меню требующего коррекции.

  6. Далее спрашиваю, что он хочет откорректировать текст/кнопку?

  7. Ну, а ответ админа собственно подменит это значении в файле конфигурации

  8. Или дать возможность выгрузки текущего файла конфигурации и его загрузки после правок. Можно высылать суперадмину файл на верификацию корректности

    В целом ваша статья попала для меня в актуальную тему, будет приятно если что выстрелит! Надеюсь не в ногу)

Что за велосипеды с кодом?

Вынести нужно не целиковый читаемый код, а редактируемый словарь в стиле ключ/значение, где менеджер ручками будет менять что-то в стиле

"Приветствие": Здравствуйте, с помощью команды чето там сделай четко там

в статье выделяется другая крутая фича - не надо плодить обработчики, иногда достаточно только конфигурации

Привет, я если честно бегло пробежался, но не углублялся. Расскажи, если есть возможность, почему стоит обратить внимание?

В целом не совсем понимаю суть реализации правок в конфига, если уж и говорить о собственных реализациях, то была задача аналогичная, только изменять текст должен был будущий владелец бота. Для этого сделал весь текст в отдельном файле с переменными (если есть StateMachine, то прописываешь новое состояние), затем написал функцию для изменения этого текста на новый, в том "окне", которое необходимо. Реализация проще простого. Хотите придумывать тут велосипед, пожалуйста, но зачем?

здесь речь идет как раз о том, что не придется писать множество однотипных функций, обрабатывающих текст, кнопки и тд из конфига, прямо в yaml файле (что абсолютно эквивалентно json, достаточно только подменить загрузчик) достаточно указать мапперы для пришедших с бэкенда данных и остальные статические параметры, в коде функции плодиться не будут

Sign up to leave a comment.

Articles