mirror of
https://github.com/SantaSpeen/Rcon-VK-Bot.git
synced 2026-10-27 14:30:26 +00:00
[+] .rcon - MultiServer support
This commit is contained in:
1 parent
6fc868e48d
commit
a56a6506d6
1 file changed
+19
-10
+19
-10
@@ -47,28 +47,37 @@ class Bot:
|
|||||||
else:
|
else:
|
||||||
self.vk.messages.send(message=message, peer_id=peer_id, random_id=0)
|
self.vk.messages.send(message=message, peer_id=peer_id, random_id=0)
|
||||||
|
|
||||||
def rcon_cmd_handle(self, cmd, from_id, peer_id, _write=True, allow=False):
|
def _handle_rcon(self, message, _write=True, allow=False):
|
||||||
"""Проверка прав и выполнение RCON команды"""
|
"""Проверка прав и выполнение RCON команды"""
|
||||||
|
from_id = message['from_id']
|
||||||
|
peer_id = message['peer_id']
|
||||||
|
text = message['text']
|
||||||
|
logger.info(f"[BOT] {peer_id}:{from_id}:{text}")
|
||||||
|
tsplit = text.split(" ")
|
||||||
if allow:
|
if allow:
|
||||||
role = "console"
|
role = "console"
|
||||||
else:
|
else:
|
||||||
allow, role = self.perms.is_allowed(from_id, cmd.split()[0])
|
if tsplit[1] in self.hosts.hosts:
|
||||||
|
props = {"cmd": " ".join(tsplit[2:]), "server": tsplit[1]}
|
||||||
|
else:
|
||||||
|
props = {"cmd": " ".join(tsplit[1:])}
|
||||||
|
allow, role = self.perms.is_allowed(from_id, props['cmd'])
|
||||||
if allow:
|
if allow:
|
||||||
answer, _ = self.hosts.rcon(cmd)
|
answer, _ = self.hosts.rcon(**props)
|
||||||
if not answer:
|
if not answer:
|
||||||
answer = "Выполнено без ответа."
|
answer = "Выполнено без ответа."
|
||||||
logger.info(f"[BOT] User: {from_id}({role}) in Chat: {peer_id} use RCON cmd: \"{cmd}\", "
|
logger.info(f"[BOT] User: {from_id}({role}) in Chat: {peer_id} use RCON cmd: \"{props['cmd']}\", "
|
||||||
f"with answer: \"{answer}\"")
|
f"with answer: \"{answer}\"")
|
||||||
if _write:
|
if _write:
|
||||||
self.write(peer_id, answer)
|
self.write(peer_id, ("" if not props.get("server") else f"Ответ от {self.hosts._hosts_meta[props["server"]].get("name", props["server"])}:\n") + answer)
|
||||||
else:
|
else:
|
||||||
return answer
|
return answer
|
||||||
else:
|
else:
|
||||||
logger.info(f"[BOT] User: {from_id}({role}) in Chat: {peer_id} no have rights RCON cmd: \"{cmd}\".")
|
logger.info(f"[BOT] User: {from_id}({role}) in Chat: {peer_id} no have rights RCON cmd: \"{props['cmd']}\".")
|
||||||
if self.perms.no_rights: # Если есть текст
|
if self.perms.no_rights: # Если есть текст
|
||||||
self.write(peer_id, self.perms.no_rights)
|
self.write(peer_id, self.perms.no_rights)
|
||||||
|
|
||||||
def _bot_handle(self, message):
|
def _handle_bot(self, message):
|
||||||
from_id = message['from_id']
|
from_id = message['from_id']
|
||||||
if self.perms.is_allowed(from_id, "bot"):
|
if self.perms.is_allowed(from_id, "bot"):
|
||||||
peer_id = message['peer_id']
|
peer_id = message['peer_id']
|
||||||
@@ -97,7 +106,6 @@ class Bot:
|
|||||||
if not e:
|
if not e:
|
||||||
ping = r.latency
|
ping = r.latency
|
||||||
_, e = self.hosts.rcon("list", host, True)
|
_, e = self.hosts.rcon("list", host, True)
|
||||||
|
|
||||||
meta = self.hosts._hosts_meta[host]
|
meta = self.hosts._hosts_meta[host]
|
||||||
name = meta.get("name")
|
name = meta.get("name")
|
||||||
rcon_ok = meta.get('rcon_ok')
|
rcon_ok = meta.get('rcon_ok')
|
||||||
@@ -107,6 +115,7 @@ class Bot:
|
|||||||
else:
|
else:
|
||||||
s += f"\nㅤ✅ {host} ({name})"
|
s += f"\nㅤ✅ {host} ({name})"
|
||||||
if "-a" in tsplit or "--all" in tsplit:
|
if "-a" in tsplit or "--all" in tsplit:
|
||||||
|
# noinspection SpellCheckingInspection
|
||||||
s += (f":\n"
|
s += (f":\n"
|
||||||
f"ㅤㅤimportant: {meta['important']}\n"
|
f"ㅤㅤimportant: {meta['important']}\n"
|
||||||
f"ㅤㅤrcon_default: {meta['rcon'] == 1}\n"
|
f"ㅤㅤrcon_default: {meta['rcon'] == 1}\n"
|
||||||
@@ -140,9 +149,9 @@ class Bot:
|
|||||||
text = message['text']
|
text = message['text']
|
||||||
match text:
|
match text:
|
||||||
case i if i.startswith(".rcon "):
|
case i if i.startswith(".rcon "):
|
||||||
self.rcon_cmd_handle(i[6:], from_id, peer_id)
|
self._handle_rcon(message)
|
||||||
case i if i.startswith(".bot"):
|
case i if i.startswith(".bot"):
|
||||||
self._bot_handle(message)
|
self._handle_bot(message)
|
||||||
case "!help":
|
case "!help":
|
||||||
logger.info(f"[BOT] {peer_id}:{from_id}:{text}")
|
logger.info(f"[BOT] {peer_id}:{from_id}:{text}")
|
||||||
self.write(peer_id, self.help_message)
|
self.write(peer_id, self.help_message)
|
||||||
|
|||||||
Reference in new issue
Block a user