diff --git a/mautrix_appservice/appservice.py b/mautrix_appservice/appservice.py index e54288b9..1d26fbb2 100644 --- a/mautrix_appservice/appservice.py +++ b/mautrix_appservice/appservice.py @@ -173,7 +173,7 @@ class AppService: self.log.exception("Exception in Matrix event handler") for handler in self.event_handlers: - asyncio.ensure_future(try_handle(handler)) + asyncio.ensure_future(try_handle(handler), loop=self.loop) def matrix_event_handler(self, func): self.event_handlers.append(func) diff --git a/mautrix_telegram/__main__.py b/mautrix_telegram/__main__.py index ee05889c..a5415f5d 100644 --- a/mautrix_telegram/__main__.py +++ b/mautrix_telegram/__main__.py @@ -87,9 +87,9 @@ with appserv.run(config["appservice.hostname"], config["appservice.port"]) as st startup_actions += init_user(context) startup_actions += [start] try: - loop.run_until_complete(asyncio.gather(*startup_actions)) + loop.run_until_complete(asyncio.gather(*startup_actions, loop=loop)) loop.run_forever() except KeyboardInterrupt: for user in User.by_tgid.values(): - user.client.disconnect() + user.stop() sys.exit(0) diff --git a/mautrix_telegram/portal.py b/mautrix_telegram/portal.py index 95bcf767..efb3464d 100644 --- a/mautrix_telegram/portal.py +++ b/mautrix_telegram/portal.py @@ -844,7 +844,7 @@ class Portal: def migrate_and_save(self, new_id): existing = DBPortal.query.get(self.tgid_full) if existing: - self.db.object_session(existing).delete(existing) + self.db.delete(existing) try: del self.by_tgid[self.tgid_full] except KeyError: diff --git a/mautrix_telegram/user.py b/mautrix_telegram/user.py index 26db7d16..d3031b97 100644 --- a/mautrix_telegram/user.py +++ b/mautrix_telegram/user.py @@ -28,6 +28,7 @@ config = None class User: + loop = None log = logging.getLogger("mau.user") db = None az = None @@ -140,7 +141,7 @@ class User: continue portal = po.Portal.get_by_entity(entity) creators.append(portal.create_matrix_room(self, entity, invites=[self.mxid])) - await asyncio.gather(*creators) + await asyncio.gather(*creators, loop=self.loop) # endregion # region Telegram update handling @@ -316,7 +317,7 @@ class User: def init(context): global config - User.az, User.db, config, _ = context + User.az, User.db, config, User.loop = context users = [User.from_db(user) for user in DBUser.query.all()] return [user.start() for user in users]