RocketChat/Rocket.Chat · error · Error

Room is not a livechat room

Error message

Room ${roomData._id} is not a livechat room

What it means

Error "Room ${roomData._id} is not a livechat room" thrown in RocketChat/Rocket.Chat.

Solutions

  1. Only fire livechat room events for rooms of type 'l' (livechat); check the room's t field before dispatching.
  2. Verify the correct room id was passed; the resolved room belongs to another room type (channel, group, or DM).

Example fix

Confirm the room type is livechat before proceeding: if (room.t !== 'l') { throw new Error(`Room ${roomData._id} is not a livechat room`); }

When it happens

Trigger: Thrown at apps/meteor/app/apps/server/bridges/listeners.ts:517 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of RocketChat/Rocket.Chat@b2c16d5842 (2026-08-18). Data as JSON: /api/errors/e5ffd51d2380ef17. Report an issue: GitHub.

Appendix: source

Thrown at apps/meteor/app/apps/server/bridges/listeners.ts:517

				const department = await this.orch.getConverters().get('departments').convertDepartment(departmentData);

				if (!department) {
					throw new Error(`Department ${departmentData._id} not found`);
				}

				return this.orch.getManager().getListenerManager().executeListener(args.event, { department });
			}

			default:
				const [roomData] = args.payload;
				const room = await this.orch.getConverters().get('rooms').convertRoom(roomData);

				if (!room) {
					throw new Error(`Room ${roomData._id} not found`);
				}

				if (!isLivechatRoom(room)) {
					throw new Error(`Room ${roomData._id} is not a livechat room`);
				}

				return this.orch.getManager().getListenerManager().executeListener(args.event, room);
		}
	}

	async userEvent(args: HandleUserEvent): Promise<unknown> {
		switch (args.event) {
			case AppInterface.IPostUserLoggedIn:
			case AppInterface.IPostUserLoggedOut: {
				const [loggedInUser] = args.payload;
				const context = this.orch.getConverters().get('users').convertToApp(loggedInUser);
				return this.orch.getManager().getListenerManager().executeListener(args.event, context);
			}
			case AppInterface.IPostUserStatusChanged: {
				const [statusData] = args.payload;
				const { currentStatus, previousStatus } = statusData;
				const context = {

View on GitHub (pinned to b2c16d5842)