add module: shuffle (allows to shuffle message text in various ways)
This commit is contained in:
parent
1d22a31418
commit
b049f0a152
|
@ -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"
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"start_on_boot": true,
|
||||
"alias": "shuffle",
|
||||
"version": 2,
|
||||
"index_file": "index.py"
|
||||
}
|
Loading…
Reference in New Issue