private async Task <string> ProcessVoteAnswer(string roomId, string userId, string voice)
        {
            if (!TelegramFrontendExtensions.IsActiveVote(roomId))
            {
                return("Действие не актуально!");
            }

            var voteInfo = TelegramFrontendExtensions.GetVoteInfo(roomId);

            // check allowance
            if (!voteInfo.AllowedToPassVoteUsersIds.ContainsKey(userId))
            {
                return("Действие запрещено!");
            }
            if (!_gameSettings.DevelopmentMode && voteInfo.VoteAllowedPredicate != null &&
                !voteInfo.VoteAllowedPredicate.Invoke((userId, voice)))
            {
                return("Голос отклонен");
            }

            voteInfo.AddOrUpdateVote(userId, voice);
            await UpdateVote(roomId, voteInfo);

            return("Голос принят");
        }