Добрый день. Столкнулся с такой проблемой, что очень часто прилетают ошибки с VKApi, вследствие чего бот ломается. При этом, из-за наличия двух циклов, сделать в самом начале while True: не получается, ибо бот входит в бесконечный цикл. Как сделать так, чтобы бот перезапускался после падения автоматически? Спасибо заранее.
# -*- coding: utf-8 -*-
import vk_api
import vk
import time
import json
import urllib.request
import requests
token = "-"
token_user = "-"
welcome =
start =
session = vk.Session(access_token=token_user)
api = vk.API(session ,v='5.92', lang='ru')
vk = vk_api.VkApi(token=token)
def get_button(label, color, payload=""):
return {
"action:": {
"type": "text",
"payload": json.dumps(payload),
"label": label
},
"color": color
}
keyboard = {
"one_time": False,
"buttons":[
[
{
"action":{
"type":"open_link",
"label":"Перейти на сайт forblitz.ru",
"link":"https://forblitz.ru/"
},
},
],
[
{
"action":{
"type":"open_link",
"label":"Приложение ForBlitz для Android",
"link":"https://forblitz.ru/app/"
},
},
],
[
{
"action":{
"type":"text",
"label":"Установка и удаление"
},
"color":"positive"
},
{
"action":{
"type":"text",
"label":"Список модов"
},
"color":"secondary"
}
],
[
{
"action":{
"type":"text",
"label":"Заказать мод"
},
"color":"secondary"
},
{
"action":{
"type":"text",
"label":"Мод не работает"
},
"color":"secondary"
}
],
[
{
"action":{
"type":"open_app",
"app_id": 5748831,
"label":"Рассылка",
"owner_id":-116432643
},
},
{
"action":{
"type":"text",
"label":"Позвать человека"
},
"color":"negative"
}
],
[ {
"action":{
"type":"text",
"label":"Статус работы приложения и сайта",
},
"color":"primary"
},
]
]
}
keyboard = json.dumps(keyboard, ensure_ascii=False).encode('utf-8')
keyboard = str(keyboard.decode('utf-8'))
while True:
messages = vk.method("messages.getConversations", {"offset": 0, "count": 20, "filter": "unanswered"}) #получение всех бесед бота
if messages["count"] >= 1:
id = messages["items"][0]["last_message"]["from_id"]
body = messages["items"][0]["last_message"]["text"]
if body == "Привет":
vk.method("messages.send", {"peer_id": id, "message": welcome, "random_id": 0})
elif body == "Начать":
vk.method("messages.send", {"peer_id": id, "message": start, "keyboard": keyboard, "random_id": 0})
elif body == "Установка и удаление":
vk.method("messages.send", {"peer_id": id, "message": install_and_remove, "random_id": 0})
elif body == "Список модов":
vk.method("messages.send", {"peer_id": id, "message": mod_list, "random_id": 0})
elif body == "Заказать мод":
vk.method("messages.send", {"peer_id": id, "message": mod_order, "random_id": 0})
elif body == "Мод не работает":
vk.method("messages.send", {"peer_id": id, "message": mod_not_working, "random_id": 0})
elif body == "Статус работы приложения и сайта":
vk.method("messages.send", {"peer_id": id, "message": "Статус работы приложения указан в статусе сообщества и обновляется каждые 30 минут.", "random_id": 0})
elif body == "Позвать человека":
vk.method("messages.send", {"peer_id": id, "message": call_human, "random_id": 0})
time.sleep(1) #задержка перед ответом бота (в секундах)