Можно ли запрограммировать автоматический голос для музыкального бота Discord?

Итак, название в основном объясняет мой вопрос для моего бота Discord в краткой форме. В частности, если музыкальный трек стоит первым в очереди и не соответствует рекомендациям, настроенным гильдией, например, содержит ненормативную лексику, у аудио есть утвержденная жалоба о нарушении авторских прав, отправленная нам через веб-сайт бота первоначальным издателем, запрещающим прослушивание. на аудио или это крикун, он автоматически скажет следующее сообщение:

Текущая музыка, которую планируется воспроизвести в это время, слишком интенсивна по громкости или превышает пределы частоты для высоты тона. Переход к следующей музыке в очереди.

Текущая музыка, которую планируется воспроизвести в это время, помечена как содержащая ненормативную лексику и не соответствует рекомендациям, настроенным гильдией. Переход к следующей музыке в очереди.

Текущая музыка, которую планируется воспроизвести в это время, имеет жалобу на нарушение авторских прав, которая указывает, что первоначальный издатель ограничивает прослушивание аудио. Переход к следующей музыке в очереди.

Можно ли запрограммировать автоматический голос для бота Discord?

Заранее спасибо.

1 ответ

Я помогу вам реализовать идею пользователя Amadan в discord.py, сначала вам нужно будет установить google text to speech python api:

pip install gtts

Этот ответ будет предполагать, что вы не используете ветвь перезаписи discord.py.

import os
import discord
from gtts import gTTS

if not discord.opus.is_loaded():
    # or libopus.so on linux in the current directory
    # you should replace this with the location the
    # opus library is located in and with the proper filename.
    discord.opus.load_opus('opus')

if not os.path.exists('message1.mp3'):

    tts = gTTS("The current music scheduled to play at this time is too intense in volume or exceeds "
               "the frequency limits for pitch. Skipping to next music in queue.")
    with open('message1.mp3', 'wb') as f:
        tts.write_to_fp(f)

if not os.path.exists('message2.mp3'):
    tts = gTTS("The current music scheduled to play at this time has been marked for containing profane"
               " language and does not comply with the guild-configured guidelines. "
               "Skipping to next music in queue.")
    with open('message2.mp3', 'wb') as f:
        tts.write_to_fp(f)

if not os.path.exists('message3.mp3'):
    tts = gTTS("The current music scheduled to play at this time has a copyright infringement complaint "
               "which indicates that the original publisher restricts listening to the audio. "
               "Skipping to next music in queue.")
    with open('message3.mp3', 'wb') as f:
        tts.write_to_fp(f)

@bot.command(pass_context=True)
async def play(ctx, num):
    vc = ctx.author.voice.voice_channel

    voice = await bot.join_voice_channel(vc)

    player = voice.create_ffmpeg_player('message{}.mp3'.format(num))
    player.start()

Теперь в раздоре, когда вы находитесь в голосовом канале и введите <prefix>play <num>где префикс - это префикс бота, а num (1-3) - индекс сообщения, которое вы хотите воспроизвести, бот скажет сообщение.

Другие вопросы по тегам