Eugene
тут надо определится с тем какая задача должна быть решена
Eugene
бот находится на контролируемом сервере?
Max
один не один, их много)
Eugene
тогда сгенерил токен и раздал ботам
Max
ну по сути, думаю если подсадить их на локальный хук, чеб нет
Eugene
плюс хттпс и достаточно
Eugene
вообще к примеру редис - там самый просто вариант доступа к базе - обычный пасс, тот же токен по сути
Stanislav
Надо возрождать поиск мейлру
Нененене, они опять индусскую поделку купят
Timofey
Кто чем пользуется для подключения к Telegram из Go? Нужно подключиться как клиенту (т.е. не через бот-апи). Попробовал зарегистрироваться как приложение и воспользоваться github.com/cjongseok/mtproto - получаю ошибки о флуде сообщениями, ну и низкоуровневые вещи протокола отлаживать надо. Попробовал https://github.com/vysheng/tg, не могу найти некоторых вещей. Например как подключиться к группе по имели или простой ссылке: https://t.me/GroupName (а не пригласительной с /join/KLJASDK)
Anonymous
Может jabber сойдёт?))
Anonymous
Можно вообще топорно сделать. Copy-paste.
Andrew
Если в бд postgresql используют тип Abstime, то какой тип использовать для записи модели этих данных в Go?
Максим
ботов которые представляются телеграмму как обычные клиенты очень интересно, а можете ткнуть носом в пример?
тут есть пример создания клиента https://github.com/shelomentsevd/telegramgo а при получении сообщения можно отвечать/хранить/по желанию, я себе напрогал сохранение сообщений с определенных групп.
Dmitry
тут есть пример создания клиента https://github.com/shelomentsevd/telegramgo а при получении сообщения можно отвечать/хранить/по желанию, я себе напрогал сохранение сообщений с определенных групп.
Спасибо. Но там подключаешься как обычный пользователь. А я думал бот может представляться обычным пользователем и сможет первый писать сообщения другим пользователям :(
Максим
только если подключаться из под какого то клиента и писать кому попало(или по списку), ботом при этом прикинуться нельзя, на сколько я знаю
Dmitry
так в бан можно получить :(
Igor
Привет! Подскажите. Ставлю менеджер зависимостей glide на windows 10, открывается консоль, и сразу закрываается, glide не ставится
Igor
Сталкивался кто нибудь?
Artem
запусти с администратором
Igor
тоже самое :(
Artem
откорой консоль и запусти через консоль, скорее всего увидишь ошибку
Igor
я просто скачивал бинарник и кидал в папку bin после чего все работало
он запускается только в папке bin, а глобально нет
Aleksandr
ставь dep
Igor
что за dep?
Aleksandr
golang dep
Aleksandr
не трать время на glide
Sergey
он запускается только в папке bin, а глобально нет
Как бы папку bin нужно path добавить
.
Вопрос по архитектуре
.
В бизнес логику пихают логику обработки полей запроса?
Alexander
валидаторы в смысле ?
.
но через адаптер
Artem
В бизнес логику пихают логику обработки полей запроса?
я б сказал да, так как обработка данных является частью бизнес логики
Максим
я? я для себя просто писал логи из телеги и моя задача решена, это просто был предложен вариант спросившему выше.
Timofey
тут есть пример создания клиента https://github.com/shelomentsevd/telegramgo а при получении сообщения можно отвечать/хранить/по желанию, я себе напрогал сохранение сообщений с определенных групп.
Это пробовали, точнее библиотеку, которой этот клиент пользуется. Много сложностей с самим протоколом, хотело бы более высокоуровневого общения.
Timofey
Я пользовал последнее как консольный клиент. В группы он может + в репозитории есть примеры как писать на нем ботов которые представляются телеграмму как обычные клиенты
В группы у меня получалось добавляться по ссылкам вида https://t.me/joinchat/XXXX , а по ссылками вида https://t.me/XXX - не получается.
Pawel
В бизнес логику пихают логику обработки полей запроса?
обработка полей запроса - это что например?
Sergey
Кто пользуется squirrel подскажите, будет ли сбрасываться предыдущее значение если вызывать метод SetMap в цикле? Или можно в значение мапы вставить срез из значений?
Sergey
Сам и отвечу на свой вопрос. SetMap позволяет только один раз установить значение, последующие вызовы заменяют предыдущее значение. Для нескольких значений лучше подойдет Values
Tigran
Что вы делаете, если вам надо сделать мапу (два инта) -> что-то? Заводите вспомогательную структуру c двумя интами? Делаете map[int]map[int]...?
Tigran
key := fmt.Sprintf("%d_%d", first_int, second_int)
🤔 а если это не инты, а что-то более сложное? Ну и выглядит не очень performant
Andrei 🦉
у вас наверняка используется куча либ, которые под капотом насилуют рантайм рефлексию на полную, так что подобной оптимизацией обычно не имеет смысла заморачиватся
Vladislav
Можно просто структуру использовать. Зачем эти извращения?
Max
Так, что тут за 🦉 ещё 🤔
Alexander
все любят совушек
Max
все любят совушек
Не могу не согласиться
freezlite
сложно дома сову держать?
freezlite
:(
🏁Александр
зато сможете сидеть с ней вместе ночью :)
Max
Им нужна отдельная комната
Max
Или вольер, если это условные сычики
Max
Но лучше на улице, конечно
Pawel
Что вы делаете, если вам надо сделать мапу (два инта) -> что-то? Заводите вспомогательную структуру c двумя интами? Делаете map[int]map[int]...?
структура с двумя интами. Я так и не понял почему одцы основатели Го не хотят добавить вязык тупалы
Pawel
key := fmt.Sprintf("%d_%d", first_int, second_int)
а вот за такое бить по рукам
Tigran
почему не перформант?
ну, потому что одно дело взять хэш от двух интов, а другое - сконвертировать их в строки и взять хэш от строки
Pawel
🤔 а если это не инты, а что-то более сложное? Ну и выглядит не очень performant
дело не в перформансе. это нарушает семантику значимого типа для ключа мапы - аргументы конструктора нельзя восстановить из значения ключа. Разве что парсить, но это долюоёбство
V
https://en.wikipedia.org/wiki/Pairing_function
Anonymous
ну, потому что одно дело взять хэш от двух интов, а другое - сконвертировать их в строки и взять хэш от строки
это реально сыграет роль? просто есть же встраиваемые бд, там все ключи строки как правило, и массово используются
V
нужно только такое делать - вопрос, надо знать что там у гошной мапы под капотом, даже интересно стало
Stepan
forever := make(chan bool) go func() { for d := range msgs { log.Printf(" [*] Waiting for messages. To exit press CTRL+C") path, err = filepath.Abs(string(d.Body)) utils.Assert(err) if _, err = os.Stat(path); os.IsNotExist(err) { failOnError(err, "%s file doesn't exitst", d) } fmt.Println("Подошли к проверке") avast := AvScan(path, 60) fmt.Println("Прошел проверку") avastJSON, err := json.Marshal(avast) utils.Assert(err) fmt.Println(string(avastJSON)) db, err := sql.Open("mysql", "****") if err != nil { panic(err.Error()) // Just for example purpose. You should use proper error handling instead of panic } defer db.Close() sqlStatement := `INSERT INTO ResultTable (Module, Result, FileID) VALUES (?, ?, ?)` _, err = db.Exec(sqlStatement, "Comodo", avastJSON, "10") if err != nil { panic(err.Error()) // proper error handling instead of panic in your app } } }() <-forever } Данный скрипт принимает сообщения из очереди, не могу понять почему он виснет после приема первого сообщения...
Stepan
На второе уже никак не реагирует