Grom
надо читать апдейты с сервера, брать update_id и указывать его при следующем запросе (или update_id+1)
updates, err := bot.GetUpdatesChan(u) for update := range updates { if update.Message == nil { continue } processUpdate(bot, update, record, db) } то есть что-то типа такого
Grom
"gopkg.in/telegram-bot-api.v4"
Roman
замена pook тут будет иметь такой же эффект тут, как замена fack в (плохом) языке с перегрузкой (читай С++).
заменить вообще можно ВСЁ! 🙂 дело в том что если тебе нужно поменять, то менять лучше только в 1 месте, меньше вероятности ошибиться. Если у тебя 4 перегруженных функции, тогда меняет придётся в 4 местах и забыть одну из них или ошибиться в её реализации очень просто и Ken Thompson если я не ошибаюсь был против перегрузки, ты можешь поспорить с моей аргументацией, но с Ken'ом спорить не рекомендую, не смотря на то что его аргументация будет аналогичной))
🎉
updates, err := bot.GetUpdatesChan(u) for update := range updates { if update.Message == nil { continue } processUpdate(bot, update, record, db) } то есть что-то типа такого
Ну это хрень конечно. Для начала напиши фун. которая обрабатывает старт. Ща скину.
Aleksandr
"gopkg.in/telegram-bot-api.v4"
последние коммиты: Remove a broken check for GetUpdatesChan. Revert "Remove a broken check for GetUpdatesChan." видимо что-то сломали и починили обратно 3 дня назад.
🎉
А, вижу.
Aleksandr
"gopkg.in/telegram-bot-api.v4"
https://github.com/go-telegram-bot-api/telegram-bot-api/commit/5f38203a155afa901c7deb70596a088a8424a9ee вот тут перестали +1 делать)
Grom
видать использовал версию до этого коммита, а на днях обновил вендоры
саша
саша
тяжело наверное жить без грепа
непонятно где реализацию смотреть
🎉
блин, это все обьясняет :D
Не объясняет, над кодом нужно поработать, щас вам скину рабочий вариант на плэй.
саша
перегрузка чего?
перегрузка конструкции .BlaBla(...)
Grom
Не объясняет, над кодом нужно поработать, щас вам скину рабочий вариант на плэй.
ну как бы будет странно, если читать не из бесконечного цикла и постоянно передавать оффсет в GetUpdates, но буду признателен за пример
Artem
перегрузка конструкции .BlaBla(...)
Почему это перегрузка? В гошке Это вроде просто сахар
Алексей
Конструкция .BlaBla(...) является неоднозначной и "перегруженной" в случае, если сущность перед точкой является интрефейсом.
Daniel
тяжело наверное жить без грепа
и тем не менее, кгда мы глядим на гошный код - мы в целом понимаем, что он делает. когда мы глядим на код на языке с перегрузкой операторов - мы тоже думаем, что понимаем. но на самом деле нам надо знать проект досконально, чтобы быть уверенным, что мы реально понимаем, что хочет сказать автор. или, другими словами, в го мы всегда знаем, что грепать, а в с++ - далеко не всегда
🎉
как не объясняет, если объясняет?
У него там не много не правильно. Щас скопипстю с рабочего пример.
саша
Aleksandr
У него там не много не правильно. Щас скопипстю с рабочего пример.
все у него правильно кроме первой инициализации. но он описывал другую проблему
саша
перегрузка операторв - везде говно
какие языки с перегрузкой операторов вы знаете?
Aleksandr
а что с ней не так?)
ну если остановить приложение и запустить заново то он опять переберет все апдейты с 0. Там по-моему за последний час апдейты будут
Алексей
нет, она всегда является перегруженной по типу того, что слева от этой конструкции
Да, как раз хотел написать, что забыл про структруы. Но в случае структур на этапе компиляции можно с уверенностью сказать, что будет делать BlaBla, а в случае интерфейсов такого уже сказать нельзя. И фактически вызов BlaBla даже в одной строчке кода может делать совершенно различные вещи.
саша
Да, как раз хотел написать, что забыл про структруы. Но в случае структур на этапе компиляции можно с уверенностью сказать, что будет делать BlaBla, а в случае интерфейсов такого уже сказать нельзя. И фактически вызов BlaBla даже в одной строчке кода может делать совершенно различные вещи.
> Но в случае структур на этапе компиляции можно с уверенностью сказать, что будет делать BlaBla, а в случае интерфейсов такого уже сказать нельзя А это уже статическая/динамическая диспетчеризация, а не перегрузка.
Daniel
нет
Алексей
нет
Сколько структур может реализовывать один и тот же интерфейс?
Artem
Сколько структур может реализовывать один и тот же интерфейс?
Тут о том, что во время вызова у тебя есть одна конкретная
Grom
@zelenin спасибо за помощь, апдейт действительно помог!
Алексей
Тут о том, что во время вызова у тебя есть одна конкретная
Это я вообще про всё могу сказать. Во время вызова кода на любом языке действительно есть какой-то код и можно под отладчиком глняуть что там происходит.
Daniel
Сколько структур может реализовывать один и тот же интерфейс?
некоторое количество. и не всегда я знаю, какая именно структура сейчас на месте интерфейса. но этих структур в проекте - ограниченное количество
🎉
@Gromnsk https://play.golang.com/p/EypBu4Q3TNp
Aleksandr
@Gromnsk https://play.golang.com/p/EypBu4Q3TNp
прости, ты в своем уме? ты переделал код на вебхуки, которых не было в изначальном коде.
Алексей
некоторое количество. и не всегда я знаю, какая именно структура сейчас на месте интерфейса. но этих структур в проекте - ограниченное количество
Миллион структур - это тоже ограниченное количество. Я всё хочу показать, что почти в любом языке есть такой код, который является неоднозначным и невозможно точно сказать на этапе компиляции, что именно будет происходить.
🎉
прости, ты в своем уме? ты переделал код на вебхуки, которых не было в изначальном коде.
Задротство на полинге делать ботов. Нужно юзать вебхуки, а в помощь ngrok, кстати у Василия на Курсере есть прекрасное видео.
Aleksandr
Задротство на полинге делать ботов. Нужно юзать вебхуки, а в помощь ngrok, кстати у Василия на Курсере есть прекрасное видео.
вот с этого и надо начинать. а не переделать код не объяснив что зачем. он его даже не запустит
Алексей
миллион структур вы не напишете даже с помощью кодогенерации. не надо ля-ля
Двадцать напишу, а даже двадцать - это уже очень много.
.
классическая схема такая: user.Activize() repo.Save(user) но repo.Activize(userId) тоже имеет право
Я же правильно понимаю что save в данном случае обновляет все поля несмотря на то что изменилось только одно поле?
.
зависит от реализации
Плохо ли будет если будет обновлять все поля?)
Daniel
Двадцать напишу, а даже двадцать - это уже очень много.
двадцать структур, реализующих один интерфейс, и методы которых делают существенно разное? не надо ля-ля
Daniel
но вы не понимаете мой поинт
Алексей
двадцать структур, реализующих один интерфейс, и методы которых делают существенно разное? не надо ля-ля
Надо ля ля. Особенно когда человек десять работают над кодом. И даже не обязательно делать существенно разное, потому что всё равно периодически придётся проверять что они сосбственно не делают ничего плохого.
Daniel
с перегрузкой операторов мы не знаем, ведет ли себя код, на который мы глядим, так, как мы ожидаем, или надо идти глянуть, что там и как. с интерфейсами в go нам очевидно, что тут возможна неоднозначность
Алексей
с перегрузкой операторов мы не знаем, ведет ли себя код, на который мы глядим, так, как мы ожидаем, или надо идти глянуть, что там и как. с интерфейсами в go нам очевидно, что тут возможна неоднозначность
Ну так то да. Но на типы всё равно надо всегда глядеть. Даже без перегрузки операторов, тот же оператор + может делать довольно разные вещи для разных типов. Хотя без перегрузки конечно же возможностей куда меньше.
Алексей
перегрузка операторв - везде говно
И вот это утверждение уж чересчур сильное. Учитывая наличие задач, решение которых без перегрузки операторов решаются крайне печально.
🎉
Вот у человека спроси @zelenin, он вроде писал что-то.
Алексей
саша
с перегрузкой операторов мы не знаем, ведет ли себя код, на который мы глядим, так, как мы ожидаем, или надо идти глянуть, что там и как. с интерфейсами в go нам очевидно, что тут возможна неоднозначность
Да нихрена мы без конкретных типов в go не знаем. Да и не должны знать. Иначе нам нужен язык без вывода типов, без черезточечного вызова и полиморфизма в любом виде.
Roman
Каких ещё вариациях? Перегруженные функции - это разные функции.
так в этом то и проблема))) (потенциально) разное поведение скрытое под одним словом
Aleksandr
https://github.com/zelenin/go-tdlib
Roman
Каких ещё вариациях? Перегруженные функции - это разные функции.
bank.TakeLoan("one million dollars") // behavior A bank.TakeLoan(1000000 * currency.Dollars) // behavior B var loan = const string("one million dollars") bank.TakeLoan(loan) // behavior C особенно опасен вариант с const-/не-const типами, они чаще всего всё портят
саша
так в этом то и проблема))) (потенциально) разное поведение скрытое под одним словом
.BlaBla() скрывает потенциально разное проведение под одним словом, и что с этим делать?
Veaceslav
Стыдно же гуглить не уметь. "Кросскомпиляция golang"
Да не то что трудно, я искал, а потом оказалось что есть приколы с Windows 10
саша
.BlaBla() скрывает потенциально разное проведение под одним словом, и что с этим делать?
Я считаю, что надо подтянуть свои знания в PLT, вместо того, чтобы спорить о том, чего сам не понимаешь.
Roman
.BlaBla() скрывает потенциально разное проведение под одним словом, и что с этим делать?
о боже... да как же вы "абстракцию" (которую мы НАМЕРЕНО встраиваем) с многозначностью встроенной по ошибке не отличаете то...