ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   Как удалять сообщение ботов в вк? (https://forum.antichat.xyz/showthread.php?t=1354100)

Tema05 03.05.2020 12:36

Хотел сделать 1 штуку в тех .поддержке в лс сообщества вк. Когда админ сообщества отвечает на сообщение у пользователя менялись кнопки. Но проблема в том что когда бот меняет кнопки он должен отправить сообщение. В итоге получается сообщение админа и следом пустое сообщение с кнопками. Хотел бы узнать как можно ботом удалить последнее пустое сообщение. Юзаю либу vk_api.php и нашёл там функцию request но я хз как нужно правильно указать аргументы для удаления последнего сообщения для всех пользователей. Сделайте пожалуйста пример.

messages.delete | Développeurs | VK

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 когда отправляешь сообщения. т.е когда отправил сообщение, получаешь ид сообщения отправленного и сразу удаляешь, только хз зачем тебе, если можно кнопки отправлять вроде без сообщения

Tema05 03.05.2020 21:42

Цитата:

Сообщение от karimoff

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

Цитата:

Сообщение от Tema05

Робит, мне нужно что-бы я писал сообщение челу и у него менялись кнопки. Сейчас я пишу сообщение следом идёт пустое сообщение и сразу же удаляется (это заметно так что неприятно). Я нашёл messages.denyMessagesFromGroup эта штуку запрещает отправку сообщений. Хотел сделать что-бы моё сообщение блокировалось и отправлялось уже ботом с кнопками.

Можно ли как-то сделать чтобы когда я отправлял сообщение она не показывалось в чате?

Кинь как ты кнопки отправляешь. Там же параметр "message" не нужно указывать, когда ты кнопки отправляешь. Если сообщение не указано, как оно может дойти до юзера?)

Tema05 04.05.2020 00:10

Цитата:

Сообщение от karimoff

Кинь как ты кнопки отправляешь. Там же параметр "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()

Tema05 04.05.2020 22:54

Цитата:

Сообщение от karimoff

Отправь сюда функцию 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
)
)
;
}



Время: 20:19