diff --git a/src/bot.ts b/src/bot.ts
index 176d81c87f3e651836420f94ca524fafc4fcf300..1a67e3a5714abc9f8ca18c5643d480ca0b8a5603 100644
--- a/src/bot.ts
+++ b/src/bot.ts
@@ -76,7 +76,7 @@ export class DiscordBot {
     private roomHandler: MatrixRoomHandler;
     private provisioner: Provisioner;
     /* Caches */
-    private roomIdsForGuildCache: Map<string, {roomIds: string[], ts: number}>;
+    private roomIdsForGuildCache: Map<string, {roomIds: string[], ts: number}> = new Map();
 
     /* Handles messages queued up to be sent to discord. */
     private discordMessageQueue: { [channelId: string]: Promise<void> };
diff --git a/tools/chanfix.ts b/tools/chanfix.ts
index b37b0fe9a35fdc892ed37118e19108497c359612..a7c1904e89111c48a3a6b197626e9f708e5ab88e 100644
--- a/tools/chanfix.ts
+++ b/tools/chanfix.ts
@@ -80,8 +80,6 @@ const clientFactory = new ClientFactory({
     token: registration.as_token,
     url: config.bridge.homeserverUrl,
 });
-const discordstore = new DiscordStore(config.database ? config.database.filename : "discord.db");
-const discordbot = new DiscordBot("", config, null, discordstore);
 
 const bridge = new Bridge({
     clientFactory,
@@ -102,7 +100,11 @@ const bridge = new Bridge({
 
 async function run() {
     await bridge.loadDatabases();
-    await discordstore.init();
+    const store = new DiscordStore(config.database);
+    await store.init(undefined, bridge.getRoomStore());
+    const discordbot = new DiscordBot(botUserId, config, bridge, store);
+    await discordbot.init();
+
     bridge._clientFactory = clientFactory;
     bridge._botClient = bridge._clientFactory.getClientAs();
     bridge._botIntent = new Intent(bridge._botClient, bridge._botClient, { registered: true });
diff --git a/tools/ghostfix.ts b/tools/ghostfix.ts
index 3e9a4ced371aba06b27820ba0b2c945b7ae85499..6e9583846046e531706dfa4736be495085e095d0 100644
--- a/tools/ghostfix.ts
+++ b/tools/ghostfix.ts
@@ -110,6 +110,7 @@ const bridge = new Bridge({
 async function run() {
     await bridge.loadDatabases();
     const store = new DiscordStore(config.database);
+    await store.init(undefined, bridge.getRoomStore());
     const discordbot = new DiscordBot(botUserId, config, bridge, store);
     await discordbot.init();
     bridge._clientFactory = clientFactory;
@@ -128,7 +129,7 @@ async function run() {
                     let currentSchedule = JOIN_ROOM_SCHEDULE[0];
                     const doJoin = async () => {
                         await Util.DelayedPromise(currentSchedule);
-                        await discordbot.UserSyncroniser.OnUpdateGuildMember(member, true);
+                        await discordbot.UserSyncroniser.OnUpdateGuildMember(member, true, false);
                     };
                     const errorHandler = async (err) => {
                         log.error(`Error joining rooms for ${member.id}`);