Как стать автором
Обновить

Комментарии 23

А ещё можно телескопом гвозди забивать)

Cyr-to-lat это два массива и str_replace

Работа с изображениями есть в документации, можно прям оттуда готовый код взять)

Если прям уж очень хочется видеть какие-то таблицы прям в wp, положи данные в таблицы, тоже ничего сверхсложного)

Неужели wp-программисты не могут 3 строчки кода самостоятельно написать, чтобы не подтягивать целый фреймворк с кучей плагинов?)

Извините, но это шок - контент. Для чего там нужен фреймворк - непонятно. Для работы с апи телеграм в принципе не нужно ничего.

Лиж бы не изучать самописную разработку, любую дичь придумают

WP это прям образчик того, как делать не надо, кладезь антипаттернов. Хуже только битрикс

Хороший пример того как не нужно писать под Wordpress.

В корне WordPress создаем директорию bots

Не осилили создание плагина? Только там и место для любого кастомного кода.

Код на гитхабе - ад.

Автор красавчик - тянуть огромный оверхед в виде Wordpress для создания телеграм-бота?

Я представляю автор удивится, когда узнает про DRY, KISS, SOLID, YAGNI, PSR и зачем всё это придумали)

Что-то какой-то безосновательный хейт WP в комментариях. К примеру если сравнить laravel nova и wp, а так же уровень вопросов и проблем от комьюнити этих cms - то увы, nova не выдержит никакой критики, попробуйте переспорить :)

Ну я бы вам посоветовал не тригериться на это, т.к. все эти хейтеры прибегают с нарративом но без аргументов.

Привет всем.

Такс, кажется "лавина" комментариев остановилась у всех была возможность поправить их, поэтому приготовьте ваши минусы - я на полпути к бану: некоторых комментаторов мне придется закидать кое-чем, а некоторым сказать спасибо. Лишь одно скажу: все запросы на добавление комментариев одобрял.

Давайте сначала разберемся, что такое Framework. Для меня это подготовленная среда для быстрого создания того или иного функционала. Подразумеваю подготовленные функции для выборки из БД, для обработки строк, массивов, работы с админкой, учет пользователей и т.д. Это не сильно расходится с описанием на Вики.

Если мне нужно работать с пользователями, нужно работать с постами из Телеграм, то я не стану делать портяночного бота на двух файлах, и с БД в виде Редиса, и без phpMyAdmin. Я сделаю нормально, структурировано, по выработанному шаблону, а данные буду складировать в БД WP и оттуда же забирать простой функцией get_post_meta или get_user_meta.

@makapohmgn:

  1. Как-то умудрился одним предложением обесценить труд разрабов плагина Cyr-to-lat. Я использую именно плагин, потому что:

    1. Он конвертирует не только русский язык в транслит, но около десятка других.

    2. Можно добавлять из админки свои сочетания перевода.

    3. Если я пользуюсь долгоживущим, авторитетным плагином, то у меня не болит голова об обновлении функционала, скажем, при апдейте версии PHP.

    4. Он может конвертировать существующие ярлыки постов, которые уже в БД.

    5. Если ТГ-бот является дверью к сайту (как в случае доски объявлений), то плагин лучшее решение, чем самопис.

  2. Что из документации Telegram Bot API для работы с изображениями, по-вашему, мне должно помочь? Вы, возможно, не состоянии представить, но я использую, например, WebP Express и Robin Image Optimizer в ситуации, когда сайт наполняется постами из Телеграм или когда просто много изображений чтобы сэкономить место на диске заказчика: сжатие по расписанию, конвертация на лету в webp. Зачем мне лишние доли секунды во время обработки запроса из ТГ, если пережать можно позднее?

  3. "...подтягивать целый фреймворк..." - вы может быть не работали с режимом SHORTINIT, а может быть читали только первый абзац и последний. Работа должна строиться разумно. Если с точки зрения трудозатрат/стоимости и количества пользователей сейчас лучше грузить полный WordPress, то так и надо делать. Если же появляется необходимость, то я включаю SHORTINIT и весь ваш "...целый фреймворк..." превращается в маленького, но очень резвого котенка, с которым все еще удобно играть, несмотря на отключение большого кол-ва функционала.

@SidVisceos:

  1. "Для работы с апи телеграм в принципе не нужно ничего". В каком смысле "не нужно ничего"? Как вы будете визуализировать происходящее в Телеграм? Как дать доступ к настройкам, чтобы заказчик сам управлял ими? Как вести статистику и, главное, подавать ее владельцу бота? Нет, конечно, можно написать бота на file_get_contens... но ваше заявление опрометчивое.

@sasmoney:

  1. "Лишь бы не изучать самописную разработку". Я вам скажу спасибо, если вы уточните о какой именно самописной разработке речь и аргументируете. Стоит отметить, что моя "дичь" тоже является самописной в моментах до WordPress.

@IvanTheCrazy:

  1. Статья про что? Про то, как сделать малой кровью, о том, что отсутствует какая-то структура, что боты пишут точечно под задачу, без возможности расширения функционала, что WordPress отлично экономит время и обладает всем, чтобы написать бота. Вот, посмотрите: предложенный мной набросок структуры позволит воткнуть бота из ВК, ТГ и/или несколько ТГ к одной WP и пользоваться одними и теми же самописными классами и/или функциями от WP, которые понятны многим программистам. Где-то на днях видел статистику по WP и там что-то вроде 40-60% всех сайтов на нем. Это повод задуматься.

@init0

  1. "Только там и место для кастомного кода". Вы правы только в той части, что так рекомендовано. Процентов на 10-20 правы правы в том, что "не осилил", но опыт с плагинами есть, я писал их и сложностей не обнаружил.

    1. Возьмем ситуацию, когда нужно воткнуть не только ТГ, но и ВК бота или несколько ТГ ботов. В плагине сложнее заранее предусмотреть сколько ботов, с каким функционалом понадобится создать, с какими зависимостями.

    2. Также стоит учесть, что плагины грузятся не с момента запроса из ТГ, а на определенном хуке. Как быть в случае если до момента загрузки WP мне нужно проверить, что это запрос из ТГ, что ключ запроса мой, что это не внешний крон, требующий работы без WP?

    3. Возьмем ситуацию, когда проект дорос до того, что требуется бота запускать с режимом работы WordPress SHORTINIT, чтобы не грузить всю CMS. Что тогда делать прикажете? Поверьте, выбор на "В корне WordPress создаем директорию bots" взвешенный.

@CodeMaster125:

  1. Мне кажется, вы ведомы желанием показать свои знания в этих областях. Тогда напишите развернуто. Я считаю, что именно идя по пути минимально достаточного кода, максимально достаточной чистоты, понятности для других разработчиков и заказчиков, я пришел к предложенной структуре. Разумеется, есть над чем работать. Всегда есть что улучшать. Только лишь скажу, что описанные вами подходы они в жилах, так сказать, от рождения. Если же нашли что-то конкретное, то это от того, что где-то не хватает знаний, навыков: тогда ткните носом, апните еще одного отсталого недопрогера, сделайте мир лучше.

  2. Позже выложу подготовленный код, где можно было бы совместно его совершенствовать, ибо цель вполне очевидна: придти к единообразной структуре.

@bO_oblik, спасибо, поддерживаю.

П.С.

В любом случае, каждый комментарий важен. Например, @init0, навел на мысль, что что-то стоит добавить в статью. Некоторые другие комментарии в принципе важны, чтобы понять уровень сарказма, аргументации среднего комментатора хабра, на что не триггериться (С) @init0

Для решения определенных задач, особенно если у заказчика уже есть сайт на wp это норм решение. Ваш коммент выше => ?

Ну вы опять какие-то глупости пишете, ведь ничего не мешает вам сделать php эндпоинт в плагине.

Тут далеко ходить не нужно, заходим в файл TG.php и видим:
1. Все методы - статические, в которые передаются одни и те же параметры
2. Именование переменных в параметрах в snake_case вместо camelCase
3. Устарвеший if else подход
4. Namespace dev_bots_ru\tg\Senders - решили применить все и сразу - тут и snake_case, и маленькими буквами, и с большой.
5. Мы вынесли токен в конфиг, но почему-то api.telegram мы не выносим.
6. Именование файлов - тоже самое, нет единого стиля, все как "под настроение".
7. Где-то мы пишем классы, а где-то - файл с одной функцией
И это только на первый взгляд то, что сразу бросается в глаза.
Без негатива возникает очень много вопросов к такого рода коду, который как бы работает, но что-то явно не так со стилем и пониманием ООП.

Хотел бы обратить ваше внимание на такие скриншоты, поскольку вы не первый заостряете внимание на сам код.

с гита
с гита
из статьи
из статьи
из комментария
из комментария

Хотелось бы лишь добавить, что статья не про код, а про структуру, про сам опыт связки с WordPress. Об этом расставил отметку и в гите, и в статье. Правильно было бы отнестись к этому, как к рассуждению, а не инструкции.

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

Не хотел бы углубляться в перепалку, но, например, snake_case и для WooCommerce не чужд, выносить ли что-то в конфиг - сугубу личное дело, как и необходимость писать классы или функции.

Зря вы так. Оценка кода здесь не к месту.

Не понимаю куда вам нужно было так спешить, что вы сделали "это". У вас тег стоит "структура проекта", вы предлагаете единообразную структуру проекта для телеграм бота, но при этом сами даже не поработали нормально над этой структурой. Создаётся впечатление что вы или шутник, или студент, которому нужно выпустить работу на Хабре какому-то дню для зачёта.

"Я не выдавал код, как готовый к использованию" - тогда в чем ценность данной статьи? Рассказать всем то, что и так очевидно, про то, что нужно запросы отсылать в апи телеграмм, используя язык программирования? Что можно интегрировать в Wordpress работу с телеграм ботом?

Почему я должен принять вашу структуру проекта, если в ней допущены грубейшие ошибки именовании неймспейсов, нет ООП от слова совсем? Почему я должен верить человеку, который даже не Trainee (вывод из кода проекта). В чем преимущество?

Те преимущества, которые описаны выше - наверное только про админ панель соглашусь, но про безопасность это вы лишнее написали. WP - это ещё так дырка из-за плагинов, в которых часто бывают уязвимости.

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

Человек, который хочет направить/подсказать/указать, а не захейтить пишет иначе. Он не использует фразы "это", "под настроение", надменный или учительский тон.

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

Да, я написал про то, что можно интегрировать WordPress с Телеграм-ботом - про то, что вам очевидно. Ценность статьи в том, чтобы привлечь внимание к связке WordPress + TG, в том что такой синтез - это очень просто, в том, как я организую передачу параметра через кнопку, привел оценку своих экспериментов по нагрузке и скорости обработки для определенной ситуации, в том, что есть проблема разрозненного написания кода (возможно, вы не видели ту кучу ботов с фриланса на 1-2-х файлах за 2000 рублей).

Это было про межличностную коммуникацию и понятийные аппараты.

Теперь давайте по поводу претензий к коду.

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

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

Про безопасность.

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

Итого:

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

Да, там вообще кода целостного нет. Я вставил куски, демонстрирующие моменты интеграции с WordPress: создание пользователя, забор данных из постов, из кастомных полей, из ACF и т.д. - для большей наглядности.

Относитесь к наброску, как к трейлеру кинофильма и всё будет хорошо. А есть ли там грубейшие(!) ошибки в именовании неймспейсов... - это так субъективно относительно каждого отдельного проекта, а иногда и внутри одного проекта. Пишет же WP_User_Request, а не WPUserRequest или тот же WP сам пишет методы через snake_case, несмотря на то, что в PHPMailer в camelCase, да и сам местами то так, то сяк пишет (CheckPassword, а не check_password).

Расшифрую приведенный вами namespace: dev_bots_ru/ - это определение разработчика, tg/ (или vk/, или tg_test/) - это сама разработка, ну, а дальше пошли классы по папкам.

Честно скажу, что я не люблю camelCase, потому что глаза его не различают, но именование классов принято в большинстве своем в camelCase, и я так и пишу. Конкретно dev_bots_ru/tg/ - воспринимайте фирменной вставкой, идентификатором, рекламой, более точечным разграничением, меткой авторства - как угодно. Хотя бы потому что она отрезается в index.php. В namespace я пишу через snake_case только этот dev_bots_ru/tg/ единственный кусочек.

В общем и целом опять налили воды не по теме. Зачем мне знать что там за 2000 тысячи рублей кто-то писал в двух файлах, если мы разбираем конкретный тяжелый случай в статье?
Ждем от вас репозиторий, где есть трейты, синглтоны, фабрики для телеграм-бота, если не балабол)

Стараешься подойти к вопросам человека максимально плотно, ответить подробно, объяснить как и почему что-то было сделано - конкретно по каждому пункту претензии или вопроса, а он скатывается до уровня "балабол".

В целом, с первого коммента про "оверхеад" было все понятно, потому что не прочитал про SHORTINIT.

Делал много лет назад аналогично бот, очень доволен скоростью разработки и результатом

Если возможно, напишите, какие в вашем подходе особенности были, в чем отличия, может быть какими-то нюансами поделитесь.

А ещё телеграмного бота можно встроить в Doom, в 1С, в эксель, в кофеварку, в расширение хром, в смарт-часы, в драйвер мышки -- да, это отличные места, куда можно и нужно вкорячивать бота, а потом удивлять друзей "а что, так можно было?".

Отлична статья, не обращай внимание на злые комменты. Я тоже как то тут статейку запилил и на меня тоже набросились адские комментеры))

В общем у каждой системы есть свое предназначение. WordPress на мой взгляд подходит для того что бы быстро проверить концепт идеи. Laravel можно использовать для более серьезных проектов. Туда же python - django

Мой опыт коммерческой разработки показывает что клиенту надо быстро и дешево. По этому многие выбирают WP. Порог вхождения туда низкий. Спеца найти проще. Срок разработки тоже не большой. Если делать бота, то сразу готовая админка, не надо ничего изобретать.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории