diff --git a/src/usersyncroniser.ts b/src/usersyncroniser.ts index 3a329a3f1504f45ba8838181c17c817bfd135ead..f0489a8be509826d8b4099546838a132a12eedb5 100644 --- a/src/usersyncroniser.ts +++ b/src/usersyncroniser.ts @@ -198,14 +198,17 @@ export class UserSyncroniser { return; } const remoteUser = await this.userStore.getRemoteUser(memberState.id); - if (!remoteUser) { - throw Error("Remote user not found"); + let avatar = ""; + if (remoteUser) { + avatar = remoteUser.avatarurlMxc || ""; + } else { + log.warn("Remote user wasn't found, using blank avatar"); } const intent = this.bridge.getIntent(memberState.mxUserId); /* The intent class tries to be smart and deny a state update for <PL50 users. Obviously a user can change their own state so we use the client instead. */ await intent.getClient().sendStateEvent(roomId, "m.room.member", { - "avatar_url": remoteUser.avatarurlMxc, + "avatar_url": avatar, "displayname": memberState.displayName, "membership": "join", "uk.half-shot.discord.member": { @@ -217,10 +220,12 @@ export class UserSyncroniser { }, }, memberState.mxUserId); - if (guildId) { - remoteUser.guildNicks.set(guildId, memberState.displayName); + if (remoteUser) { + if (guildId) { + remoteUser.guildNicks.set(guildId, memberState.displayName); + } + await this.userStore.setRemoteUser(remoteUser); } - await this.userStore.setRemoteUser(remoteUser); } public async GetUserUpdateState(discordUser: User, webhookID?: string): Promise<IUserState> {