diff --git a/memeify/info.json b/memeify/info.json index 211ecc2..4d9b45f 100644 --- a/memeify/info.json +++ b/memeify/info.json @@ -1,6 +1,7 @@ { "author": [ - "TheScriptPony" + "TheScriptPony", + "SPPayne" ], "description": "Meakes things memey.", "install_msg": "( ͡° ͜ʖ ͡°)", diff --git a/memeify/memeify.py b/memeify/memeify.py index 3562141..3a925ab 100644 --- a/memeify/memeify.py +++ b/memeify/memeify.py @@ -1,19 +1,24 @@ from redbot.core import Config, commands import re +import random +import string + +mention = re.compile("^@|^#|^&") +custom_emoji = re.compile("<:[^:]+:\d{18}>") +vowel = re.compile("^[aeiouAEIOU]") class Memeify(commands.Cog): """Makes things memey.""" + # ------------ common ------------ def __init__(self, bot): super().__init__() self.config = Config.get_conf(self, identifier=2934875294, force_registration=True) self.bot = bot - @commands.command() - async def bify(self, ctx, *, content: str = None): - """Replaces all B's with :b:'s""" + async def __get_content(self, ctx, content): if not content: msg_c = "" # gets previous messages @@ -23,19 +28,27 @@ class Memeify(commands.Cog): msg_c = i.clean_content break if msg_c: - await ctx.send(self.__bify(msg_c, False)) + return msg_c, False else: - await ctx.send("Where's the 🅱️essage?") + return else: - await ctx.send(self.__bify(ctx.message.clean_content, True)) + return ctx.message.clean_content, True + + # ------------ bify ------------ + @commands.command() + async def bify(self, ctx, *, content: str = None): + """Replaces all B's with :b:'s""" + msg_c = await self.__get_content(ctx, content) + if len(msg_c) != 2: + await ctx.send("Where's the 🅱️essage?") + else: + await ctx.send(self.__bify(*msg_c)) # takes a clean discord message and replaces all B's and # first characters with :b:, unless the word is 1 # character long, a custon emoji, or a ping. unicode # emojis are a bit fucked tho def __bify(self, bify_str, cmd) -> str: - mention = re.compile("^@|^#|^&") - custom_emoji = re.compile("<:[^:]+:\d{18}>") bify = bify_str.split(" ") # remove first letter if it bifys the command message itself if cmd: @@ -56,7 +69,6 @@ class Memeify(commands.Cog): return "".join(b) def __bify_f(self, bif) -> str: - vowel = re.compile("^[aeiouAEIOU]") if vowel.match(bif) and len(bif) > 1: # adds b in front of the word bif = "b" + bif @@ -64,3 +76,215 @@ class Memeify(commands.Cog): # replaces first letter with b bif = "b" + bif[1:] return bif.replace("b", "🅱️") + + # ------------ frenchify ------------ + # Based heavily on SSPayne's fake french accent translator + @commands.command() + async def frenchify(self, ctx, *, content: str = None): + """Writes a message with a french accent""" + msg_c = await self.__get_content(ctx, content) + if len(msg_c) != 2: + await ctx.send("No message") + else: + await ctx.send(self.__french_pre_f(*msg_c)) + + def __french_pre_f(self, french, cmd): + emoji_list = [] + if cmd: + french_cmd_fix = french.split(" ") + french_str = " ".join(french_cmd_fix[1:]) + else: + french_str = french + + emoji_match = re.finditer(custom_emoji, french_str) + for i in emoji_match: + emoji_list.append(i.group(0)) + french_list = re.split(custom_emoji, french_str) + + final = [] + for i in french_list: + final.append(self.__french(i)) + if emoji_list: + final.append(emoji_list.pop(0)) + + return "".join(final) + + # translated from SPPayne's fake french accent translator, + # as well as __compare_format() and __make_funny_es() + # https://github.com/SPPayne/fake_french_accent_translator + def __french(self, text): + text = text.replace("age", "aje") + text = text.replace("ale", "aile") + text = text.replace("ant", "ent") + text = text.replace("ared", "aired") + text = text.replace("ay", "ai") + text = text.replace("blem", "blaim") + text = text.replace("ble", "buhl") + text = text.replace("bout", "but") + text = text.replace("ck", "k") + text = text.replace("eal", "eahl") + text = text.replace("ear", "air") + text = text.replace("ess", "ez") + text = text.replace("ew", "u") + text = text.replace("gen", "jen") + text = text.replace("gon", "jen") + text = text.replace("ies", "ees") + text = text.replace("ill", "eehl") + text = text.replace("ing", "eng") + text = text.replace("ired", "iaired") + text = text.replace("ire", "iyaire") + text = text.replace("ise", "ize") + text = text.replace("ising", "izeeng") + text = text.replace("ist", "eest") + text = text.replace("ith", "iv") + text = text.replace("it's", "eet eez") + text = text.replace("i've", "I have") + text = text.replace("lar", "lair") + text = text.replace("logic", "lojic") + text = text.replace("loth", "luth") + text = text.replace("ment", "mont") + text = text.replace("ol", "ul") + text = text.replace("ool", "oo-el") + text = text.replace("oom", "uhm") + text = text.replace("orl", "hirl") + text = text.replace("or", "air") + text = text.replace("our", "ur") + text = text.replace("oute", "oote") + text = text.replace("out", "oot") + text = text.replace("shion", "she-on") + text = text.replace("sion", "she-on") + text = text.replace("some", "zum") + text = text.replace("stion", "stshe-on") + text = text.replace("suit", "zoot") + text = text.replace("them", "zem") + text = text.replace("thing", "theeng") + text = text.replace("tion", "she-on") + text = text.replace("tle", "-tell") + text = text.replace("ture", "tuair") + text = text.replace("ty", "tay") + text = text.replace("ver", "vair") + text = text.replace("you've", "you have") + + text_arr = text.split(" ") + + for key, word in enumerate(text_arr): + + if self.__compare_format(word) == "hello": + text_arr[key] = "'allo 'allo" + elif self.__compare_format(word) == "hi": + text_arr[key] = "'allo" + elif self.__compare_format(word) != "hello" and self.__compare_format(word) != "hi": + if word != "the" and word[:1] == "h": + text_arr[key] = "'" + word[1:] + + if self.__compare_format(word) == "i": + text_arr[key] = "ai" + + if self.__compare_format(word) == "yes": + text_arr[key] = "oui" + if self.__compare_format(word) == "no": + text_arr[key] = "non" + + if self.__compare_format(word) == "mister" or self.__compare_format(word) == "sir": + text_arr[key] = "Monsieur" + if ( + self.__compare_format(word) == "miss" + or self.__compare_format(word) == "missus" + or self.__compare_format(word) == "madame" + ): + text_arr[key] = "Madamoiselle" + + if self.__compare_format(word) == "it": + text_arr[key] = "eet" + if self.__compare_format(word) == "is": + text_arr[key] = "eez" + if self.__compare_format(word) == "in": + text_arr[key] = "een" + if self.__compare_format(word) == "and": + option = random.randrange(1, 5) + if option == 1: + text_arr[key] = "et" + + if self.__compare_format(word) == "my": + text_arr[key] = "mon" + if self.__compare_format(word) == "one": + text_arr[key] = "un" + if self.__compare_format(word) == "two": + text_arr[key] = "deux" + + if self.__compare_format(word)[-2:] == "ly": + text_arr[key] = word[:-2] + "-lee" + if self.__compare_format(word)[-3:] == "tre": + text_arr[key] = word[:-3] + "tair" + if self.__compare_format(word)[-2:] == "ke": + text_arr[key] = word[:-2] + "k" + + if self.__compare_format(word) == "the": + option = random.randrange(1, 4) + if option == 1: + text_arr[key] = "le" + elif option == 2: + text_arr[key] = "la" + elif option == 3: + text_arr[key] = "ze" + + if self.__compare_format(word) == "that": + text_arr[key] = "zat" + if self.__compare_format(word) == "they": + text_arr[key] = "zey" + if self.__compare_format(word) == "this": + text_arr[key] = "zis" + if self.__compare_format(word) == "their": + text_arr[key] = "zeir" + if self.__compare_format(word) == "there": + text_arr[key] = "zere" + if "er" in self.__compare_format(word) and self.__compare_format(word) != "there": + text_arr[key] = text_arr[key].replace("er", "air") + if self.__compare_format(word) == "then": + text_arr[key] = "zen" + if self.__compare_format(word) == "these": + text_arr[key] = "zese" + if self.__compare_format(word) == "so": + text_arr[key] = "zo" + + if self.__compare_format(word) == "french": + text_arr[key] = "francais" + + if self.__compare_format(word) == "shit": + text_arr[key] = "merde" + if self.__compare_format(word) == "god": + text_arr[key] = "Dieu" + + text = " ".join(text_arr) + text = text.replace("beee", "be-ee") + text = self.__make_funny_es(text) + " ".join(w.capitalize() for w in text.split()) + + return text + + def __compare_format(self, word): + word = word.translate(str.maketrans("", "", string.punctuation)) + word = word.lower() + return word + + def __make_funny_es(self, text): + bits = text.split("e") + text = "" + + for bit in bits: + option = random.randrange(1, 5) + if option == 4: + text += bit + "eacute" + else: + text += bit + "e" + + text = text.replace("eeacute", "ee") + text = text.replace("eacutee", "ee") + text = text.replace("eacuteeacute", "ee") + + if text.endswith("eacute"): + text = text[:-6] + elif text.endswith("e"): + text = text[:-1] + + return text