Compare commits

...

2 commits

Author SHA1 Message Date
dece 31d7cc4284 translate: simplify the stupid ass mechanism
Now you either specify source/dest languages or nothing, way better.
2022-08-15 14:12:57 +02:00
dece 1e4184a18d bot: fix bad call 2022-08-15 14:11:14 +02:00
2 changed files with 20 additions and 17 deletions

View file

@ -14,6 +14,7 @@ from edmond.plugin import Plugin
class Bot(irc.client.SimpleIRCClient, Logger): class Bot(irc.client.SimpleIRCClient, Logger):
"""Main class for the IRC bot: handles connection and manages available plugins."""
CHANNELS_RUNTIME_KEY = "_channels" CHANNELS_RUNTIME_KEY = "_channels"
@ -194,7 +195,7 @@ class Bot(irc.client.SimpleIRCClient, Logger):
if self.done: if self.done:
return return
self.log_i("Stopping Edmond.") self.log_i("Stopping Edmond.")
self.__save_storage() self.save_storage()
if self.connection.is_connected(): if self.connection.is_connected():
self.connection.close() self.connection.close()
self.done = True self.done = True

View file

@ -9,6 +9,15 @@ from edmond.plugin import Plugin
class TranslatePlugin(Plugin): class TranslatePlugin(Plugin):
"""Translate text using the `translate` package.
The translate package can use a bunch of translation interfaces but the default is
MyMemory which is fine for our purposes. There are two ways to ask for a
translation:
- Without any additional params, the source language is autodetected and the target
language is specified in the config file;
- With BOTH source and target languages.
"""
REQUIRED_CONFIGS = [ REQUIRED_CONFIGS = [
"commands", "commands",
@ -42,19 +51,12 @@ class TranslatePlugin(Plugin):
def parse_words(self, words): def parse_words(self, words):
"""Parse given words for parameters and return (from, to, text).""" """Parse given words for parameters and return (from, to, text)."""
from_lang = "autodetect" # If no language specification is found, use default params.
to_lang = self.config["default_dest"] if (
num_param_found = 0 len(words) < 5
for word in words: or words[0] != self.config["param_source"]
if not word.startswith("!"): or words[2] != self.config["param_dest"]
break ):
num_param_found += 1 return "autodetect", self.config["default_dest"], " ".join(words)
param_word = word.lstrip("!") # Else use the parameters provided.
if not ":" in param_word: return words[1], words[3], " ".join(words[4:])
continue
param_name, param_value = param_word.split(":")
if param_name == self.config["param_source"]:
from_lang = param_value
elif param_name == self.config["param_dest"]:
to_lang = param_value
return from_lang, to_lang, " ".join(words[num_param_found:])