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()
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):
"""
This cog steals emojis and creates servers for them
@ -23,11 +36,11 @@ class StealEmoji(Cog):
default_stolemoji = {
"guildbank": None,
"name": None,
"require_colons": False,
"managed": False,
"require_colons": None,
"managed": None,
"guild_id": None,
"url": None,
"animated": False,
"animated": None,
}
def __init__(self, red: Red):
@ -55,10 +68,6 @@ class StealEmoji(Cog):
@stealemoji.command(name="bank")
async def se_bank(self, ctx):
"""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):
return (
@ -67,16 +76,35 @@ class StealEmoji(Cog):
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)
if msg.content in ["N", "NO"]:
if msg.content.upper() in ["N", "NO"]:
await ctx.send("Cancelled")
return
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):
"""Event handler for reaction watching"""
@ -88,7 +116,7 @@ class StealEmoji(Cog):
print("Collecting is off")
return
emoji = reaction.emoji
emoji: discord.Emoji = reaction.emoji
if emoji in self.bot.emojis:
print("Emoji already in bot.emojis")
return
@ -99,8 +127,9 @@ class StealEmoji(Cog):
guildbank = None
banklist = await self.config.guildbanks()
for guild_id in banklist:
guild = self.bot.get_guild(guild_id)
if len(guild.emojis) < 50:
guild: discord.Guild = self.bot.get_guild(guild_id)
# if len(guild.emojis) < 50:
if await check_guild(guild, emoji):
guildbank = guild
break
@ -144,11 +173,14 @@ class StealEmoji(Cog):
# If you get this far, YOU DID IT
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:
if k in save_dict:
save_dict[k] = e_dict[k]
# for k in e_attr_list:
# if k in save_dict:
# save_dict[k] = getattr(emoji, k, None)
save_dict["guildbank"] = guildbank.id

Loading…
Cancel
Save