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

  Рет қаралды 34,228

PurpleSchool | Anton Larichev

PurpleSchool | Anton Larichev

Күн бұрын

Пікірлер: 118
@PurpleSchool
@PurpleSchool Жыл бұрын
🔗 Ссылки: ⚡Полный курс по Node.js с нуля, с архитектурой и паттернами: purpleschool.ru/course/nodejs ⚡Курс по TypeScript и паттернам проектирования: purpleschool.ru/course/typescript
@webdeveloper8826
@webdeveloper8826 24 күн бұрын
Что за текстовый редактор? У вас. На видео
@PurpleSchool
@PurpleSchool 24 күн бұрын
@@webdeveloper8826 Neovim
@germanmanvelov
@germanmanvelov 7 ай бұрын
Спасибо, было полезно в качестве наглядного базового бота для вникающего в эту сферу.
@PurpleSchool
@PurpleSchool 7 ай бұрын
Пожалуйста
@germanmanvelov
@germanmanvelov 7 ай бұрын
@@PurpleSchool И курсы у вас классные. Я уже прошел по Nest, прохожу по TS, и далее микросервисы и Node. Хотелось бы, конечно, увидеть по Angular еще. Сайт с курсами тоже оч нравится, как сделан.
@PurpleSchool
@PurpleSchool 7 ай бұрын
@@germanmanvelov спасибо! Старались сделать максимально удобную платформу.
@sergeymurashov4365
@sergeymurashov4365 Жыл бұрын
Объяснение прекрасное. Отдельный плюсик за чистоту речи )
@PurpleSchool
@PurpleSchool Жыл бұрын
Спасибо!
@luckytima2315
@luckytima2315 Жыл бұрын
КАЙФФФФ!! Вы прям мысли читаете , везде на питоне боты (
@PurpleSchool
@PurpleSchool Жыл бұрын
Супер 👍
@SherwoodHub
@SherwoodHub Жыл бұрын
Дякую за відео🙏 Цікавий та корисний контент😃
@PurpleSchool
@PurpleSchool 7 ай бұрын
👍
@evgeniykireev8572
@evgeniykireev8572 5 ай бұрын
Cупер полезное видео! Спасибо вам)
@PurpleSchool
@PurpleSchool 5 ай бұрын
Пожалуйста!
@ТкачукИгорь
@ТкачукИгорь Жыл бұрын
Отличное видео! Спасибо! Понравилось про структурирование приложения. Очень интересно посмотреть на практическое применение DI. Жду с нетерпением продолжения!
@PurpleSchool
@PurpleSchool Жыл бұрын
Хорошо) так же можно глянуть у меня в курсе, разобрано детально
@diggerdog001
@diggerdog001 Жыл бұрын
Топ контент подъехал очередной от Антохи 🔥🔥🔥
@PurpleSchool
@PurpleSchool Жыл бұрын
Спасибо!
@ilyamartynov2743
@ilyamartynov2743 Жыл бұрын
Я бы посмотрел реализацию с архитектурой на NestJS
@PurpleSchool
@PurpleSchool Жыл бұрын
Буду иметь ввиду)
@dev-zb9mg
@dev-zb9mg 6 ай бұрын
Да, видео по логгированию было круто! Если можно, рассмотрите Pino, пожалуйста.
@АртёмИвасечкин
@АртёмИвасечкин 7 ай бұрын
Есть сылка на гитхаб (код из видео)?
@romankornienko7268
@romankornienko7268 8 ай бұрын
Буду рад, если добавите видео про то, как организовать работу со сценам (scenes)
@shoxruxbekmamadaliyev
@shoxruxbekmamadaliyev Жыл бұрын
Good job bro, I very like this structure!
@PurpleSchool
@PurpleSchool Жыл бұрын
Thanks!
@mkonin
@mkonin Жыл бұрын
Интересный опыт был ) найти бы ещё примеры ) чтоб также с классами ) чтото гитхаб пока не особо балует )
@PurpleSchool
@PurpleSchool Жыл бұрын
У меня целый курс, где я показываю как строить архитектуру на классах: purpleschool.ru/course/nodejs
@burenkov
@burenkov Жыл бұрын
Спасибо! Много полезной информации👍
@PurpleSchool
@PurpleSchool Жыл бұрын
Пожалуйста!
@uzarixx
@uzarixx Жыл бұрын
Когда будет видео как создавать сцены ?
@Sergey_Klimov
@Sergey_Klimov 5 ай бұрын
Ну, умоляю вас. Покажите как создавать wizard сцены с таким подходом. Я пробую у меня во-первых с typescript не дружит логика, во-вторых не могу его нормально зарегистрировать через middleware. Хотя по логике вещей чувствую, что какую-то микродеталь упускаю. Контекст ctx не имеет поля scene (а как следствие и enter), потому что не могу понять как зарегистрировать сцену.
@dev-zb9mg
@dev-zb9mg 6 ай бұрын
Антон, спасибо за видео! 1) У вас есть возможность отключать подсказки в IDEA? Они сбивают когда смотрю в ваш код, там и так много текста и ещё подсказки добавляют. 2) Вы используете vim? Можете поделиться впечатлениями?) Долго учились? Как давно используете? Сильно ли выросла продуктивность? Это могло бы стать темой для видеоролика, но буду признателен и за текст тоже :)
@PurpleSchool
@PurpleSchool 6 ай бұрын
Привет! Видео про vim: kzbin.info/www/bejne/h2LKepWGeringpIsi=tM4SdDKaj5AMhgvz
@dev-zb9mg
@dev-zb9mg 6 ай бұрын
@@PurpleSchool ого, вы прямо на опережение) Благодарю!
@jeremiah-w7e
@jeremiah-w7e Жыл бұрын
17:00 а чего не сделать что-то типа const configService = new ConfigService(); export configService; в самом конфиг сервисе и все будуть брать один объект конфига.
@FobosWorld
@FobosWorld Жыл бұрын
Как с такой архитектурой работать со сценами и везердами?
@RogerDearly
@RogerDearly Жыл бұрын
Привет. Спасибо за информативное видео! Можете снять ролик про ваш neovim сетап, какими плагинами пользуетесь ? Было бы интересно. Ну и бы ссылка на ваш сетап не помешало бы)
@PurpleSchool
@PurpleSchool Жыл бұрын
Всё на моем канале со ссылками: kzbin.info/www/bejne/aoHdhIGEaZqnmaM
@RogerDearly
@RogerDearly Жыл бұрын
@@PurpleSchool спасибо за ответ! Я в итоге нашёл ваше видео про AstroVim и скачал его. Довольно полезный конфиг, особенно для ленивых как я :D
@19n1ght
@19n1ght Жыл бұрын
Почему bot в конструкторе Command имеет модификатор доступа public а не protected?
@PurpleSchool
@PurpleSchool Жыл бұрын
Согласен, protected было бы правильнее
@19n1ght
@19n1ght Жыл бұрын
@@PurpleSchool хорошее видео! и вообще на канале много полезного. спасибо!
@PurpleSchool
@PurpleSchool Жыл бұрын
Спасибо!
@Sergey_Klimov
@Sergey_Klimov 5 ай бұрын
Хммм, интересный подход. Я только одного никак не пойму - где обработчики ошибок?)) Насколько я понимаю все эти ctx.reply - это асинхронщина же. Понятно, что ни отрабатывают в рамках коллбэка и поэтому работают. Но, а где же try/catch? Может я чего то не понимаю конечно
@DenisB-d5f
@DenisB-d5f Жыл бұрын
Я уже на середине ролика, но я не понимаю: а что мы делаем? Какой функционал у бота будет?
@PurpleSchool
@PurpleSchool Жыл бұрын
У этого, кнопки и обработка событий, но это основа для бота, который вы можете сами доделать под себя.
@ИловМакс
@ИловМакс Жыл бұрын
Половина видео, какие-то обвязки над обвязками, абстракции, воюет с типизацией и тд
@НиколайМорозов-ы1э
@НиколайМорозов-ы1э Жыл бұрын
@@ИловМакс да, да. А по факту просто ставим лайк либо дизлайк ))
@lizaleiko3580
@lizaleiko3580 Жыл бұрын
Подскажите, пожалуйста, для чего сделали сервис по чтению .env, почему нельзя просто читать переменные из него? не совсем поняла этот нюанс по видео
@PurpleSchool
@PurpleSchool Жыл бұрын
Чтобы выделить логику получения переменных окружения. Скажем если мы захоти получить из стороннего сервиса, к примеру Vault, мы сможем просто в 1-м месте заменить реализация сервиса.
@maxim477
@maxim477 Жыл бұрын
Здравствуйте, Большое спасибо за это видео. Всё понятно. Для тестового задания не могу найти хорошую архитектуру папок, в интернете на эту тему практически ничего. Не могли бы Вы поделиться архитектурой, которую Вы использовали/используете?
@PurpleSchool
@PurpleSchool Жыл бұрын
Привет! Мы активно рассматриваем её в курсе Node: purpleschool.ru/course/nodejs
@siparat842
@siparat842 Жыл бұрын
Тема для следующего видео: Визуализация архитектуры c4. Инструменты для проектирования. Правила проектирования
@alexeyfilippov42
@alexeyfilippov42 Жыл бұрын
Предлагаю тему для видео: Иерархия для каталога на nestes set, вид хранения в sql бд и работа с ней вставка, перемещение по ветке, удаление + перерасчет связей. так же как его оптимально рисовать на фронте, нативный или реакт к примеру
@PurpleSchool
@PurpleSchool Жыл бұрын
У меня есть видео по отрисовке вложенных меню любой вложенности: kzbin.info/www/bejne/r32ygKN3g72DZ6c&ab_channel=PurpleSchool%7CAntonLarichev
@alexeyfilippov42
@alexeyfilippov42 Жыл бұрын
@@PurpleSchool В общем глянул ролик, это супер нетипичный случай) практический пример бы рендерить из состояния.. А всё-таки реализацию классического иерархического дерева с использованием nested было бы любопытно посмотреть, потому что в интернете совсем мало о такой реализации контента
@alexeyfilippov42
@alexeyfilippov42 Жыл бұрын
Сегодня практике ради написал свое дерево на реакте, но с плоским списком. Для небольших структур самое то, но работа с ним конечно потная
@jeremiah-w7e
@jeremiah-w7e Жыл бұрын
для архитектуры и поддержки надо вынести все значения для лайк/дислайк в enums а не прямо в функциях писать.
@PurpleSchool
@PurpleSchool Жыл бұрын
Да, верно
@Sergey_Klimov
@Sergey_Klimov 5 ай бұрын
Я попробовал обычную сцену создать с таким подходом. Все, я сдаюсь. Одни ошибки
@ИльяМалофеев-ъ5щ
@ИльяМалофеев-ъ5щ Жыл бұрын
Добрый день, хотелось бы спросить, а нормально ли в конструкторе делать какую-то логику, просто мне всегда казалось что это не очень хорошее для этого место
@PurpleSchool
@PurpleSchool Жыл бұрын
Если логика должна каждый раз выполняться при инициализации объекта, то нормально.
@gamewithrap
@gamewithrap Жыл бұрын
Слова громкие, типа "используем архитектурный подход", "инверсия зависимостей". Очень красиво получилось, так как там всего 1 команда. А когда будет много команд, когда будет состояние, то вот этот вот паттерн, который очень похож на middleware, будет источником лапши Более сложные боты имеют не просто состояние из 1 флага. Обычно бывает 10-20 usecase-ов, и очень сложные состояния, когда без конечного автомата не обойтись, Ваш вариант не уменьшает сложность, он лишь добавляет красивую абстракцию, которая течет уже с первых строк.
@jamjam3337
@jamjam3337 Жыл бұрын
👏👍💥
@PurpleSchool
@PurpleSchool Жыл бұрын
👍
@konterrobinson7612
@konterrobinson7612 Жыл бұрын
👍👍👍👍👍
@PurpleSchool
@PurpleSchool Жыл бұрын
👍
@dmytrokosenko6517
@dmytrokosenko6517 10 ай бұрын
А как данный проект развернуть на Vercel?
@PurpleSchool
@PurpleSchool 10 ай бұрын
Как и любой проект на ноде
@dmytrokosenko6517
@dmytrokosenko6517 10 ай бұрын
@@PurpleSchool вы уверены? Просто я пытаюсь развернуть бота, а мне Vercel пишет ошибка 500. Если я добавляю webhook в bot.launch, то работает, но не полностью
@Sevelay
@Sevelay Жыл бұрын
Если ты думаешь что у Telegram плохая документация, значит ты просто не видел вк)
@PurpleSchool
@PurpleSchool Жыл бұрын
Я говорил про библиотеку Telegraf
@nod745
@nod745 Жыл бұрын
@@PurpleSchool О, да. Документация скудная и при поиске примеров приходится учитывать версию телеграфа. Это та ещё боль, если особо не разбираешься в api самой телеги. Когда-то пришлось потратить много нервов и времени при поиске рабочих реализаций в каналах по телеграфу
@Mikalai-yc7yy
@Mikalai-yc7yy Жыл бұрын
у grammy чёткая дока
@PurpleSchool
@PurpleSchool Жыл бұрын
Да, глянул, неплохо
@nurmuhammadkholmuhammadov9643
@nurmuhammadkholmuhammadov9643 Жыл бұрын
не могу реализовать сцена кто то знает как ?
@наносек
@наносек Жыл бұрын
я фронт, решил для себя разобраться в беке на ноде и у меня возникает ощущение - как будто бы на разных языках пишем)
@PurpleSchool
@PurpleSchool Жыл бұрын
Все вполне похоже)
@pablo2100
@pablo2100 9 ай бұрын
Мой первый опыт написания бота. За отсутствие DI, конечно, жирный минус, на этом моменте хотелось закрыть видео вообще. Но всё же спасибо, было интересно, попробовал, бот работает.
@polioann
@polioann Жыл бұрын
как можно избежать коллизий в callback данных? ("course_like", "course_dislike")
@PurpleSchool
@PurpleSchool Жыл бұрын
Не очень понял вопрос.
@polioann
@polioann Жыл бұрын
@@PurpleSchool В больших проектах может быть много похожих действий и случайно можно дать называние которое уже существует
@PurpleSchool
@PurpleSchool Жыл бұрын
Делать сцены, которые ограничивают набор доступных в текущий момент действий в зависимости от сцены
@vlad_prime
@vlad_prime Жыл бұрын
А как потом добавить новые команды?
@PurpleSchool
@PurpleSchool Жыл бұрын
Создать новый command и его подключить в app.ts в массив команд
@ИванГорохов-ф8ж
@ИванГорохов-ф8ж Ай бұрын
1650g tells a lot
@butnothero7192
@butnothero7192 Жыл бұрын
Здравствуйте, Антон. Записывая начало видео, Вы сидели на коленях перед камерой?) Просто относительно стола Вы находитесь очень низко (телевизор тоже низко как-то).
@PurpleSchool
@PurpleSchool Жыл бұрын
Нет, это кресло мешок около телевизора)
@ledorub6682
@ledorub6682 Жыл бұрын
Видео "ни-о-чем")) Яркий пример перенагруженности логической конструкции. Кстати, этому подвержены все любители TypeScript и прочих "улучшалок". В итоге вы не код учитесь писать и разрабатывать алгоритмы взаимодействия, а учитесь использовать безчисленное количество этих самых улучшалок, тратя уйму времени.
@PurpleSchool
@PurpleSchool Жыл бұрын
То что вы назвали логической конструкцией, является архитектурой проекта. Можете писать без TS и в одном файле, но тогда забудьте о больших, поддерживаемых и масштабируемых проектах. И как раз «алгоритмы взаимодействия» между компонентами вашего проекта вы и должны прорабатывать.
@ledorub6682
@ledorub6682 Жыл бұрын
@@PurpleSchool Это кто сказал забыть?.. что за чушь).. С чего вы это взяли? Люди пишут очень большие проекты прекрасно и с легкостью на нативе и без всяких улучшалок/"убыстрялок". Алгоритмы взаимодействия тут ни при чем, ваш TypeScript - всего лишь помошник для головожопых юнных кодеров не допускать ошибок с типизацией на ровном месте.
@АлексейСветинский
@АлексейСветинский Жыл бұрын
@@ledorub6682 Сразу видно, что вы не знаете, что такое TypeScript, и скорее всего не имели дело с большими проектами. А если и имели, то это код, написанный вами давно, в котором только вы знаете как всё работает.
@ledorub6682
@ledorub6682 Жыл бұрын
@@АлексейСветинский ох и насмешил, сынок).. вы еще в школу не ходили - я уже разработкой занимался.. вижу что критика для вас неприемлема, поэтому лишь скажу - все улучшалки созданы с одной целью, ускорить процесс коммерческой разработки. Причем чтоб их освоить приходится тратить в разы больше времени, чем на синтаксис и основы построения алгоритмов, то есть на само программирование.
@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, у вас же должна быть к репозиторий полная инструкция
Делаю фронтенд заказ на Kwork (график на canvas javascript)
21:53
♛ Подпольный JS ☯
Рет қаралды 17 М.
МЕНЯ УКУСИЛ ПАУК #shorts
00:23
Паша Осадчий
Рет қаралды 4,7 МЛН
Китайский и Немецкий MERCEDES. Есть разница? Полный разбор
25:17
Собеседование на middle Node.js разработчика
42:10
PurpleSchool | Anton Larichev
Рет қаралды 54 М.
Как зарабатывать на чат-ботах в телеграмм +15 000 в неделю! ChatGPT + Telegram. БЕЗ ОПЫТА
18:22
Марк Николаев | Работа в интернете | Нейросети
Рет қаралды 52 М.
Nestjs - быстрый курс по лучшему  Node js фреймворку
52:33
PurpleSchool | Anton Larichev
Рет қаралды 63 М.
Приключения Node.js в продакшене
39:12
Yandex for Developers
Рет қаралды 11 М.
Prisma - лучшая ORM для Node.js
23:45
PurpleSchool | Anton Larichev
Рет қаралды 32 М.