diff --git a/src/modules/rolemenus/ui/menueditor.py b/src/modules/rolemenus/ui/menueditor.py index dca450b7..356f42a0 100644 --- a/src/modules/rolemenus/ui/menueditor.py +++ b/src/modules/rolemenus/ui/menueditor.py @@ -190,7 +190,10 @@ class MenuEditor(MessageUI): if not userstr: new_data = None else: - new_data = await instance._parse_string(instance.parent_id, userstr) + new_data = await instance._parse_string( + instance.parent_id, userstr, + guildid=self.menu.data.guildid + ) instance.data = new_data modified.append(instance) if modified: @@ -349,7 +352,9 @@ class MenuEditor(MessageUI): if not userstr: new_data = None else: - new_data = await instance._parse_string(instance.parent_id, userstr, interaction=interaction) + new_data = await instance._parse_string( + instance.parent_id, userstr, interaction=interaction + ) instance.data = new_data modified.append(instance) if modified: diff --git a/src/settings/setting_types.py b/src/settings/setting_types.py index 2dd67815..f5c99c5b 100644 --- a/src/settings/setting_types.py +++ b/src/settings/setting_types.py @@ -396,7 +396,7 @@ class RoleSetting(InteractiveSetting[ParentID, int, Union[discord.Role, discord. if data is not None: role = None - guildid = cls._get_guildid(parent_id) + guildid = cls._get_guildid(parent_id, **kwargs) bot = ctx_bot.get() guild = bot.get_guild(guildid) if guild is not None: @@ -409,11 +409,14 @@ class RoleSetting(InteractiveSetting[ParentID, int, Union[discord.Role, discord. async def _parse_string(cls, parent_id, string: str, **kwargs): if not string or string.lower() == 'none': return None + guildid = cls._get_guildid(parent_id, **kwargs) t = ctx_translator.get().t bot = ctx_bot.get() role = None - guild = bot.get_guild(parent_id) + guild = bot.get_guild(guildid) + if guild is None: + raise ValueError("Attempting to parse role string with no guild.") if string.isdigit(): maybe_id = int(string)