Сообщение от
SoberBuddy
Можете, пожалуйста, поделиться решением?
Привет, сам код для нажатия кнопки примерно такой:
code:
Код:
mes
=
vk_session
.
method
(
"messages.getHistory"
,
{
"peer_id"
:
айди_группы
,
"count"
:
1
# количество сообщений
}
)
for
i
in
mes
[
"items"
]
[
0
]
[
"keyboard"
]
[
"buttons"
]
[
0
]
:
# во всей ***не, которую даёт getHistory, перебирает чисто кнопочки
if
"текст_кнопки"
in
i
[
"action"
]
[
"label"
]
:
# ищет кнопку с нужным текстом
button
=
[
i
[
"action"
]
[
"label"
]
,
i
[
"action"
]
[
"payload"
]
]
# записывает текст и payload кнопки в отдельный массив
vk_session
.
method
(
"messages.send"
,
{
"random_id"
:
0
,
"message"
:
button
[
0
]
,
# текст, который отправляется при нажатии кнопки, обычно такой же как и текст на кнопке
"peer_id"
:
айди_группы
,
"payload"
:
button
[
1
]
# некоторые боты добавляют эту ***ню, не ебу, но нужно, чтоб нажалась
}
)
получаешь последнее сообщение, если просто выведешь то, что тебе выдаст метод getHistory, то там будет много всякой ***ни, эти кнопки снизу, как бы привязаны к последнему сообщению и можешь так их получать. Кнопки, как на скрине в первом сообщении темы, могут быть на разных строках, т.к. *** знает где какая может быть и, чтобы в случае их перемещения ничего не сломалось, я делал перебор этих кнопок через цикл, когда находит кнопку с нужной надписью, сохраняет её точный текст и payload, а потом уже отправляет ответ сообщение, которое имитирует нажатие самой кнопки.
этот перебор, конечно, можно было бы сделать и лучше и без лишнего массива, сразу отправлять ответ, но я давно не занимался этим и мне пох было особо. Можешь поразбираться в том, что тебе возвращает getHistory