Бот отключается, как только разрывается соединение с Minecraft сервером по rcon

Я пишу rcon бота на Python (vk_api), и у меня возникла небольшая проблема. Сейчас я сделал возможность отключить сервер (Командой stop), однако есть одно но: при отключении сервера разрывается соединение, и из-за разрыва соединения отключается сам бот. Мне этого не нужно, можно ли это исправить?

import vk_api, json
from rcon.source import Client
from bot_settings import *
from vk_api.longpoll import VkLongPoll, VkEventType
from colorama import init, Fore

init(autoreset=True) 
bwa = True

vk_session = vk_api.VkApi(token=vktoken)
vk = vk_session.get_api()
longpoll = VkLongPoll(vk_session)

def get_but(text, color):
    return {
                "action": {
                    "type": "text",
                    "payload": "{\"button\": \"" + "1" + "\"}",
                    "label": f"{text}"
                },
                "color": f"{color}"
            }
 
keyboard1 = {
    "one_time" : False,
    "buttons" : [
        [get_but('⚙️ управление сервером', 'primary')],
        [get_but('? игроки', 'positive'), get_but('? мир', 'positive')],
        [get_but('ℹ️ лог', 'positive'), get_but('ℹ️ состояние сервера', 'positive')],
        [get_but('⚙️ Настройки бота', 'negative')]
    ]
}
keyboard1 = json.dumps(keyboard1, ensure_ascii = False).encode('utf-8')
keyboard1 = str(keyboard1.decode('utf-8'))

keyboard2 = {
    "one_time" : False,
    "buttons" : [
        [get_but('⏸️ выключить сервер', 'primary')],
        [get_but('⏪ в меню', 'negative')]
    ]
}
keyboard2 = json.dumps(keyboard2, ensure_ascii = False).encode('utf-8')
keyboard2 = str(keyboard2.decode('utf-8'))

def server_power_off():
    with Client(server_ip, int(rcon_port), passwd=rcon_password) as client:
        client.run('stop')
 

def sender_err1(id, text):
    vk_session.method('messages.send', {'user_id' : id, 'message' : text, 'random_id' : 0, 'keyboard' : keyboard1})

def sender1(id, text):
    vk_session.method('messages.send', {'user_id' : id, 'message' : text, 'random_id' : 0, 'keyboard' : keyboard1})

def sender2(id, text):
    vk_session.method('messages.send', {'user_id' : id, 'message' : text, 'random_id' : 0, 'keyboard' : keyboard2})

def main():
    for event in longpoll.listen():
        if event.type == VkEventType.MESSAGE_NEW:
            if event.to_me:
 
                id = event.user_id
                msg = event.text.lower()
 
                if msg == 'test':
                    sender1(id, 'fine')

                if msg == '⚙️ управление сервером':
                    print(Fore.GREEN + "ВЫБРАН ПУНКТ: УПРАВЛЕНИЕ СЕРВЕРОМ")
                    sender2(id, 'Выберите нужную вам опцию\n\nПерезагрузить сервера - перезагружает сервер\nВыключить сервер - завершить работу сервера\n\nДля возрата в меню нажмите кнопкк "в меню"')

                if msg == '⏸️ выключить сервер':
                    sender1(id, 'Сервер был успешно выключен ✅\n\n? Для продолжения работы бота с сервером, необходимо запустить вновь запустить сервер!\n\n? При использовании бота с выключенным сервером могут возникнуть ошибки, тогда вам будет необходим перезапуск бота!')
                    sender1(id, '❇️ Вы были перемещенны в меню!')
                    print(Fore.GREEN + "ПЕРЕЗАГРУЖАЕМ СЕРВЕР " + server_ip + "...")
                    print(Fore.GREEN + "СЕРВЕР " + server_ip + " БЫЛ ПЕРЕЗАГРУЖЕН!")
                    server_power_off()
                
                if msg == '⏪ в меню':
                    sender1(id, 'fine')

while bwa == True:
    main()

Спасибо!

p.s про две одинаковые клавиатуры знаю


Ответы (0 шт):