mirror of
https://github.com/RussellChamp/tilde-projects.git
synced 2026-10-28 00:22:34 +00:00
Ported banterbot to pinhook framework and some other changes
This commit is contained in:
1 parent
0627b4a9e3
commit
bc102890b2
39 files changed
+1629
-507
No files matched your search
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/python3
|
||||
import random
|
||||
import re
|
||||
|
||||
dictDir = "/usr/share/dict/"
|
||||
|
||||
def getBanter(morphWord="bant", dictName="words"):
|
||||
with open(dictDir + dictName, "r") as dict:
|
||||
# get rid of all the words with apostrophes
|
||||
words = list(filter(lambda word: re.search(r"^[^']*$", word), dict.readlines()))
|
||||
|
||||
head = getBanterHead(words, morphWord)
|
||||
tail = getBanterTail(words, morphWord)
|
||||
|
||||
if head == "" and tail == "":
|
||||
return "" # dang, we just failed
|
||||
else:
|
||||
# pick randomly between non-empty strings
|
||||
return random.choice([w for w in [head, tail] if w != ""])
|
||||
|
||||
def getBanterHead(words, morphWord):
|
||||
morphHead = morphWord[0:-1]
|
||||
morphLast = morphWord[-1]
|
||||
|
||||
filtered = list(filter(lambda word: re.search(morphHead, word), words))
|
||||
if len(filtered) == 0:
|
||||
return "" # nothing applicable found
|
||||
|
||||
word = random.choice(filtered).strip("\n")
|
||||
end = word.find(morphHead) + len(morphHead)
|
||||
if end == len(word):
|
||||
return word + morphLast
|
||||
else:
|
||||
if "aeiou".find(word[end]) > -1: # just append 't'
|
||||
return word[:end] + morphLast + word[end:]
|
||||
else: # replace the letter with 'b'
|
||||
return word[:end] + morphLast + word[end + 1 :]
|
||||
|
||||
def getBanterTail(words, morphWord):
|
||||
morphTail = morphWord[1:]
|
||||
morphFirst = morphWord[0]
|
||||
|
||||
filtered = list(filter(lambda word: re.search(morphTail, word), words))
|
||||
if len(filtered) == 0:
|
||||
return "" # nothing applicable found
|
||||
|
||||
word = random.choice(filtered).strip("\n")
|
||||
start = word.find(morphTail)
|
||||
if start == 0:
|
||||
return morphFirst + word
|
||||
else:
|
||||
if "aeiou".find(word[start]) > -1: # just append a 'b'
|
||||
return word[:start] + morphFirst + word[start:]
|
||||
else: # replace the letter with 'b'
|
||||
return word[: start - 1] + morphFirst + word[start:]
|
||||
Reference in new issue
Block a user