Speak requests and moderation
Approve speakers, manage admins, and mute, kick or ban users in a voice room.
The kit's built-in UI covers all of this: a request queue with a badge, a member list, and a moderation sheet on each seat. Use these calls if you're building your own UI or adding your own triggers. controller comes from onControllerReady.
Speak requests
// Audience
await controller.requestToSpeak();
await controller.cancelSpeakerRequest();
// Host or admin
await controller.approveSpeakerRequest(requestId);
await controller.rejectSpeakerRequest(requestId);
await controller.inviteToSpeak(targetId, seatIndex: 3);Pending requests are in controller.seatController.pendingRequests.
Admins
Admins are saved on the room, so the owner can assign someone who's offline or has never joined. These calls are owner-only:
await controller.assignAdmin(targetIdentity: targetId, name: 'Moderator');
final everyone = await controller.listAdmins();
final offline = await controller.listAdmins(presence: 'offline');
await controller.revokeAdmin(targetId);Assignments belong to the current room. If a room closes and is created again with the same name, it doesn't keep the old admins.
Bans and roles
await controller.banUser(targetId, reason: 'Spam');
await controller.unbanUser(targetId);
await controller.changeRole(targetIdentity: targetId, role: 'admin');Voxera checks these on the server, so a user without the right role is refused. A banned user who requests a token gets 403 User is banned.
Lock chat
await controller.lockComments();
await controller.unlockComments();While chat is locked, only hosts and admins can post. Gifts and likes keep working.
From your backend
To moderate without being in the room, use the server-to-server API.