Бот для Telegram на Node.js, TypeScript и Telegraf js

แชร์
ฝัง
  • เผยแพร่เมื่อ 24 ธ.ค. 2024

ความคิดเห็น • 117

  • @PurpleSchool
    @PurpleSchool  ปีที่แล้ว +3

    🔗 Ссылки:
    ⚡Полный курс по Node.js с нуля, с архитектурой и паттернами: purpleschool.ru/course/nodejs
    ⚡Курс по TypeScript и паттернам проектирования: purpleschool.ru/course/typescript

    • @webdeveloper8826
      @webdeveloper8826 2 หลายเดือนก่อน

      Что за текстовый редактор? У вас. На видео

    • @PurpleSchool
      @PurpleSchool  2 หลายเดือนก่อน

      @@webdeveloper8826 Neovim

  • @germanmanvelov
    @germanmanvelov 9 หลายเดือนก่อน +1

    Спасибо, было полезно в качестве наглядного базового бота для вникающего в эту сферу.

    • @PurpleSchool
      @PurpleSchool  9 หลายเดือนก่อน +1

      Пожалуйста

    • @germanmanvelov
      @germanmanvelov 9 หลายเดือนก่อน

      @@PurpleSchool И курсы у вас классные. Я уже прошел по Nest, прохожу по TS, и далее микросервисы и Node. Хотелось бы, конечно, увидеть по Angular еще. Сайт с курсами тоже оч нравится, как сделан.

    • @PurpleSchool
      @PurpleSchool  9 หลายเดือนก่อน +1

      @@germanmanvelov спасибо! Старались сделать максимально удобную платформу.

  • @sergeymurashov4365
    @sergeymurashov4365 ปีที่แล้ว +5

    Объяснение прекрасное.
    Отдельный плюсик за чистоту речи )

  • @АртёмИвасечкин
    @АртёмИвасечкин 8 หลายเดือนก่อน +2

    Есть сылка на гитхаб (код из видео)?

  • @luckytima2315
    @luckytima2315 ปีที่แล้ว +8

    КАЙФФФФ!! Вы прям мысли читаете , везде на питоне боты (

  • @BogdanRedkin
    @BogdanRedkin ปีที่แล้ว +1

    Дякую за відео🙏 Цікавий та корисний контент😃

  • @evgeniykireev8572
    @evgeniykireev8572 6 หลายเดือนก่อน

    Cупер полезное видео! Спасибо вам)

    • @PurpleSchool
      @PurpleSchool  6 หลายเดือนก่อน

      Пожалуйста!

  • @ТкачукИгорь
    @ТкачукИгорь ปีที่แล้ว +4

    Отличное видео! Спасибо!
    Понравилось про структурирование приложения.
    Очень интересно посмотреть на практическое применение DI.
    Жду с нетерпением продолжения!

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว +1

      Хорошо) так же можно глянуть у меня в курсе, разобрано детально

  • @diggerdog001
    @diggerdog001 ปีที่แล้ว

    Топ контент подъехал очередной от Антохи 🔥🔥🔥

  • @ilyamartynov2743
    @ilyamartynov2743 ปีที่แล้ว +11

    Я бы посмотрел реализацию с архитектурой на NestJS

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว +3

      Буду иметь ввиду)

  • @uzarixx
    @uzarixx ปีที่แล้ว +3

    Когда будет видео как создавать сцены ?

  • @dev-zb9mg
    @dev-zb9mg 7 หลายเดือนก่อน

    Да, видео по логгированию было круто! Если можно, рассмотрите Pino, пожалуйста.

  • @19n1ght
    @19n1ght ปีที่แล้ว +2

    Почему bot в конструкторе Command имеет модификатор доступа public а не protected?

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Согласен, protected было бы правильнее

    • @19n1ght
      @19n1ght ปีที่แล้ว

      @@PurpleSchool хорошее видео! и вообще на канале много полезного. спасибо!

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Спасибо!

  • @romankornienko7268
    @romankornienko7268 9 หลายเดือนก่อน

    Буду рад, если добавите видео про то, как организовать работу со сценам (scenes)

  • @jeremiah-w7e
    @jeremiah-w7e ปีที่แล้ว

    17:00 а чего не сделать что-то типа const configService = new ConfigService(); export configService; в самом конфиг сервисе и все будуть брать один объект конфига.

  • @shoxruxbekmamadaliyev
    @shoxruxbekmamadaliyev ปีที่แล้ว

    Good job bro, I very like this structure!

  • @Sergey_Klimov
    @Sergey_Klimov 6 หลายเดือนก่อน

    Хммм, интересный подход. Я только одного никак не пойму - где обработчики ошибок?))
    Насколько я понимаю все эти ctx.reply - это асинхронщина же. Понятно, что ни отрабатывают в рамках коллбэка и поэтому работают. Но, а где же try/catch?
    Может я чего то не понимаю конечно

  • @lizaleiko3580
    @lizaleiko3580 ปีที่แล้ว

    Подскажите, пожалуйста, для чего сделали сервис по чтению .env, почему нельзя просто читать переменные из него? не совсем поняла этот нюанс по видео

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Чтобы выделить логику получения переменных окружения. Скажем если мы захоти получить из стороннего сервиса, к примеру Vault, мы сможем просто в 1-м месте заменить реализация сервиса.

  • @Sergey_Klimov
    @Sergey_Klimov 6 หลายเดือนก่อน

    Ну, умоляю вас. Покажите как создавать wizard сцены с таким подходом.
    Я пробую у меня во-первых с typescript не дружит логика, во-вторых не могу его нормально зарегистрировать через middleware. Хотя по логике вещей чувствую, что какую-то микродеталь упускаю.
    Контекст ctx не имеет поля scene (а как следствие и enter), потому что не могу понять как зарегистрировать сцену.

  • @DenisB-d5f
    @DenisB-d5f ปีที่แล้ว +3

    Я уже на середине ролика, но я не понимаю: а что мы делаем?
    Какой функционал у бота будет?

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      У этого, кнопки и обработка событий, но это основа для бота, который вы можете сами доделать под себя.

    • @ИловМакс
      @ИловМакс ปีที่แล้ว +2

      Половина видео, какие-то обвязки над обвязками, абстракции, воюет с типизацией и тд

    • @НиколайМорозов-ы1э
      @НиколайМорозов-ы1э ปีที่แล้ว

      @@ИловМакс да, да. А по факту просто ставим лайк либо дизлайк ))

  • @mkonin
    @mkonin ปีที่แล้ว +2

    Интересный опыт был ) найти бы ещё примеры ) чтоб также с классами ) чтото гитхаб пока не особо балует )

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว +2

      У меня целый курс, где я показываю как строить архитектуру на классах: purpleschool.ru/course/nodejs

  • @dev-zb9mg
    @dev-zb9mg 7 หลายเดือนก่อน

    Антон, спасибо за видео!
    1) У вас есть возможность отключать подсказки в IDEA? Они сбивают когда смотрю в ваш код, там и так много текста и ещё подсказки добавляют.
    2) Вы используете vim? Можете поделиться впечатлениями?) Долго учились? Как давно используете? Сильно ли выросла продуктивность? Это могло бы стать темой для видеоролика, но буду признателен и за текст тоже :)

    • @PurpleSchool
      @PurpleSchool  7 หลายเดือนก่อน

      Привет!
      Видео про vim: th-cam.com/video/Q1gIbPEStL0/w-d-xo.htmlsi=tM4SdDKaj5AMhgvz

    • @dev-zb9mg
      @dev-zb9mg 7 หลายเดือนก่อน

      @@PurpleSchool ого, вы прямо на опережение) Благодарю!

  • @maxim477
    @maxim477 ปีที่แล้ว +1

    Здравствуйте, Большое спасибо за это видео. Всё понятно. Для тестового задания не могу найти хорошую архитектуру папок, в интернете на эту тему практически ничего. Не могли бы Вы поделиться архитектурой, которую Вы использовали/используете?

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Привет! Мы активно рассматриваем её в курсе Node: purpleschool.ru/course/nodejs

  • @ИльяМалофеев-ъ5щ
    @ИльяМалофеев-ъ5щ ปีที่แล้ว

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

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Если логика должна каждый раз выполняться при инициализации объекта, то нормально.

  • @RogerDearly
    @RogerDearly ปีที่แล้ว +1

    Привет. Спасибо за информативное видео! Можете снять ролик про ваш neovim сетап, какими плагинами пользуетесь ? Было бы интересно. Ну и бы ссылка на ваш сетап не помешало бы)

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว +1

      Всё на моем канале со ссылками: th-cam.com/video/4PzSNN45tcA/w-d-xo.html

    • @RogerDearly
      @RogerDearly ปีที่แล้ว

      @@PurpleSchool спасибо за ответ! Я в итоге нашёл ваше видео про AstroVim и скачал его. Довольно полезный конфиг, особенно для ленивых как я :D

  • @dmytrokosenko6517
    @dmytrokosenko6517 11 หลายเดือนก่อน

    А как данный проект развернуть на Vercel?

    • @PurpleSchool
      @PurpleSchool  11 หลายเดือนก่อน

      Как и любой проект на ноде

    • @dmytrokosenko6517
      @dmytrokosenko6517 11 หลายเดือนก่อน

      @@PurpleSchool вы уверены? Просто я пытаюсь развернуть бота, а мне Vercel пишет ошибка 500. Если я добавляю webhook в bot.launch, то работает, но не полностью

  • @jeremiah-w7e
    @jeremiah-w7e ปีที่แล้ว

    для архитектуры и поддержки надо вынести все значения для лайк/дислайк в enums а не прямо в функциях писать.

  • @burenkov
    @burenkov ปีที่แล้ว +1

    Спасибо! Много полезной информации👍

  • @nurmuhammadkholmuhammadov9643
    @nurmuhammadkholmuhammadov9643 ปีที่แล้ว

    не могу реализовать сцена кто то знает как ?

  • @polioann
    @polioann ปีที่แล้ว

    как можно избежать коллизий в callback данных? ("course_like", "course_dislike")

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Не очень понял вопрос.

    • @polioann
      @polioann ปีที่แล้ว

      @@PurpleSchool В больших проектах может быть много похожих действий и случайно можно дать называние которое уже существует

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Делать сцены, которые ограничивают набор доступных в текущий момент действий в зависимости от сцены

  • @siparat842
    @siparat842 ปีที่แล้ว

    Тема для следующего видео: Визуализация архитектуры c4. Инструменты для проектирования. Правила проектирования

  • @Sergey_Klimov
    @Sergey_Klimov 6 หลายเดือนก่อน

    Я попробовал обычную сцену создать с таким подходом. Все, я сдаюсь. Одни ошибки

  • @vlad_prime
    @vlad_prime ปีที่แล้ว

    А как потом добавить новые команды?

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Создать новый command и его подключить в app.ts в массив команд

  • @alexeyfilippov42
    @alexeyfilippov42 ปีที่แล้ว +2

    Предлагаю тему для видео:
    Иерархия для каталога на nestes set, вид хранения в sql бд и работа с ней вставка, перемещение по ветке, удаление + перерасчет связей. так же как его оптимально рисовать на фронте, нативный или реакт к примеру

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      У меня есть видео по отрисовке вложенных меню любой вложенности: th-cam.com/video/yLOOpANXP1E/w-d-xo.html&ab_channel=PurpleSchool%7CAntonLarichev

    • @alexeyfilippov42
      @alexeyfilippov42 ปีที่แล้ว

      @@PurpleSchool В общем глянул ролик, это супер нетипичный случай) практический пример бы рендерить из состояния.. А всё-таки реализацию классического иерархического дерева с использованием nested было бы любопытно посмотреть, потому что в интернете совсем мало о такой реализации контента

    • @alexeyfilippov42
      @alexeyfilippov42 ปีที่แล้ว +1

      Сегодня практике ради написал свое дерево на реакте, но с плоским списком. Для небольших структур самое то, но работа с ним конечно потная

  • @gamewithrap
    @gamewithrap ปีที่แล้ว

    Слова громкие, типа "используем архитектурный подход", "инверсия зависимостей".
    Очень красиво получилось, так как там всего 1 команда.
    А когда будет много команд, когда будет состояние, то вот этот вот паттерн, который очень похож на middleware, будет источником лапши
    Более сложные боты имеют не просто состояние из 1 флага.
    Обычно бывает 10-20 usecase-ов, и очень сложные состояния, когда без конечного автомата не обойтись, Ваш вариант не уменьшает сложность, он лишь добавляет красивую абстракцию, которая течет уже с первых строк.

  • @Sevelay
    @Sevelay ปีที่แล้ว +1

    Если ты думаешь что у Telegram плохая документация, значит ты просто не видел вк)

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว +2

      Я говорил про библиотеку Telegraf

    • @nod745
      @nod745 ปีที่แล้ว

      @@PurpleSchool О, да. Документация скудная и при поиске примеров приходится учитывать версию телеграфа. Это та ещё боль, если особо не разбираешься в api самой телеги. Когда-то пришлось потратить много нервов и времени при поиске рабочих реализаций в каналах по телеграфу

    • @Mikalai-yc7yy
      @Mikalai-yc7yy ปีที่แล้ว

      у grammy чёткая дока

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว +1

      Да, глянул, неплохо

  • @наносек
    @наносек ปีที่แล้ว

    я фронт, решил для себя разобраться в беке на ноде и у меня возникает ощущение - как будто бы на разных языках пишем)

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Все вполне похоже)

  • @konterrobinson7612
    @konterrobinson7612 ปีที่แล้ว

    👍👍👍👍👍

  • @pablo2100
    @pablo2100 10 หลายเดือนก่อน

    Мой первый опыт написания бота. За отсутствие DI, конечно, жирный минус, на этом моменте хотелось закрыть видео вообще. Но всё же спасибо, было интересно, попробовал, бот работает.

  • @jamjam3337
    @jamjam3337 ปีที่แล้ว

    👏👍💥

  • @ИванГорохов-ф8ж
    @ИванГорохов-ф8ж 2 หลายเดือนก่อน

    1650g tells a lot

  • @butnothero7192
    @butnothero7192 ปีที่แล้ว

    Здравствуйте, Антон. Записывая начало видео, Вы сидели на коленях перед камерой?) Просто относительно стола Вы находитесь очень низко (телевизор тоже низко как-то).

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว +1

      Нет, это кресло мешок около телевизора)

  • @ledorub6682
    @ledorub6682 ปีที่แล้ว +5

    Видео "ни-о-чем")) Яркий пример перенагруженности логической конструкции. Кстати, этому подвержены все любители TypeScript и прочих "улучшалок". В итоге вы не код учитесь писать и разрабатывать алгоритмы взаимодействия, а учитесь использовать безчисленное количество этих самых улучшалок, тратя уйму времени.

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว +4

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

    • @ledorub6682
      @ledorub6682 ปีที่แล้ว +2

      @@PurpleSchool Это кто сказал забыть?.. что за чушь).. С чего вы это взяли? Люди пишут очень большие проекты прекрасно и с легкостью на нативе и без всяких улучшалок/"убыстрялок". Алгоритмы взаимодействия тут ни при чем, ваш TypeScript - всего лишь помошник для головожопых юнных кодеров не допускать ошибок с типизацией на ровном месте.

    • @АлексейСветинский
      @АлексейСветинский ปีที่แล้ว +5

      @@ledorub6682 Сразу видно, что вы не знаете, что такое TypeScript, и скорее всего не имели дело с большими проектами. А если и имели, то это код, написанный вами давно, в котором только вы знаете как всё работает.

    • @ledorub6682
      @ledorub6682 ปีที่แล้ว +2

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

    • @ooops4333
      @ooops4333 ปีที่แล้ว

      @@ledorub6682 неадекват какой то

  • @romanmed9035
    @romanmed9035 ปีที่แล้ว

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

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      За 1790 рублей думаю конфет будет не так уж много. Да и много сладкого вредно.

    • @romanmed9035
      @romanmed9035 ปีที่แล้ว

      @@PurpleSchool у Вас курсы по цене конфет? а я думал десятки тысяч как у всех. надо посмотреть. спасибо за пояснение.

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Да, для самостоятельного прохождения 1790. Если есть желание работать с наставником и код ревью 6350. И те и те цены для рынка досрочно приемлемы)

    • @just__did__it
      @just__did__it ปีที่แล้ว

      Зачем ты это написал? Теперь я хочу конфеты мишка косолапый.

    • @romanmed9035
      @romanmed9035 ปีที่แล้ว

      @@just__did__it надеюсь у Вас получится из поесть.

  • @David-Freeman
    @David-Freeman ปีที่แล้ว

    "Не забудем добавить .env в .gitignore" - Это еще почему?

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Потому что вы же не хотите, чтобы ваши приватные ключи или пароли от базы улетели в git и хранились в открытом виде?

    • @David-Freeman
      @David-Freeman ปีที่แล้ว

      @@PurpleSchool Правильно ли я понимаю, что человек, склонировавший этот репозиторий себе на компьютер, установивший nodejs пакеты и запустивший npm start получит ошибку из-за отсутствия .env файла. Не является ли это фатальным нарушением целостности?

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      @@David-Freeman получит ошибку. И конечно нарушением это не является, так как хранить любую приватную информацию на Git категорически нельзя в открытом виде. Более того env файл будет разный для локальной разработки, stage и прода. И человек для запуска должен собрать нужный себе.

    • @David-Freeman
      @David-Freeman ปีที่แล้ว

      @@PurpleSchool "человек для запуска должен собрать нужный себе." Откуда человек это знает? Откуда он должен знать, какие там параметры вообще?
      Вывод: .env должен присутствовать, но секретные данные должны быть заменены, скажем, звездочками.

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      @@David-Freeman он будет знать, так как вы работаете в одной команде. Структура env обычно описывается в инструкции по запуску в Readme, у вас же должна быть к репозиторий полная инструкция