From b049f0a152c5899fb2d156881af380945885a40c Mon Sep 17 00:00:00 2001 From: dymik739 Date: Sun, 12 Nov 2023 11:08:19 +0200 Subject: [PATCH] add module: shuffle (allows to shuffle message text in various ways) --- modules/shuffle/index.py | 107 ++++++++++++++++++++++++++++++++++++++ modules/shuffle/meta.json | 6 +++ 2 files changed, 113 insertions(+) create mode 100644 modules/shuffle/index.py create mode 100644 modules/shuffle/meta.json diff --git a/modules/shuffle/index.py b/modules/shuffle/index.py new file mode 100644 index 0000000..0c45d35 --- /dev/null +++ b/modules/shuffle/index.py @@ -0,0 +1,107 @@ +import random + +module_path = "" + +def extract_separators(text): + sequence_buf = "" + seps = [] + + for i in text: + if i in ["\n", " "]: + sequence_buf += i + elif sequence_buf: + seps.append(sequence_buf) + sequence_buf = "" + + return seps + +def process(message, path): + if not message.text.lower().startswith("!shuf"): + return "", None + + global module_path + module_path = path + + cmd = message.text.split() + print(cmd) + l = len(cmd) + + # settings + split_by = "word" + shuf_individual_words = False + data_source = "reply" + only_spaces = False + + shuf_data = [] + + i = 1 + + # parsing arguments + while i < l: + print("C", i, cmd[i]) + if cmd[i][0] != "-" or cmd[i] == "--": + break + elif cmd[i] == "-i": + shuf_individual_words = True + elif cmd[i] == "-c": + split_by = "char" + elif cmd[i] == "-o": + only_spaces = True + i += 1 + + # parsing text (if any) + while i < l: + print("T", i, cmd[i]) + data_source = "internal" + if split_by == "char": + for c in cmd[i]: + shuf_data.append(c) + shuf_data.append(" ") + elif split_by == "word": + if shuf_individual_words: + shuf_data.append(list(cmd[i])) + else: + shuf_data.append(cmd[i]) + + i += 1 + + if data_source == "reply": + seps = extract_separators(message['reply_to_message'].text) + else: + seps = extract_separators(message.text) + + if data_source == "reply": + for w in message['reply_to_message'].text.split(): + if split_by == "char": + for c in w: + shuf_data.append(c) + elif split_by == "word": + if shuf_individual_words: + shuf_data.append(list(w)) + else: + shuf_data.append(w) + + if split_by == "word": + if shuf_individual_words: + for w in shuf_data: + random.shuffle(w) + + if only_spaces: + return " ".join(["".join(w) for w in shuf_data]), "HTML" + else: + return "".join([i[0] + i[1] for i in zip(["".join(w) for w in shuf_data], seps)]) + "".join(shuf_data[-1]), "HTML" + else: + random.shuffle(shuf_data) + + if only_spaces: + return " ".join(shuf_data), "HTML" + else: + return "".join([i[0] + i[1] for i in zip(shuf_data, seps)]) + shuf_data[-1], "HTML" + elif split_by == "char": + if only_spaces: + shuf_data += [" " for i in seps] + else: + shuf_data += seps + + random.shuffle(shuf_data) + return "".join(shuf_data), "HTML" diff --git a/modules/shuffle/meta.json b/modules/shuffle/meta.json new file mode 100644 index 0000000..ac55996 --- /dev/null +++ b/modules/shuffle/meta.json @@ -0,0 +1,6 @@ +{ + "start_on_boot": true, + "alias": "shuffle", + "version": 2, + "index_file": "index.py" +}