async def character(self, ctx, *, name: str = None): """Switches the active character.""" user_characters = await self.bot.mdb.characters.find({ "owner": str(ctx.author.id) }).to_list(None) if not user_characters: return await ctx.send('You have no characters.') if name is None: active_character: Character = await Character.from_ctx(ctx) return await ctx.send(f'Currently active: {active_character.name}') selected_char = await search_and_select( ctx, user_characters, name, lambda e: e['name'], selectkey=lambda e: f"{e['name']} (`{e['upstream']}`)") char = Character.from_dict(selected_char) await char.set_active(ctx) try: await ctx.message.delete() except: pass await ctx.send(f"Active character changed to {char.name}.", delete_after=20)
async def character(self, ctx, *, name: str = None): """Switches the active character.""" if name is None: embed = await self._active_character_embed(ctx) await ctx.send(embed=embed) return user_characters = await self.bot.mdb.characters.find({ "owner": str(ctx.author.id) }).to_list(None) if not user_characters: return await ctx.send('You have no characters.') selected_char = await search_and_select( ctx, user_characters, name, lambda e: e['name'], selectkey=lambda e: f"{e['name']} (`{e['upstream']}`)") char = Character.from_dict(selected_char) result = await char.set_active(ctx) await try_delete(ctx.message) if result.did_unset_server_active: await ctx.send( f"Active character changed to {char.name}. Your server active character has been unset.", delete_after=30) else: await ctx.send(f"Active character changed to {char.name}.", delete_after=15)
def from_dict_sync(cls, raw, ctx, combat): inst = super(PlayerCombatant, cls).from_dict(raw, ctx, combat) inst.character_id = raw['character_id'] inst.character_owner = raw['character_owner'] from cogs5e.models.character import Character char = ctx.bot.mdb.characters.delegate.find_one({"owner": inst.character_owner, "upstream": inst.character_id}) if char is None: raise CombatException(f"A character in combat was deleted. " f"Please run `{ctx.prefix}init end -force` to end combat.") inst._character = Character.from_dict(char) return inst
def character(request, avrae): """Sets up an active character in the user's context, to be used in tests. Cleans up after itself.""" filename = os.path.join(dir_path, "static", f"char-{request.param}.json") with open(filename) as f: char = Character.from_dict(json.load(f)) char.owner = DEFAULT_USER_ID char._active = True avrae.mdb.characters.delegate.update_one( {"owner": char.owner, "upstream": char.upstream}, {"$set": char.to_dict()}, upsert=True ) if request.cls is not None: request.cls.character = char yield char avrae.mdb.characters.delegate.delete_one( {"owner": char.owner, "upstream": char.upstream} ) Character._cache.clear()
async def active_character(avrae): """Gets the character active in this test.""" return Character.from_dict(await avrae.mdb.characters.find_one({"owner": DEFAULT_USER_ID, "active": True}))