Add !editserver command

This commit is contained in:
jesopo 2019-07-04 13:15:51 +01:00
parent 6014a2b0da
commit 43c8ad0ff6
2 changed files with 44 additions and 0 deletions

View file

@ -135,3 +135,41 @@ class Module(ModuleManager.BaseModule):
exc_info=True) exc_info=True)
return return
event["stdout"].write("Added server '%s'" % alias) event["stdout"].write("Added server '%s'" % alias)
@utils.hook("received.command.editserver")
@utils.kwarg("min_args", 3)
@utils.kwarg("help", "Edit server details")
@utils.kwarg("usage", "<alias> <option> <value>")
@utils.kwarg("permission", "editserver")
def edit_server(self, event):
alias = event["args_split"][0]
server = self.bot.get_server_by_alias(alias)
if server == None:
raise utils.EventError("Unknown server '%s'" % alias)
option = event["args_split"][1].lower()
value = " ".join(event["args_split"][2:])
value_parsed = None
if option == "hostname":
value_parsed = value
elif option == "port":
if not value.isdigit():
raise utils.EventError("Invalid port")
value_parsed = int(value.lstrip("0"))
elif option == "tls":
value_lower = value.lower()
if not value_lower in ["yes", "no"]:
raise utils.EventError("TLS should be either 'yes' or 'no'")
value_parsed = value_lower == "yes"
elif option == "password":
value_parsed = value
elif option == "bindhost":
value_parsed = value
elif option in ["nickname", "username"]:
value_parsed = value
else:
raise utils.EventError("Unknown option '%s'" % option)
self.bot.database.servers.edit(server.id, option, value_parsed)
event["stdout"].write("Set %s for %s" % (option, alias))

View file

@ -39,6 +39,12 @@ class Servers(Table):
if value: if value:
return value[0] return value[0]
return value return value
def edit(self, id: int, column: str, value: typing.Any):
if not column in ["alias", "hostname", "port", "password", "tls",
"bindhost", "nickname", "username", "realname"]:
raise ValueError("Unknown column on servers table '%s'" % column)
self.database.execute(
"UPDATE servers SET %s=? WHERE server_id=?" % column, [value, id])
class Channels(Table): class Channels(Table):
def add(self, server_id: int, name: str): def add(self, server_id: int, name: str):