Предполагаю вам нужно запрос в базу переместить в MessageNew.
Т.е. алгоритм должен быть таким:
- вы получили запрос /dump
- сделали запрос в базу
- в цикле извлекли данные и записали их в Buffer
- одним сообщением ответили данными из Buffer
Например так:
lp.MessageNew(func(_ context.Context, obj events.MessageNewObject) {
// тут приходит новый запрос
if obj.Message.Text == "/dump" {
var str strings.Builder
// читаете данные из базы
res, err := db.Query("SELECT `report_id`, `content_type` FROM `xf_report` WHERE `report_state` = 'open'")
// по одном их обрабатываете и записываете в strings.Builder
for res.Next(){
err := res.Scan(&report.Report_id, &report.Content_type)
str.WriteString(...)
}
// тут у вас все данные собраны в str
// отправляете данные в ответ
send, err2 := vk.MessagesSend(api.Params{
"peer_id": 2000000001,
"random_id": 0,
"message": str.String(),
})
}
Я убрал из кода обработку ошибок и т.д., чтобы вам было лучше видно суть.