added bify

Co-authored-by: Sydney <github@sweetiebelle.org>
This commit is contained in:
TheScriptPony 2020-12-04 23:27:50 -05:00 committed by Sydney
parent bb082f8d75
commit 32bf258895
No known key found for this signature in database
GPG key ID: 6E62B942078EC9A2
3 changed files with 74 additions and 0 deletions

5
memeify/__init__.py Normal file
View file

@ -0,0 +1,5 @@
from .memeify import Memeify
def setup(bot):
bot.add_cog(Memeify(bot))

9
memeify/info.json Normal file
View file

@ -0,0 +1,9 @@
{
"author": [
"TheScriptPony"
],
"description": "Meakes things memey.",
"install_msg": "( ͡° ͜ʖ ͡°)",
"hidden": false,
"end_user_data_statement": "This cog does not store user data."
}

60
memeify/memeify.py Normal file
View file

@ -0,0 +1,60 @@
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:")