diff --git a/src/clientfactory.ts b/src/clientfactory.ts
index b2a5baeb9a1886d40201248f3a8323ad884b8815..5a150e2678a584f3e05db05d277d13fc11591b79 100644
--- a/src/clientfactory.ts
+++ b/src/clientfactory.ts
@@ -43,7 +43,7 @@ export class DiscordClientFactory {
             fetchAllMembers: this.config.usePrivilegedIntents,
             messageCacheLifetime: 5,
             ws: {
-                intents: this.config.usePrivilegedIntents ? Intents.PRIVILEGED : Intents.NON_PRIVILEGED,
+                intents: this.config.usePrivilegedIntents ? Intents.ALL : Intents.NON_PRIVILEGED,
             },
         });
 
diff --git a/src/presencehandler.ts b/src/presencehandler.ts
index ebb7024e3d91fa399a4e374168d089d2977aa612..7ef667a11eb0ed84bd2ce227cbf15795694fd6e4 100644
--- a/src/presencehandler.ts
+++ b/src/presencehandler.ts
@@ -144,7 +144,7 @@ export class PresenceHandler {
         const intent = this.bot.GetIntentFromDiscordMember(user);
         try {
             await intent.ensureRegistered();
-            await intent.underlyingClient.setPresenceStatus(status.Presence, status.StatusMsg);
+            await intent.underlyingClient.setPresenceStatus(status.Presence, status.StatusMsg || "");
         } catch (ex) {
             if (ex.errcode !== "M_FORBIDDEN") {
                 log.warn(`Could not update Matrix presence for ${user.id}`);
diff --git a/test/test_clientfactory.ts b/test/test_clientfactory.ts
index ad2a29dca396bf2bfa26af8f620b88fde2632d03..7c1d865c869668cd6328f47ecca805bb7e3c1b7b 100644
--- a/test/test_clientfactory.ts
+++ b/test/test_clientfactory.ts
@@ -76,13 +76,13 @@ describe("ClientFactory", () => {
     describe("getDiscordId", () => {
         it("should fetch id successfully", async () => {
             const config = new DiscordBridgeConfigAuth();
-            const cf = new DiscordClientFactory(null);
+            const cf = new DiscordClientFactory(null, config);
             const discordId = await cf.getDiscordId("passme");
             expect(discordId).equals("12345");
         });
         it("should fail if the token is not recognised", async () => {
             const config = new DiscordBridgeConfigAuth();
-            const cf = new DiscordClientFactory(null);
+            const cf = new DiscordClientFactory(null, config);
             try {
                 await cf.getDiscordId("failme");
                 throw new Error("didn't fail");
@@ -102,7 +102,7 @@ describe("ClientFactory", () => {
         });
         it("should return cached client", async () => {
             const config = new DiscordBridgeConfigAuth();
-            const cf = new DiscordClientFactory(null);
+            const cf = new DiscordClientFactory(null, config);
             cf.clients.set("@user:localhost", "testclient");
             const client = await cf.getClient("@user:localhost");
             expect(client).equals("testclient");
@@ -116,14 +116,14 @@ describe("ClientFactory", () => {
         });
         it("should fetch user client if userid matches", async () => {
             const config = new DiscordBridgeConfigAuth();
-            const cf = new DiscordClientFactory(STORE);
+            const cf = new DiscordClientFactory(STORE, config);
             const client = await cf.getClient("@valid:localhost");
             expect(client).is.not.null;
             expect(cf.clients.has("@valid:localhost")).to.be.true;
         });
         it("should fail if the user client cannot log in", async () => {
             const config = new DiscordBridgeConfigAuth();
-            const cf = new DiscordClientFactory(STORE);
+            const cf = new DiscordClientFactory(STORE, config);
             cf.botClient = 1;
             const client = await cf.getClient("@invalid:localhost");
             expect(client).to.equal(cf.botClient);
diff --git a/test/test_presencehandler.ts b/test/test_presencehandler.ts
index 8b1bf490f03c2dc8e090e232f82baeee50e35905..cbf4d057d4395e9474cedd25fe4e775274c40514 100644
--- a/test/test_presencehandler.ts
+++ b/test/test_presencehandler.ts
@@ -98,7 +98,7 @@ describe("PresenceHandler", () => {
             const member = new MockPresence(new MockUser("ghi", "alice"), "def", "online");
             await handler.ProcessUser(member as any);
             appservice.getIntentForSuffix(member.userID)
-                .underlyingClient.wasCalled("setPresenceStatus", true, "online", undefined);
+                .underlyingClient.wasCalled("setPresenceStatus", true, "online", "");
         });
         it("processes an offline user", async () => {
             lastStatus = null;
@@ -106,7 +106,7 @@ describe("PresenceHandler", () => {
             const member = new MockPresence(new MockUser("abc", "alice"), "def", "offline");
             await handler.ProcessUser(member as any);
             appservice.getIntentForSuffix(member.userID)
-                .underlyingClient.wasCalled("setPresenceStatus", true, "offline", undefined);
+                .underlyingClient.wasCalled("setPresenceStatus", true, "offline", "");
         });
         it("processes an idle user", async () => {
             lastStatus = null;
@@ -114,7 +114,7 @@ describe("PresenceHandler", () => {
             const member = new MockPresence(new MockUser("abc", "alice"), "def", "idle");
             await handler.ProcessUser(member as any);
             appservice.getIntentForSuffix(member.userID)
-                .underlyingClient.wasCalled("setPresenceStatus", true, "unavailable", undefined);
+                .underlyingClient.wasCalled("setPresenceStatus", true, "unavailable", "");
         });
         it("processes an dnd user", async () => {
             lastStatus = null;