mirror of
https://github.com/brandons209/Red-bot-Cogs.git
synced 2024-06-16 17:35:26 +12:00
61 lines
2 KiB
Python
61 lines
2 KiB
Python
|
from redbot.core import Config, commands
|
||
|
import re
|
||
|
|
||
|
|
||
|
class Memeify(commands.Cog):
|
||
|
"""Makes things memey."""
|
||
|
|
||
|
def __init__(self, bot):
|
||
|
super().__init__()
|
||
|
|
||
|
self.config = Config.get_conf(self, identifier=2934875294)
|
||
|
self.bot = bot
|
||
|
|
||
|
@commands.command()
|
||
|
async def b(self, ctx, *, content: str = None):
|
||
|
"""Replaces all B's with :b:'s"""
|
||
|
if not content:
|
||
|
# gets above message
|
||
|
msg = (await ctx.channel.history(limit=2).flatten())[1].clean_content
|
||
|
if msg:
|
||
|
await ctx.send(self.__bify(msg, False))
|
||
|
else:
|
||
|
await ctx.send("Where's the :b:essage?")
|
||
|
else:
|
||
|
await ctx.send(self.__bify(ctx.message.clean_content, True))
|
||
|
|
||
|
# 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("^@|^#|^&")
|
||
|
bify = bify_str.split()
|
||
|
# remove first letter if it bifys the command message itself
|
||
|
if cmd:
|
||
|
bify.pop(0)
|
||
|
b = []
|
||
|
for i in bify:
|
||
|
# no code blocks >:(
|
||
|
i = i.replace("`", "")
|
||
|
# special cases for custom emojis and mentions
|
||
|
if i[0] == ":" and i[-1] == ":":
|
||
|
b.append(i + " ")
|
||
|
continue
|
||
|
elif mention.match(i):
|
||
|
b.append(i[0] + self.__bify_f(i[1:]) + " ")
|
||
|
continue
|
||
|
# adds the result to the list
|
||
|
b.append(self.__bify_f(i) + " ")
|
||
|
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
|
||
|
elif len(bif) > 1:
|
||
|
# replaces first letter with b
|
||
|
bif = "b" + bif[1:]
|
||
|
return bif.replace("b", ":b:")
|