def _attach_local_event_data(self, event, plugin_name, guild_id): if not hasattr(event, 'config'): event.config = LocalProxy() if not hasattr(event, 'rowboat_guild'): event.rowboat_guild = LocalProxy() event.config.set(getattr(event.base_config.plugins, plugin_name)) event.rowboat_guild.set(self.guilds[guild_id])
def on_pre(self, plugin, func, event, args, kwargs): """ This function handles dynamically dispatching and modifying events based on a specific guilds configuration. It is called before any handler of either commands or listeners. """ if hasattr(event, 'guild') and event.guild: guild_id = event.guild.id elif hasattr(event, 'guild_id') and event.guild_id: guild_id = event.guild_id else: guild_id = None if guild_id not in self.guilds: if isinstance(event, CommandEvent): if event.command.metadata.get('global_', False): return event elif hasattr(func, 'subscriptions'): if func.subscriptions[0].metadata.get('global_', False): return event return event.base_config = self.guilds[guild_id].get_config() plugin_name = plugin.name.lower().replace('plugin', '') if not getattr(event.base_config.plugins, plugin_name, None): return if not hasattr(event, 'config'): event.config = LocalProxy() event.config.set(getattr(event.base_config.plugins, plugin_name)) return event