Тёмный

Пишем полезного Telegram бота на Golang | Урок #3 - Клиент для API бота 

Николай Тузов — Golang
Подписаться 21 тыс.
Просмотров 25 тыс.
50% 1

Опубликовано:

 

26 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 44   
@kibuzz3258
@kibuzz3258 8 месяцев назад
Очень тяжело писать что-то в первый раз, понял не с первого просмотра, но все же, у меня вышло повторить за вами. Огромное спасибо за такой прекрасный контент!
@shyrops
@shyrops 2 года назад
Отличный урок! Круто, что ты проговариваешь все мелочи, даже такие вещи как повторяющийся string у параметров. Такие мелочи помогают задумываться в будущем самому над своими действиями, стараться анализировать ситуации, а не просто делать всегда так как позволяет язык, беря это за безусловную константу. Хотя, конечно, с именованием некоторых методов мне сложно себя перебороть и самому проще воспринимается, когда есть get в префиксе названия метода, который что-то получает и возвращает. Потому что в идеальных условиях, когда всё по полочкам, наверное, понятно сразу что делает метод, но когда кода бывает много, он делает много разношёрстных вещей находясь рядом (в реальных проектах на моей практике так чаще всего бывает), то мне всегда проще вылавливать такие сразу понятные и близкие мозгоуху вещи, как get, update, delete, enrich и т.п. - нет этого диссонанса, когда я на пол минуты задумываюсь а что же ты чёрт побери такое)) Но, возможно, это только моя проблема)) Но я пока погетаю ещё, может быть потом когда-нибудь дорасту и полюблю) P.S. Именование функции преобразования числа в строку у меня изначально не вызывало вопросов, только я думал что I - это integer to a - просто первая буква алфавита, мол int в строку =) Было интересно услышать про истинную сущность "a" )
@nikolay_tuzov
@nikolay_tuzov 2 года назад
Спасибо за крутой комментарий
@d0lka397
@d0lka397 7 месяцев назад
Ну что, товарищ? Уже стал разработчиком?
@shyrops
@shyrops 7 месяцев назад
@@d0lka397 По крайней мере старательно им притворяюсь)
@kuzovkin_d
@kuzovkin_d 2 года назад
Супер! Спасибо за подробное объяснение. Отличный канал.
@gamvdee2519
@gamvdee2519 2 года назад
Отличные уроки, спасибо!
@whtkeys8190
@whtkeys8190 2 года назад
Отлично объясняешь! Продолжай снимать!
@самыйлогичныйчел
@самыйлогичныйчел 8 месяцев назад
ваши уроки шедевр!!! Спасибо вам гигантское!!!
@ВладимирАстраханцев
Уроки огонь, очень ценно для новичков!
@p12s
@p12s Год назад
Не претендую на истину: Оптимизация через defer здесь не нужна. Усложняешь читаемость и дебаг. Вот увидел ты в логах текст обернутой ошибки, нашел свой defer и ищешь где же там выстрелило. А без лишнего накручивания сразу бы нашел место. И текст оборачиваемый надо адреснее делать, чтоб сразу понять где трабл. В твоем случае это будет: fmt.Errorf("updates doRequest fail: %w", err)
@evgenijdanilov8203
@evgenijdanilov8203 2 года назад
спасибо за материал. небольшая оптимизация для метода doRequest - результат io.ReadAll передавать сразу в data, так как уже имеется именованное возвращаемое значение
@evgenijdanilov8203
@evgenijdanilov8203 2 года назад
и поскольку возвращаемые переменные уже определены, можно просто писать return. без nil, err
@last2636
@last2636 Год назад
Совсем недавно начал изучать Golang, это первый язык, по твоим урокам хочу научиться писать ботов) с таким подробным проговариванием действий я начинаю понимать что к чему, а это огромный прорыв для новичка, спасибо за твой труд. P.S. прикрути донаты себе на канал, кто-то наверняка захочет поблагодарить
@nikolay_tuzov
@nikolay_tuzov Год назад
У меня есть патреон и бусти, в последних роликах есть ссылки 😚
@АлексейСуббота-ц4п
Урок огонь, спасибо тебе за твои старания
@Levelord92
@Levelord92 2 года назад
Спасибо, что раскрыл тайну Itoa (гадал, почему не Itos)
@ArslanArslan-ph2pz
@ArslanArslan-ph2pz 2 года назад
Лучший, жалко контент по гошке мало прочмотров набирает(
@geng8668
@geng8668 5 месяцев назад
было бы круто понять как ты на второй минуте создал функцию сочетанием клавиш
@testo5409
@testo5409 Год назад
Спасибо за видео, но ссылку на доку api не добавили:(
@surt16
@surt16 Год назад
Да, с defer возвращение ошибок чуть, оптимизировано, но является ли это чистым кодом? Выглядит как уже оверхед, те дублирования было не так много, чтобы жертвовать простотой и читабельностью.
@ТимофейЁлкин-о9е
@ТимофейЁлкин-о9е 11 месяцев назад
14:40 А как мы по ошибке потом поймём в каком месте когда она происходит? Ведь текст ошибки у обоих случаев одинаков.
@obereg2282
@obereg2282 Месяц назад
Вопрос. Метод doRequest у нас выполняет несколько действий: 1. формируем запрос для отправки, 2. отправляем запрос, 3. читаем ответ. Почему мы не разбиваем метод на несколько методов для того, чтобы обеспечить условие чистого кода "каждая функция выполняет что-то одно"?
@ПавелРостовцев-з7п
спасибо за видео!
@obereg2282
@obereg2282 Месяц назад
Ролик безусловно понравился. Непонятно пока, как работает строка req.URL.RawQuery = query.Encode() и resp, err := c.client.Do(req)
@goblin143
@goblin143 8 месяцев назад
Огонь
@ЦарюкКонстантин
@ЦарюкКонстантин 2 года назад
Благодарю
@baubekukibassov7361
@baubekukibassov7361 3 месяца назад
я все сделал по туториалу. но у меня /start команда завтряла в бесконченом цикле... Как это исправить? Спасибо
@alexobzor
@alexobzor Год назад
Хочу узнать по поводу конструктора func New для структуры Client. Я много раз в разных видео по Go видел, что такие конструкторы возвращают именно указатель, а почему в данном случае это не указатель ?
@jimshtepa5423
@jimshtepa5423 Год назад
если мы передали c.String когда готовили запрос, то зачем еще раз передавать параметры запроса в обьект req еще раз URL.Rawquerry?
@TheDavBag
@TheDavBag Год назад
забавно, что от подобного подхода к программированию лично я хотел всегда уйти. просто я заметил, что изначально готовится "инфра для запуска тн бизнес-логики", а потом уже сама бизнес-логика. кажется, что с конкретикой можно поработать после реализации
@iangaplichnik7967
@iangaplichnik7967 Год назад
Спасибо за урок! Остался вопрос: почему query.Encode() делается уже после http.NewRequest(), а не при инициализации структуры u? Попробовал добавить поле RawQuery: queryEncode(), все работает так же Спасибо!
@nikolay_tuzov
@nikolay_tuzov Год назад
В случае таких вопросов лучше сразу писать тайминг, т.к. мне нужно найти момент, глянуть и вспомнить. Но если я правильно помню, то в том случае без разницы, в каком порядке выполнять эти действия.
@iangaplichnik7967
@iangaplichnik7967 Год назад
@@nikolay_tuzov Спасибо за ответ! Да, прошу прощения Создание структуры u: 8:35 Передача query в запрос: 11:33
@nikolay_tuzov
@nikolay_tuzov Год назад
@@iangaplichnik7967 да, всё верно, порядок роли не играет. И, наверное, лучше при инициализации структуры это делать
@Geleon_1984
@Geleon_1984 Год назад
а что за иде используется?
@nikolay_tuzov
@nikolay_tuzov Год назад
GoLand
@erwererwrwr
@erwererwrwr Год назад
cпасибо за урок! body, err := io.ReadAll(resp.Body) почему мы обращаемся к io здесь, нельзя без этого обойтись было?
@konstantingromov2148
@konstantingromov2148 2 года назад
Спасибо за подробные разъяснения своих действий
@MO-of1jj
@MO-of1jj 11 месяцев назад
если второй урок был понятен , то тут уже нагромождение такое что в голове всё запуталось , что откуда и куда. Для новичка который не имела опыта такое не прожевать, а хочется ) . Жаль что нету обнесения на подобных примерах про структуры json слайсы.
@RaulKassad
@RaulKassad Год назад
Не совсем понял почему нельзя сократить и не писать одинаковые типы аргументов, мы же не общий клиент пишем, а клиент именно для телеграмма. Как по мне это просто вопрос стиля написания кода, когда пишешь тип к каждому аргументу вроде как нагляднее, для начинающего конечно так проще
@TheBaldingMan
@TheBaldingMan 2 года назад
Библиотека не подтягивается в telegram.go, в чем может быть проблема? Та же IDE, но она не подсказывает. Папка лежит в root/lib/e, вручную тоже нет. Что я упускаю? Подскажи пожалуйста
@nikolay_tuzov
@nikolay_tuzov 2 года назад
Сложно сказать, причины могут быть разные. Залей свой код на гитхаб и скинь сюда ссылку, я гляну и попробую помочь.
@Kekasization
@Kekasization 2 года назад
Нужно в telegram.go импортировать папку lib/e, import ( "read-adviser-bot/lib/e" ) и всё будет супер.
Далее
Как он понял?
00:13
Просмотров 108 тыс.
А вы играли в school boy runaway?
00:30
Просмотров 149 тыс.
Пишем TELEGRAM бота на GO
13:48
Просмотров 72 тыс.
Go in 100 Seconds
2:30
Просмотров 1,6 млн
Как он понял?
00:13
Просмотров 108 тыс.