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
- Only fire livechat room events for rooms of type 'l' (livechat); check the room's t field before dispatching.
- 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)