Как можно удалить сообщение с помощью бота VK API?

Как удалить сообщение, отправленное ботом, при помощи библиотеки vk_api? У меня есть следующий код: 

```python
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType

session = vk_api.VkApi(token="***")
vk = session.get_api()
longpoll = VkLongPoll(session)

def send_message(user_id, message):
    vk.messages.send(user_id=user_id, message=message, random_id=0)

def delete_message(message_id):
    vk.messages.delete(message_ids=message_id)

for event in longpoll.listen():
    if event.type == VkEventType.MESSAGE_NEW:
        if event.to_me:
            msg = event.text.lower()
            id = event.user_id
            if msg == 'начать':
                send_message(id, "здарова")
                delete_message(event.message_id)
                send_message(id, "как дела")
```

Несмотря на вызов `delete_message(event.message_id)`, первое сообщение не удаляется и сразу отправляется второе сообщение. Как исправить эту ошибку?
  • 22 декабря 2023 г. 20:37
Ответы на вопрос 1
Проблема в том, что вы вызываете метод `delete_message()` до того, как отправляете второе сообщение. При этом `delete_message()` выполняется асинхронно, и удаление не успевает завершиться до отправки второго сообщения. 

Чтобы исправить эту ошибку, можно переписать код следующим образом:

```python
for event in longpoll.listen():
    if event.type == VkEventType.MESSAGE_NEW:
        if event.to_me:
            msg = event.text.lower()
            id = event.user_id
            if msg == 'начать':
                send_message(id, "здарова")
                send_message(id, "как дела")
                delete_message(event.message_id)
```

Таким образом, сначала отправляются оба сообщения, а затем вызывается `delete_message()` для удаления первого сообщения. Теперь удаление будет происходить после отправки второго сообщения.
Похожие вопросы