Бот отключается, как только разрывается соединение с 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 про две одинаковые клавиатуры знаю