StealEmoji properly handle Emojis not having the `__dict__` attribute

Start fix for emoiji vs animated max error
pull/42/head
bobloy 7 years ago
parent da6bbccd3f
commit 8a3ffa4516

@ -15,6 +15,19 @@ async def fetch_img(session, url):
return await response.read() return await response.read()
async def check_guild(guild, emoji):
if len(guild.emojis) >= 100:
return False
if len(guild.emojis) < 50:
return True
if emoji.animated:
return sum(e.animated for e in guild.emojis) < 50
else:
return sum(not e.animated for e in guild.emojis) < 50
class StealEmoji(Cog): class StealEmoji(Cog):
""" """
This cog steals emojis and creates servers for them This cog steals emojis and creates servers for them
@ -23,11 +36,11 @@ class StealEmoji(Cog):
default_stolemoji = { default_stolemoji = {
"guildbank": None, "guildbank": None,
"name": None, "name": None,
"require_colons": False, "require_colons": None,
"managed": False, "managed": None,
"guild_id": None, "guild_id": None,
"url": None, "url": None,
"animated": False, "animated": None,
} }
def __init__(self, red: Red): def __init__(self, red: Red):
@ -55,10 +68,6 @@ class StealEmoji(Cog):
@stealemoji.command(name="bank") @stealemoji.command(name="bank")
async def se_bank(self, ctx): async def se_bank(self, ctx):
"""Add current server as emoji bank""" """Add current server as emoji bank"""
await ctx.send(
"This will upload custom emojis to this server\n"
"Are you sure you want to make the current server an emoji bank? (y//n)"
)
def check(m): def check(m):
return ( return (
@ -67,16 +76,35 @@ class StealEmoji(Cog):
and m.author == ctx.author and m.author == ctx.author
) )
already_a_guildbank = ctx.guild.id in (await self.config.guildbanks())
if already_a_guildbank:
await ctx.send(
"This is already an emoji bank\n"
"Are you sure you want to remove the current server from the emoji bank list? (y/n)"
)
else:
await ctx.send(
"This will upload custom emojis to this server\n"
"Are you sure you want to make the current server an emoji bank? (y/n)"
)
msg = await self.bot.wait_for("message", check=check) msg = await self.bot.wait_for("message", check=check)
if msg.content in ["N", "NO"]: if msg.content.upper() in ["N", "NO"]:
await ctx.send("Cancelled") await ctx.send("Cancelled")
return return
async with self.config.guildbanks() as guildbanks: async with self.config.guildbanks() as guildbanks:
guildbanks.append(ctx.guild.id) if already_a_guildbank:
guildbanks.remove(ctx.guild.id)
else:
guildbanks.append(ctx.guild.id)
await ctx.send("This server has been added as an emoji bank") if already_a_guildbank:
await ctx.send("This server has been removed from being an emoji bank")
else:
await ctx.send("This server has been added to be an emoji bank")
async def on_reaction_add(self, reaction: discord.Reaction, user: discord.User): async def on_reaction_add(self, reaction: discord.Reaction, user: discord.User):
"""Event handler for reaction watching""" """Event handler for reaction watching"""
@ -88,7 +116,7 @@ class StealEmoji(Cog):
print("Collecting is off") print("Collecting is off")
return return
emoji = reaction.emoji emoji: discord.Emoji = reaction.emoji
if emoji in self.bot.emojis: if emoji in self.bot.emojis:
print("Emoji already in bot.emojis") print("Emoji already in bot.emojis")
return return
@ -99,8 +127,9 @@ class StealEmoji(Cog):
guildbank = None guildbank = None
banklist = await self.config.guildbanks() banklist = await self.config.guildbanks()
for guild_id in banklist: for guild_id in banklist:
guild = self.bot.get_guild(guild_id) guild: discord.Guild = self.bot.get_guild(guild_id)
if len(guild.emojis) < 50: # if len(guild.emojis) < 50:
if await check_guild(guild, emoji):
guildbank = guild guildbank = guild
break break
@ -144,11 +173,14 @@ class StealEmoji(Cog):
# If you get this far, YOU DID IT # If you get this far, YOU DID IT
save_dict = self.default_stolemoji.copy() save_dict = self.default_stolemoji.copy()
e_dict = vars(emoji) e_attr_list = [a for a in dir(emoji) if not a.startswith("__")]
for k in save_dict.keys():
save_dict[k] = getattr(emoji, k, None)
for k in e_dict: # for k in e_attr_list:
if k in save_dict: # if k in save_dict:
save_dict[k] = e_dict[k] # save_dict[k] = getattr(emoji, k, None)
save_dict["guildbank"] = guildbank.id save_dict["guildbank"] = guildbank.id

Loading…
Cancel
Save