async def METHOD_NAME(self, body):
    if not self.consumer.user.profile.get("display_name"):
        raise ConsumerException("roulette.start.missing_profile")
    self.used = True
    request, room_id, recent_pairs = await roulette_request(
        self.consumer.user, self.room, self.consumer.socket_id, self.module_config
    )
    if room_id:
        await self.consumer.send_success(
            {
                "status": "match",
                "other_user": request.user.serialize_public(
                    trait_badges_map=self.consumer.world.config.get(
                        "trait_badges_map"
                    )
                ),
                "call_id": str(room_id),
            }
        )
        await self.consumer.channel_layer.group_send(
            GROUP_USER.format(id=request.user.id),
            {
                "type": "roulette.match_found",
                "socket_id": str(request.socket_id),
                "data": {
                    "call_id": str(room_id),
                    "other_user": self.consumer.user.serialize_public(
                        trait_badges_map=self.consumer.world.config.get(
                            "trait_badges_map"
                        )
                    ),
                },
            },
        )
        self.calls.add(str(room_id))
        await self.consumer.channel_layer.group_add(
            GROUP_ROULETTE_CALL.format(id=str(room_id)),
            self.consumer.channel_name,
        )
    else:
        await self.consumer.send_success(
            {"status": "wait", "recent_pairs": recent_pairs}
        )