Просмотр полной версии : Как удалять сообщение ботов в вк?
Хотел сделать 1 штуку в тех .поддержке в лс сообщества вк. Когда админ сообщества отвечает на сообщение у пользователя менялись кнопки. Но проблема в том что когда бот меняет кнопки он должен отправить сообщение. В итоге получается сообщение админа и следом пустое сообщение с кнопками. Хотел бы узнать как можно ботом удалить последнее пустое сообщение. Юзаю либу vk_api.php и нашёл там функцию request но я хз как нужно правильно указать аргументы для удаления последнего сообщения для всех пользователей. Сделайте пожалуйста пример.
messages.delete | Développeurs | VK (https://www.blast.hk/redirect/aHR0cHM6Ly92ay5jb20vZGV2L21lc3NhZ2VzLmRlbGV0ZQ)
vk.com
https://forum.antichat.xyz/attachments/27489563/
karimoff
03.05.2020, 19:05
request("messages.delete", ["message_ids" => "123", "spam" => 0, "group_id" => "173284322", "delete_for_all" => 1])
где 123 - ид сообщения, он возвращается в json когда отправляешь сообщения. т.е когда отправил сообщение, получаешь ид сообщения отправленного и сразу удаляешь, только хз зачем тебе, если можно кнопки отправлять вроде без сообщения
request("messages.delete", ["message_ids" => "123", "spam" => 0, "group_id" => "173284322", "delete_for_all" => 1])
где 123 - ид сообщения, он возвращается в json когда отправляешь сообщения. т.е когда отправил сообщение, получаешь ид сообщения отправленного и сразу удаляешь, только хз зачем тебе, если можно кнопки отправлять вроде без сообщения
Робит, мне нужно что-бы я писал сообщение челу и у него менялись кнопки. Сейчас я пишу сообщение следом идёт пустое сообщение и сразу же удаляется (это заметно так что неприятно). Я нашёл messages.denyMessagesFromGroup эта штуку запрещает отправку сообщений. Хотел сделать что-бы моё сообщение блокировалось и отправлялось уже ботом с кнопками.
Можно ли как-то сделать чтобы когда я отправлял сообщение она не показывалось в чате?
karimoff
03.05.2020, 23:05
Робит, мне нужно что-бы я писал сообщение челу и у него менялись кнопки. Сейчас я пишу сообщение следом идёт пустое сообщение и сразу же удаляется (это заметно так что неприятно). Я нашёл messages.denyMessagesFromGroup эта штуку запрещает отправку сообщений. Хотел сделать что-бы моё сообщение блокировалось и отправлялось уже ботом с кнопками.
Можно ли как-то сделать чтобы когда я отправлял сообщение она не показывалось в чате?
Кинь как ты кнопки отправляешь. Там же параметр "message" не нужно указывать, когда ты кнопки отправляешь. Если сообщение не указано, как оно может дойти до юзера?)
Кинь как ты кнопки отправляешь. Там же параметр "message" не нужно указывать, когда ты кнопки отправляешь. Если сообщение не указано, как оно может дойти до юзера?)
PHP:
if
(
$type
==
"message_reply"
and
isset
(
$data
-
>
object
-
>
admin_author_id
)
and
$array
[
$id
]
[
"support"
]
==
"1"
)
{
$array
[
$id
]
[
"support"
]
=
"2"
;
$vk
-
>
sendButton
(
$id
,
"
"
,
[
[
[
""
,
"Не понял вас"
,
"red"
]
,
[
""
,
"Спасибо за помощь"
,
"green"
]
]
,
[
[
""
,
"Можно подробнее"
,
"blue"
]
,
[
""
,
"Как это сделать?"
,
"blue"
]
]
,
[
[
"menu"
,
"Вернуться в меню"
,
"blue"
]
]
]
)
;
$vk
-
>
request
(
"messages.delete"
,
[
"message_ids"
=
>
$data
-
>
object
-
>
id
+
1
,
"spam"
=
>
"0"
,
"group_id"
=
>
"193829616"
,
"delete_for_all"
=
>
"1"
]
)
;
}
Как только я отвечаю юзеру у него должны измениться кнопки. Я следом за моим сообщением отправляю
(самый маленький символ пустоты) тем самым меняются кнопки и потом я удаляю это сообщение. ($array[$id]["support"] состояние нахождения в тех.поддержке)
Выходит что у юзера появляется пустое сообщение и удаляется (я хотел бы обойтись без этого)
karimoff
04.05.2020, 10:35
Отправь сюда функцию sendButton()
Отправь сюда функцию sendButton()
PHP:
public
function
sendButton
(
$sendID
,
$message
,
$gl_massiv
=
[
]
,
$one_time
=
False
)
{
$buttons
=
[
]
;
$i
=
0
;
foreach
(
$gl_massiv
as
$button_str
)
{
$j
=
0
;
foreach
(
$button_str
as
$button
)
{
$color
=
$this
-
>
replaceColor
(
$button
[
2
]
)
;
$buttons
[
$i
]
[
$j
]
[
"action"
]
[
"type"
]
=
"text"
;
if
(
$button
[
0
]
!=
null
)
$buttons
[
$i
]
[
$j
]
[
"action"
]
[
"payload"
]
=
json_encode
(
$button
[
0
]
,
JSON_UNESCAPED_UNICODE
)
;
$buttons
[
$i
]
[
$j
]
[
"action"
]
[
"label"
]
=
$button
[
1
]
;
$buttons
[
$i
]
[
$j
]
[
"color"
]
=
$color
;
$j
++
;
}
$i
++
;
}
$buttons
=
array
(
"one_time"
=
>
$one_time
,
"buttons"
=
>
$buttons
)
;
$buttons
=
json_encode
(
$buttons
,
JSON_UNESCAPED_UNICODE
)
;
//echo $buttons;
return
$this
-
>
request
(
'messages.send'
,
array
(
'message'
=
>
$message
,
'peer_id'
=
>
$sendID
,
'keyboard'
=
>
$buttons
)
)
;
}
karimoff
05.05.2020, 01:41
Попробуй юзнуть функцию ниже и вызывай так:
PHP:
sendButton
(
$id
,
[
[
[
""
,
"Не понял вас"
,
"red"
]
,
[
""
,
"Спасибо за помощь"
,
"green"
]
]
,
[
[
""
,
"Можно подробнее"
,
"blue"
]
,
[
""
,
"Как это сделать?"
,
"blue"
]
]
,
[
[
"menu"
,
"Вернуться в меню"
,
"blue"
]
]
]
)
PHP:
public
function
sendButton
(
$sendID
,
$gl_massiv
=
[
]
,
$one_time
=
False
)
{
$buttons
=
[
]
;
$i
=
0
;
foreach
(
$gl_massiv
as
$button_str
)
{
$j
=
0
;
foreach
(
$button_str
as
$button
)
{
$color
=
$this
-
>
replaceColor
(
$button
[
2
]
)
;
$buttons
[
$i
]
[
$j
]
[
"action"
]
[
"type"
]
=
"text"
;
if
(
$button
[
0
]
!=
null
)
$buttons
[
$i
]
[
$j
]
[
"action"
]
[
"payload"
]
=
json_encode
(
$button
[
0
]
,
JSON_UNESCAPED_UNICODE
)
;
$buttons
[
$i
]
[
$j
]
[
"action"
]
[
"label"
]
=
$button
[
1
]
;
$buttons
[
$i
]
[
$j
]
[
"color"
]
=
$color
;
$j
++
;
}
$i
++
;
}
$buttons
=
array
(
"one_time"
=
>
$one_time
,
"buttons"
=
>
$buttons
)
;
$buttons
=
json_encode
(
$buttons
,
JSON_UNESCAPED_UNICODE
)
;
//echo $buttons;
return
$this
-
>
request
(
'messages.send'
,
array
(
'peer_id'
=
>
$sendID
,
'keyboard'
=
>
$buttons
)
)
;
}
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot