async def faction_invite(self, ctx): if not sql.guild_is_faction(ctx.guild.id): await ctx.send(ctx.s("faction.must_be_a_faction")) return if not ctx.invoked_subcommand or ctx.invoked_subcommand.name == "invite": invite = sql.guild_get_by_id(ctx.guild.id).faction_invite if invite: await ctx.send(invite) else: await ctx.send(ctx.s("faction.no_invite"))
async def faction_alias(self, ctx): if not sql.guild_is_faction(ctx.guild.id): await ctx.send(ctx.s("faction.must_be_a_faction")) return if not ctx.invoked_subcommand or ctx.invoked_subcommand.name == "alias": alias = sql.guild_get_by_id(ctx.guild.id).faction_alias if alias: await ctx.send(alias) else: await ctx.send(ctx.s("faction.no_alias"))
async def faction_emblem(self, ctx): if not sql.guild_is_faction(ctx.guild.id): await ctx.send(ctx.s("faction.must_be_a_faction")) return if not ctx.invoked_subcommand or ctx.invoked_subcommand.name == "emblem": emblem = sql.guild_get_by_id(ctx.guild.id).faction_emblem if emblem: await ctx.send(emblem) else: await ctx.send(ctx.s("faction.no_emblem"))
async def faction_desc(self, ctx): if not sql.guild_is_faction(ctx.guild.id): await ctx.send(ctx.s("faction.must_be_a_faction")) return if not ctx.invoked_subcommand or ctx.invoked_subcommand.name == "desc": desc = sql.guild_get_by_id(ctx.guild.id).faction_desc if desc: await ctx.send(desc) else: await ctx.send(ctx.s("faction.no_description"))
async def faction_color(self, ctx): if not sql.guild_is_faction(ctx.guild.id): await ctx.send(ctx.s("faction.must_be_a_faction")) return if not ctx.invoked_subcommand or ctx.invoked_subcommand.name == "color": color = sql.guild_get_by_id(ctx.guild.id).faction_color img = Image.new('RGB', (32, 32), color) with io.BytesIO() as bio: img.save(bio, format="PNG") bio.seek(0) f = discord.File(bio, "color.png") await ctx.send('0x{0:06X}'.format(color), file=f)
async def assemble(self, ctx, name, alias=""): if sql.guild_is_faction(ctx.guild.id): await ctx.send(ctx.s("faction.already_faction")) return name = re.sub("[^\S ]+", "", name) if not (6 <= len(name) <= 32): raise BadArgumentErrorWithMessage(ctx.s("faction.err.name_length")) if sql.guild_get_by_faction_name(name): await ctx.send(ctx.s("faction.name_already_exists")) return alias = re.sub("[^A-Za-z]+", "", alias).lower() if alias and not (1 <= len(alias) <= 5): raise BadArgumentErrorWithMessage(ctx.s("faction.err.alias_length")) if sql.guild_get_by_faction_alias(alias): await ctx.send(ctx.s("faction.alias_already_exists")) return sql.guild_faction_set(ctx.guild.id, name=name, alias=alias) await ctx.send(ctx.s("faction.assembled").format(name))
async def disband(self, ctx): if not sql.guild_is_faction(ctx.guild.id): await ctx.send(ctx.s("faction.must_be_a_faction")) return sql.guild_faction_disband(ctx.guild.id) await ctx.send(ctx.s("faction.disbanded"))
async def faction_name(self, ctx): if not sql.guild_is_faction(ctx.guild.id): await ctx.send(ctx.s("faction.must_be_a_faction")) return if not ctx.invoked_subcommand or ctx.invoked_subcommand.name == "name": await ctx.send(sql.guild_get_by_id(ctx.guild.id).faction_name)