diff --git a/hoyo_buddy/bot/error_handler.py b/hoyo_buddy/bot/error_handler.py index dac16d81..e718abb2 100644 --- a/hoyo_buddy/bot/error_handler.py +++ b/hoyo_buddy/bot/error_handler.py @@ -121,10 +121,8 @@ def get_error_embed(error: Exception, locale: discord.Locale, translator: Transl game_strs = [ f"- {get_game_emoji(game)} {EnumStr(game).translate(translator, locale)}" for game in error.games ] - if embed.description is None: - embed.description = "" joined_str = "\n".join(game_strs) - embed.description += f"\n{joined_str}" + embed.add_description(joined_str) elif isinstance(error, genshin_errors.GenshinException | enka_errors.EnkaAPIError): err_info = None diff --git a/hoyo_buddy/embeds.py b/hoyo_buddy/embeds.py index 7150429c..dff22963 100644 --- a/hoyo_buddy/embeds.py +++ b/hoyo_buddy/embeds.py @@ -55,6 +55,14 @@ def copy(self) -> Self: copy.translator = self.translator return copy + def add_description(self, description: LocaleStr | str) -> Self: + translated_description = self.translator.translate(description, self.locale) + if self.description is None: + self.description = translated_description + else: + self.description += f"\n{translated_description}" + return self + class DefaultEmbed(Embed): def __init__( diff --git a/hoyo_buddy/hoyo/clients/ambr.py b/hoyo_buddy/hoyo/clients/ambr.py index 7f5273f2..3923d1e8 100644 --- a/hoyo_buddy/hoyo/clients/ambr.py +++ b/hoyo_buddy/hoyo/clients/ambr.py @@ -200,8 +200,7 @@ def get_weapon_embed( ) if sub_stat_name and sub_stat_value: - assert embed.description is not None - embed.description += f"\n{sub_stat_name}: {sub_stat_value}" + embed.add_description(f"{sub_stat_name}: {sub_stat_value}") if weapon.affix: embed.add_field( diff --git a/hoyo_buddy/hoyo/clients/hakushin.py b/hoyo_buddy/hoyo/clients/hakushin.py index 6cd062e1..bfa0390a 100644 --- a/hoyo_buddy/hoyo/clients/hakushin.py +++ b/hoyo_buddy/hoyo/clients/hakushin.py @@ -338,10 +338,9 @@ def get_bangboo_embed(self, bangboo: hakushin.zzz.BangbooDetail) -> DefaultEmbed def get_engine_embed(self, engine: hakushin.zzz.WeaponDetail, refinement: str) -> DefaultEmbed: embed = DefaultEmbed(self._locale, self._translator, title=engine.name) - embed.description = "" if engine.rarity is not None: embed.description = "★" * STAR_NUMS[engine.rarity] - embed.description += f"\n{engine.description}\n\n{engine.description2}" + embed.add_description(f"{engine.description}\n\n{engine.description2}") effect = engine.refinements[refinement] embed.add_field(name=f"{effect.name} ({refinement})", value=effect.description)