diff --git a/config.json.example b/config.json.example index fd4e286..f8612d8 100644 --- a/config.json.example +++ b/config.json.example @@ -69,6 +69,9 @@ "doupsland": { "commands": ["doupsland"] }, + "duckland": { + "commands": ["duckland"] + }, "gpt3": { "openai_key": "", "join_lines": "; " diff --git a/edmond/plugins/duckland.py b/edmond/plugins/duckland.py new file mode 100644 index 0000000..f463db0 --- /dev/null +++ b/edmond/plugins/duckland.py @@ -0,0 +1,81 @@ +import random + +from edmond.plugin import Plugin + + +P_TIME = [ + "ce matin", "hier soir", "aujourd'hui", "tout à l'heure", "au réveil", "", + "pendant ma course", "à l'aube", +] +P_ACTION = [ + "j'ai aperçu", "j'ai caressé", "j'ai entendu", "j'ai passé du temps avec", + "je me suis arrêté vers", "je me suis promené avec", "j'ai salué", + "j'ai approché", "j'ai suivi", "je me suis assis devant", "j'ai regardé", + "j'ai parlé avec", "j'ai écouté", "je me suis endormi avec", "j'ai nourri", + "j'ai nadenade", +] +P_SUBJ_M = [ + "le canard", "le canard colvert", "le cygne", "le canard bleu", + "le canard siffleur", "le petit caneton" +] +P_SUBJ_F = [ + "la cane", "la poule d'eau", "la sarcelle", "la fuligule", "la macreuse", + "l'oie", "la harle", +] +P_PLACE = [ + "en ville", "au parc Georges Brassens", "à Montsouris", "sous l'arbre", + "au parc", "sur la plage", "sur le chemin", "dans l'herbe", + "devant l'école", "dans la petite cour", "sur la route de montagne", + "qui cancannait", "qui dormait", "qui était devant la boutique", + "qui voulait manger", "qui demandait du pain", "sous l'abri", + "sur le quai", "à l'autel", "à la station", "dans la ruelle", + "à Vanves", +] +P_COORD = [ + "et", "et donc", "et puis", "après quoi", +] +P_ACTION2_M = [ + "il a cancané", "il s'est endormi", "il m'a remercié", + "il est resté avec moi", "il m'a parlé", "il a fait coin", + "il m'a suivi", "il a reclamé du pain", "il a fait KWAK", + "il s'est roulé en boule", "il était mignon", "il a barboté", + "il a fouillé la vase", "il a plongé", "il est allé nager", + "il s'est envolé", "il est rentré chez lui", +] +P_ACTION2_F = [ + "elle a cancané", "elle s'est endormie", "elle m'a remercié", + "elle est restée avec moi", "elle m'a parlé", "elle a fait coin", + "elle m'a suivi", "elle a reclamé du pain", "elle a fait KWAK", + "elle s'est roulé en boule", "elle était mignonne", "elle a barboté", + "elle a fouillé la vase", "elle a plongé", "elle est allée nager", + "elle a surveillé ses canetons", "elle a suivi ses canetons", + "elle s'est envolée", "elle est rentrée chez elle", +] + + +def get_title(): + gender = random.choice("mfn") + return " ".join(( + random.choice(P_TIME), + random.choice(P_ACTION), + random.choice(P_SUBJ_M if gender == "m" else P_SUBJ_F), + random.choice(P_PLACE), + random.choice(P_COORD), + random.choice(P_ACTION2_M if gender == "m" else P_ACTION2_F), + )).strip().capitalize() + + +class DucklandPlugin(Plugin): + + REQUIRED_CONFIGS = ["commands"] + + def __init__(self, bot): + super().__init__(bot) + + def on_pubmsg(self, event): + if not self.should_handle_command(event.arguments[0]): + return False + + reply = get_title() + self.bot.say(event.target, reply) + return True