Browse Source

Shot in the dark on passing around the event loop

Kirk Trombley 7 months ago
parent
commit
d31d505933
3 changed files with 7 additions and 6 deletions
  1. 1 1
      Dockerfile.discord
  2. 3 3
      drivers/discord_driver.py
  3. 3 2
      rollbot/rollbot/bot.py

+ 1 - 1
Dockerfile.discord

@@ -22,6 +22,6 @@ RUN pip3 install -e /app/commands
 
 COPY ./drivers/discord_driver.py .
 
-RUN pip3 install "discord.py==2.4.0"
+RUN pip3 install discord.py
 
 CMD python3 discord_driver.py

+ 3 - 3
drivers/discord_driver.py

@@ -21,8 +21,8 @@ config.bangs = tuple(t for t in secrets["discord"].get("bangs", "!/"))
 
 
 class DiscordBot(rollbot.Rollbot[discord.Message]):
-    def __init__(self, client):
-        super().__init__(config, database_file)
+    def __init__(self, client, loop):
+        super().__init__(config, database_file, loop=loop)
         self.discord_client = client
         client.event(self.on_message)
         if secrets["discord"].get("enable_react_notifs", False):
@@ -155,7 +155,7 @@ if __name__ == "__main__":
     intents.message_content = True
     intents.reactions = True
     client = discord.Client(intents=intents, loop=loop)
-    bot = DiscordBot(client)
+    bot = DiscordBot(client, loop)
     try:
         loop.run_until_complete(bot.on_startup())
         loop.run_until_complete(client.start(secrets["discord"]["token"]))

+ 3 - 2
rollbot/rollbot/bot.py

@@ -17,13 +17,14 @@ RawMsg = TypeVar("RawMsg")
 class Rollbot(Generic[RawMsg]):
     command_config: CommandConfiguration
     database_file: str
+    loop: asyncio.AbstractEventLoop | None = None
 
     def __post_init__(self):
         self.context = Context(
             config=self.read_config,
             respond=self.respond,
-            request=aiohttp.ClientSession(),
-            database=lambda: aiosqlite.connect(self.database_file),
+            request=aiohttp.ClientSession(loop=self.loop),
+            database=lambda: aiosqlite.connect(self.database_file, loop=self.loop),
             logger=logging.getLogger(),
         )