Merge pull request #12 from brandons209/bify-cog

Added bify
This commit is contained in:
Brandon 2020-12-18 01:03:26 -05:00 committed by GitHub
commit ad4d41292d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 80 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."
}

66
memeify/memeify.py Normal file
View file

@ -0,0 +1,66 @@
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, force_registration=True)
self.bot = bot
@commands.command()
async def bify(self, ctx, *, content: str = None):
"""Replaces all B's with :b:'s"""
if not content:
msg_c = ""
# gets previous messages
msg = await ctx.channel.history(limit=5).flatten()
for i in msg[1:]:
if i.clean_content:
msg_c = i.clean_content
break
if msg_c:
await ctx.send(self.__bify(msg_c, False))
else:
await ctx.send("Where's the 🅱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("^@|^#|^&")
custom_emoji = re.compile("<:[^:]+:\d{18}>")
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 custom_emoji.search(i):
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", "🅱️")