diff --git a/chatter/chat.py b/chatter/chat.py index d999d94..9caf050 100644 --- a/chatter/chat.py +++ b/chatter/chat.py @@ -56,14 +56,13 @@ class Chatter(Cog): super().__init__() self.bot = bot self.config = Config.get_conf(self, identifier=6710497116116101114) - default_global = {} + default_global = {"learning": True} default_guild = { "whitelist": None, "days": 1, "convo_delta": 15, "chatchannel": None, "reply": True, - "learning": True, } path: pathlib.Path = cog_data_path(self) self.data_path = path / "database.sqlite3" @@ -85,6 +84,7 @@ class Chatter(Cog): self.loop = asyncio.get_event_loop() self._guild_cache = defaultdict(dict) + self._global_cache = {} self._last_message_per_channel: Dict[Optional[discord.Message]] = defaultdict(lambda: None) @@ -228,6 +228,7 @@ class Chatter(Cog): Base command for this cog. Check help for the commands list. """ self._guild_cache[ctx.guild.id] = {} # Clear cache when modifying values + self._global_cache = {} @commands.admin() @chatter.command(name="channel") @@ -270,18 +271,19 @@ class Chatter(Cog): "I will not reply to your message if conversation continuity is not present, anymore" ) - @commands.admin() + @commands.is_owner() @chatter.command(name="learning") async def chatter_learning(self, ctx: commands.Context, toggle: Optional[bool] = None): """ Toggle the bot learning from its conversations. + This is a global setting. This is on by default. """ - learning = await self.config.guild(ctx.guild).learning() + learning = await self.config.learning() if toggle is None: toggle = not learning - await self.config.guild(ctx.guild).learning.set(toggle) + await self.config.learning.set(toggle) if toggle: await ctx.maybe_send_embed("I will now learn from conversations.") @@ -686,7 +688,10 @@ class Chatter(Cog): None, self.chatbot.generate_response, Statement(text) ) - if in_response_to is not None and self._guild_cache[guild.id]["learning"]: + if not self._global_cache: + self._global_cache = await self.config.all() + + if in_response_to is not None and self._global_cache["learning"]: log.debug("learning response") await self.loop.run_in_executor( None,