PHP Как удалять сообщение ботов в вк?

Tema05

Известный
Автор темы
1,441
401
Хотел сделать 1 штуку в тех .поддержке в лс сообщества вк. Когда админ сообщества отвечает на сообщение у пользователя менялись кнопки. Но проблема в том что когда бот меняет кнопки он должен отправить сообщение. В итоге получается сообщение админа и следом пустое сообщение с кнопками. Хотел бы узнать как можно ботом удалить последнее пустое сообщение. Юзаю либу vk_api.php и нашёл там функцию request но я хз как нужно правильно указать аргументы для удаления последнего сообщения для всех пользователей. Сделайте пожалуйста пример.
Screenshot_3.jpg
 
  • Нравится
Реакции: Quit

karimoff

Участник
37
11
request("messages.delete", ["message_ids" => "123", "spam" => 0, "group_id" => "173284322", "delete_for_all" => 1])

где 123 - ид сообщения, он возвращается в json когда отправляешь сообщения. т.е когда отправил сообщение, получаешь ид сообщения отправленного и сразу удаляешь, только хз зачем тебе, если можно кнопки отправлять вроде без сообщения
 

Tema05

Известный
Автор темы
1,441
401
request("messages.delete", ["message_ids" => "123", "spam" => 0, "group_id" => "173284322", "delete_for_all" => 1])

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

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

karimoff

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

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

Tema05

Известный
Автор темы
1,441
401
Кинь как ты кнопки отправляешь. Там же параметр "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"] состояние нахождения в тех.поддержке)

Выходит что у юзера появляется пустое сообщение и удаляется (я хотел бы обойтись без этого)
 
  • Нравится
Реакции: Quit

Tema05

Известный
Автор темы
1,441
401
Отправь сюда функцию 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

Участник
37
11
Попробуй юзнуть функцию ниже и вызывай так:
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));
}