Daniel
теперь вы можете сами решить, лучше ли он
Stanislav
Dmitry
Slava
Dmitry
Slava
только так можно заработать миллиарды ^_^
Dmitry
Daniel
передать, конечно
Daniel
не надо общий конфиг втаскивать в кишки
Daniel
но!
Daniel
правильно организованный конфиг будет состоять из структур, которые как раз и можно будет отправить в сервис
Daniel
Возможно
Daniel
А, возможно, удобно указать инфу для парсера тегами
Daniel
имя параметра, описание параметра
Kirill
Шорткат? Так если их на самом нижнем уровне задавать, могут со временем появиться конфликты
Kirill
Я, конечно, не настоящий сварщик, а маску я на стройке нашёл, и сверхкрупные cli, возможно, и не делал, но всё же - смотря какую инфу там писать
Kirill
Описание-то можно из коммента вычитать при желании
Fastumkruk
Maxim
хорошо
Не знаю в чём у вас проблема. У меня кнопка спокойно тречится после клика
Maxim
func main() {
bot, err := tg.New(accessToken)
errCheck(err)
for update := range bot.NewLongPollingChannel(nil) {
switch update.Type() {
case tg.UpdateMessage:
upd := update.Message
dlog.D(upd)
if !bot.IsCommandToMe(upd) {
continue
}
msg := tg.NewMessage(upd.Chat.ID, "hello world")
msg.ReplyMarkup = tg.NewInlineKeyboardMarkup(
tg.NewInlineKeyboardRow(
tg.NewInlineKeyboardButton("click me!", "super secret"),
),
)
bot.SendMessage(msg)
case tg.UpdateCallbackQuery:
upd := update.CallbackQuery
dlog.D(upd)
default:
dlog.D(update)
}
}
}
Maxim
func main() {
bot, err := tg.New(accessToken)
errCheck(err)
for update := range bot.NewLongPollingChannel(nil) {
switch update.Type() {
case tg.UpdateMessage:
upd := update.Message
dlog.D(upd)
if !bot.IsCommandToMe(upd) {
continue
}
msg := tg.NewMessage(upd.Chat.ID, "hello world")
msg.ReplyMarkup = tg.NewInlineKeyboardMarkup(
tg.NewInlineKeyboardRow(
tg.NewInlineKeyboardButton("click me!", "super secret"),
),
)
bot.SendMessage(msg)
case tg.UpdateCallbackQuery:
upd := update.CallbackQuery
dlog.D(upd)
default:
dlog.D(update)
}
}
}
ID: (string) (len=18) "1234567890",
InlineMessageID: (string) "",
ChatInstance: (string) (len=20) "-1234567890",
Data: (string) (len=12) "super secret",
GameShortName: (string) "",
From: (*telegram.User)(0xc4201a13b0)({
ID: (int) 1234567890,
IsBot: (bool) false,
FirstName: (string) (len=5) "Maxim",
LastName: (string) (len=7) "Lebedev",
Username: (string) (len=6) "toby3d",
LanguageCode: (string) (len=2) "ru"
}),
Message: (*telegram.Message)(0xc4203e0380)({
ID: (int) 1488,
ForwardFromMessageID: (int) 0,
From: (*telegram.User)(0xc4201a1400)({
ID: (int) 1234567890,
IsBot: (bool) true,
FirstName: (string) (len=32) "Давай до свидания",
LastName: (string) "",
Username: (string) (len=12) "toby3d_robot",
LanguageCode: (string) ""
}),
ForwardFrom: (*telegram.User)(<nil>),
LeftChatMember: (*telegram.User)(<nil>),
Date: (int64) 1527943720,
ForwardDate: (int64) 0,
EditDate: (int64) 0,
MigrateToChatID: (int64) 0,
MigrateFromChatID: (int64) 0,
Chat: (*telegram.Chat)(0xc42029c960)({
ID: (int64) 1234567890,
Type: (string) (len=7) "private",
Title: (string) "",
Username: (string) (len=6) "toby3d",
FirstName: (string) (len=5) "Maxim",
LastName: (string) (len=7) "Lebedev",
Description: (string) "",
InviteLink: (string) "",
StickerSetName: (string) "",
AllMembersAreAdministrators: (bool) false,
CanSetStickerSet: (bool) false,
Photo: (*telegram.ChatPhoto)(<nil>),
PinnedMessage: (*telegram.Message)(<nil>)
}),
...
Maxim
И даже что-то делать могу на её основе:
...
case tg.UpdateCallbackQuery:
upd := update.CallbackQuery
dlog.D(upd)
ans := tg.NewAnswerCallbackQuery(upd.ID)
ans.Text = "sosi pisos"
bot.AnswerCallbackQuery(ans)
Maxim
Более того, режим inline mode в папаботе не влияет на работу кнопок. Только на режим поиска в поле ввода
Fastumkruk
heavycharged
Друзья, кто юзал либу tealeg/xlsx, можете подкинуть идей? Пишу в файл хидер (заголовок таблицы) - все ок. Начинаю писать ниже - и ничего не пишеться. Что за хрень может быть? Кто-то может сталкивался?
heavycharged
Причем есть метод WriteHeader(), в нем пишется хидер, есть метод Save() который сохраняет таблицу, если в нем вызвать x.sheet.Cell(10, 2).Value = "TEST", то в таблицу запишет тест.
а вот метод AddPosition у моей структуры вообще ничего не хочет писать. Дебагером ловлю брейкпойнты, все вызывается, значения все ок, но в тупую ничего не пишет.
Dmitry
heavycharged
не, AddPosition это метод моей структурки, внутри которой есть *xlsx.File и *xlsx.Sheet
heavycharged
Я уже даже написал метод FillDemoData, и оттуда тоже ничего не пишет.
Dmitry
1 вариант : ты пишешь не туда . 2 вариант: ты пишешь рано или поздно
Dmitry
3 вариант - это баг, но он маловероятен в репе с 2к звездочками
heavycharged
да это мой ебак скорее всего, потому что:
у меня есть 4 метода:
1. RegisterSuppliers([]string) - регистрирует поставщиков (шапка файла), тут все ок, они записываются
2. AddPosition(Sku) - записывает артикул в ячейку (отсюда ни одна запись не происходит)
3. AddDemoData() - написал для дебага, отсюда тоже ни одна запись не попадает
4. Save() - сохраняет файл, отсюда вся запись происходит нормально. Все методы определены через pointer reciever.
heavycharged
2 метод пробывал в тупую писать "TEST", ни в одну ячейку ничего не попало
heavycharged
асинхронщины тут нет
heavycharged
т.е., вариант 1: я пишу не туда. но как это может быть - ума не приложу.
heavycharged
func (x *XlsxWriter) AddPosition(sku Sku) error {
for row := 0; row < 10; row++ {
for col := 0; col < 100; col++ {
x.sheet.Cell(row, col).Value = "test value"
}
}
return nil
}
heavycharged
вот в тупую итерируюсь по ячейкам и пишу везде один и тот же текст: "test value"
heavycharged
а вот файл: https://i.imgur.com/qKFsWhQ.png
heavycharged
а сейчас, ради прикола скопирую цикл в RegisterSuppliers
heavycharged
https://i.imgur.com/DRcrLqy.png
heavycharged
ну что за дичь то, а?
heavycharged
func (x *XlsxWriter) RegisterSuppliers(suppliers []string) error {
for row := 0; row < 10; row++ {
for col := 0; col < 100; col++ {
x.sheet.Cell(row, col).Value = "test value"
}
}
return nil
}
heavycharged
перенес цикл в метод Save(), видно даже что стили сохранились от RegisterSupplier(): https://i.imgur.com/cDDvZjw.png
Dmitry
ну значит ищи между вызовами этих двух функций
Dmitry
Register и AddPosition
Dmitry
такое чувство что у тебя задвоился xlsxwriter где то
heavycharged
вот смотри, три вызова, одинаковые до безобразия:
1. RegisterSupplier() - пишет в первый столбец
2. AddPosition() - во второй столбец
3. Save() - в третий столбец
https://i.imgur.com/jDAGkdm.png
heavycharged
вот тестовый метод: https://pastebin.com/raw/wadr59se
Dmitry
ну значит не в методах проблема а в данных что в них передаются
heavycharged
ну как в данных-то? методы тупо одинаковые.
heavycharged
сам интерфейс, хз чем он может помочь правда:
type ParsingResultWriter interface {
RegisterSuppliers(suppliers []string) error
AddPosition(sku Sku) error
Save(name string) error
}
heavycharged
я уже вышвырнул из методов всю логику, оставил тупо запись в разные столбцы, для дебага
heavycharged
блядь, я дебил
Fastumkruk
heavycharged
я же дергаю в тесте сохранение раньше
heavycharged
всем спасибо за помощь
heavycharged
Dmitry
Fastumkruk
Slava
никто не хочет в посёлок программистов на поучиться программированию на свежем воздухе? http://hutorium.ru/
Sebor▂▅▇█▓▒░
Там написано, что для детей)
Slava
а так же их родителей =)
🏁Александр
а можно я поеду и буду умничать с задней парты?
🏁Александр
ну позязя
🏁Александр
/me готовит плакаты "ООП для лохов" "вы не знаете на что подписались"
🏁Александр
еще пару истории для "у костра" в стиле "1 ночь для выкладки и допила в прод" 🙂
Slava
ну если не боишься опростоволоситься перед школьниками
Slava
а то дети умные нынче пошли
🏁Александр
стандартное заблуждение
Dmitry
Dmitry
неужто менеджеры слова continous integration не знают ?
🏁Александр
ну в основном из за распиздяйства разработчиков и хотелок перед релизом
🏁Александр
"пацаны, завтра выкладываемся но я хотел еще этот плевый функционал..."
🏁Александр
это стандартная фраза с которой начинается треш