xarakiri
Ron Mount
Булат
Мужчины
Булат
Помогите пожалуйст
Булат
мозги плывут треш
Илья
передоз
Булат
как сделать так, чтобы бот отправлял фотку пользователю через URL
Булат
?
Patamen
Patamen
И он подцепит)))))0)))
Patamen
А вообще
Если срзн
FromURL вроде должна бы реализовать этот момент
Илья
?
там есть метод URL("link), правда не помню где
Булат
Не могу найти елки палки
Patamen
Булат
tgbotapi
Patamen
ОФФТОП:
А поч кстати большинство рекомендует tgbotapi?
Есть какие-то преимущества перед telebot'ом?
Patamen
https://github.com/go-telegram-bot-api/telegram-bot-api/search?q=media
Patamen
Как я понял
NewPhoto(ChatID, FileURL("http://ricardo_milos.png"))
Илья
Булат
Patamen
Alexey
Друзья, подскажите, почему так. Не могу запустить go http.ListenAndServe(":3000", nil) в отдельной гоурутине. Пробовал по всякому, никак не хочет, приложение запускается и успешно завершается, т.е образного while working не наступает который тупо сервер крутит
Alexey
Alexandr
А зачем его в отдельной горутине вызывать? Мне казалось, что он под капотом и так в горутине идет
Alexey
Alexey
мне не надо его в евент луп пихать ниче такого ? Перехожу с питона в го
Илья
нет
Alexey
четко. спс
Илья
программа завершается после запуска сервера
нужно добавить ожидание чего-то, например сигнала завершения от ос
Илья
Остановить
Илья
почитай про Graceful Shutdown
Alexey
почитай про Graceful Shutdown
кажется понял логику, сейчас то не работало потому что по сути реализовал не полностью, ему надо еще описать процедуру завершения
Null
Гайд по использованию Protocol Buffers и gRPC для проектирования API в Go-приложении.
Читать
Dmitriy
Кто и как структурирует свои эндпоинты в веб проекте?
В примерах go kit, да и во многих других статьях показывается как все эндпоинты близкие по логике (например все что связано со счётом) складывается в один единый файл.
Начал делать также, но со временем с ростом проекта и его логики такие файлы начали распухать и достигать больше 3 тысяч строк кода, и найти что-то в таком файле его простым просмотром становится все трудней.
Все ли делают также? Или может есть другие подходы которые вы успешно применяете в проде?
Oleg
можно api оснастить простым языком запросов, чтобы фильтровать данные
query:
&field=[val1,val2] - in_array(field,[..,..]);
&field!=[val1,val2] - !in_array(field,[..,..]);
&field=val - field == 'val'
&field!=val - field !== 'val'
&field"=val - field == 'val' && field == 'VAL' && field == 'vAl' (регистр не учитывается)
&field*=val - field like 'val'
&field>=val - field >= 'val'
&field<=val - field <= 'val'
Larchenko
Larchenko
И логику в сервисы кинь
Larchenko
Или вообще разделить все на микросервисы
Null
Замена нескольких строк в Golang с помощью Replacer
https://dev-gang.ru/article/zamena-neskolkih-strok-v-golang-s-pomosczu-replacer-hsx350aece/
@Golang_google
Alexey
Кто и как структурирует свои эндпоинты в веб проекте?
В примерах go kit, да и во многих других статьях показывается как все эндпоинты близкие по логике (например все что связано со счётом) складывается в один единый файл.
Начал делать также, но со временем с ростом проекта и его логики такие файлы начали распухать и достигать больше 3 тысяч строк кода, и найти что-то в таком файле его простым просмотром становится все трудней.
Все ли делают также? Или может есть другие подходы которые вы успешно применяете в проде?
Привет, придерживайся https://github.com/golang-standards/project-layout
складывай свои хендлеры образно в /apiserver , в котором отсортируй по папкам если уж их так много, мне кажется у тебя так вышло, что в хендлере какая-то логика описывается, которую можно было б вынести отдельно, если я вопрос правильно понял,
если еще поможет, попробуй фасад реализовать, https://refactoring.guru/ru/design-patterns/facade
чисто 5 копеек вставил
Pushok
Ребят, есть какое расширение vscode для форматирования длинных строк?
fenogentov
Это линтеры делают
Булат
Мужчины
Булат
Всем саламалейкум здравствуйте
Булат
Кто шарит за бота - рассыльщика?
Булат
У нас затык в том, что бот пишет только в том случае, если он есть в чатах у user'a
Maks
А ты как хотел
Maks
Что бы он искал юзеров и писал им?
Maks
Эт уже не бот
Maks
Это спамер вонючий)
Булат
Он мне и нужен
Булат
у меня есть бд id
Булат
мне нужен вонючий спамер
Булат
Сможете помочь?
Maks
Я не уверер что бот технически может писать на стороне апи телеграма тем кто запретил это делать и удалил чат
Булат
Это будет первая рассылка для людей
🕷
🕷
Но там тоже свои ограничения
Булат
От души!
Булат
Лучшие!
🕷
у меня есть бд id
В тдлибе от пользователя айдишники после каждого запуска вроде как меняются если их хранишь не во внутренней базе
N
N
Случайно увидел. Сам не особо гофер.
N
Хм. Надо пробнуть переписать на питон или на го поюзать. Спасибо.
N
Думал, в тг запрет на первое сообщение
🕷
ds
поясните жсеру, указатели в го это переменные, копирующие значение переменой, к которой применен указатель?
Matvei
Типа
func mutStruct(a A) {
a.a = 5
fmt.Println(a.a) //5
}
func main() {
a := A{10}
mutStruct(a)
fmt.Println(a.a) //10
}
func mutStruct(a *A) {
a.a = 5
fmt.Println(a.a) //5
}
func main() {
a := A{10}
mutStruct(&a)
fmt.Println(a.a) //5
}
ds
ds
Matvei
Ну и через указатель можно получить доступ прямо к той "переменной", в которой хранится передаваемый параметр.
func do(a *int) {
*a = 5
}
func main(){
a := 10
do(&a)
fmt.Println(a) //5
}
Matvei
Это такое объяснение для ленивых. Если хотите в долгосрочной перспективе писать на го, то полезно будет узнать про то, как работает память в компьютере, и модель памяти го в частности
Matvei
то есть передаётся просто ссылка на сущность?
Можно и так сказать. Указатель это просто число - адрес некоторого множества ячеек памяти, и когда вы к нему обращаетесь из разных функций, они все обращаются к одной и той же памяти. А если вы передаёте какую-то структуру или что-то ещё как есть, по значению, то у каждой вызываемой функции будет выделяться новая память для этого параметра, и в него копироваться все содержимое передаваемого параметра
Matvei
Приколы начинаются, когда вы, например, передаёте структуру, внутри которой есть указатель, по значению. Так устроены под капотом слайсы в го, к примеру