protected virtual async Task <Audio.AudioRequest> GetCheerAudioRequest(
            Database.User cheerer,
            string message,
            int quantity)
        {
            Audio.AudioRequest soundEffectRequest = null;
            Audio.AudioRequest ttsRequest         = null;

            if (soundEffectSystem.HasSoundEffects())
            {
                Audio.SoundEffect cheerSoundEffect = soundEffectSystem.GetSoundEffectByName("FF7 Purchase");
                if (cheerSoundEffect is null)
                {
                    communication.SendWarningMessage($"Expected Cheer SoundEffect not found.  Defaulting to first");
                    cheerSoundEffect = soundEffectSystem.GetSoundEffectByName(soundEffectSystem.GetSoundEffects()[0]);
                }

                soundEffectRequest = new Audio.SoundEffectRequest(cheerSoundEffect);
            }

            if (!string.IsNullOrWhiteSpace(message))
            {
                ttsRequest = await ttsRenderer.TTSRequest(
                    voicePreference : cheerer.TTSVoicePreference,
                    pitchPreference : cheerer.TTSPitchPreference,
                    effectsChain : audioEffectSystem.SafeParse(cheerer.TTSEffectsChain),
                    ttsText : message);
            }

            return(JoinRequests(300, soundEffectRequest, ttsRequest));
        }
        protected virtual async Task <Audio.AudioRequest> GetSubscriberAudioRequest(
            Database.User subscriber,
            string message,
            int monthCount,
            int tier)
        {
            Audio.AudioRequest soundEffectRequest = null;
            Audio.AudioRequest ttsRequest         = null;

            if (soundEffectSystem.HasSoundEffects())
            {
                Audio.SoundEffect subSoundEffect = soundEffectSystem.GetSoundEffectByName("SMW PowerUp");
                if (subSoundEffect is null)
                {
                    communication.SendWarningMessage($"Expected Sub SoundEffect not found.  Defaulting to first sound effect.");
                    subSoundEffect = soundEffectSystem.GetSoundEffectByName(soundEffectSystem.GetSoundEffects()[0]);
                }

                soundEffectRequest = new Audio.SoundEffectRequest(subSoundEffect);
            }

            if (!string.IsNullOrWhiteSpace(message))
            {
                ttsRequest = await ttsRenderer.TTSRequest(
                    voicePreference : subscriber.TTSVoicePreference,
                    pitchPreference : subscriber.TTSPitchPreference,
                    effectsChain : audioEffectSystem.SafeParse(subscriber.TTSEffectsChain),
                    ttsText : message);
            }

            return(JoinRequests(300, soundEffectRequest, ttsRequest));
        }
        protected virtual Task <Audio.AudioRequest> GetFollowAudioRequest(Database.User follower)
        {
            Audio.AudioRequest soundEffectRequest = null;

            if (soundEffectSystem.HasSoundEffects())
            {
                Audio.SoundEffect raidSoundEffect = soundEffectSystem.GetSoundEffectByName("SMW MessageBlock");
                if (raidSoundEffect is null)
                {
                    communication.SendWarningMessage($"Expected Follow SoundEffect not found.  Defaulting to first");
                    raidSoundEffect = soundEffectSystem.GetSoundEffectByName(soundEffectSystem.GetSoundEffects()[0]);
                }

                soundEffectRequest = new Audio.SoundEffectRequest(raidSoundEffect);
            }

            return(Task.FromResult(soundEffectRequest));
        }
        protected virtual Task <Audio.AudioRequest> GetRaidAudioRequest(
            Database.User raider,
            int count)
        {
            Audio.AudioRequest soundEffectRequest = null;

            if (soundEffectSystem.HasSoundEffects())
            {
                Audio.SoundEffect raidSoundEffect = soundEffectSystem.GetSoundEffectByName("SMW CastleClear");
                if (raidSoundEffect is null)
                {
                    communication.SendWarningMessage($"Expected Raid SoundEffect not found.  Defaulting to first");
                    raidSoundEffect = soundEffectSystem.GetSoundEffectByName(soundEffectSystem.GetSoundEffects()[0]);
                }

                soundEffectRequest = new Audio.SoundEffectRequest(raidSoundEffect);
            }

            return(Task.FromResult(soundEffectRequest));
        }
        protected virtual Task <Audio.AudioRequest> GetAnonGiftSubAudioRequest(
            Database.User recipient,
            int tier,
            int months)
        {
            Audio.AudioRequest soundEffectRequest = null;

            if (soundEffectSystem.HasSoundEffects())
            {
                Audio.SoundEffect raidSoundEffect = soundEffectSystem.GetSoundEffectByName("SMW PowerUp");
                if (raidSoundEffect is null)
                {
                    communication.SendWarningMessage($"Expected GiftSub SoundEffect not found.  Defaulting to first");
                    raidSoundEffect = soundEffectSystem.GetSoundEffectByName(soundEffectSystem.GetSoundEffects()[0]);
                }

                soundEffectRequest = new Audio.SoundEffectRequest(raidSoundEffect);
            }

            return(Task.FromResult(soundEffectRequest));
        }