Как заставить бота Discord на основе Python воспроизводить разные звуки случайным образом?

#python #discord #bots

Вопрос:

Я кодирую бота Discord на Python. Я хочу, чтобы он подключился к голосовому каналу, а затем воспроизводил различные звуки случайным образом из списка. Он может просто воспроизводить определенный аудиофайл, например, каждые 10 секунд.

Все остальное работает нормально, бот подключается к каналу и т. Д. Но я не знаю, как заставить его оставаться на голосовом канале и говорить вещи случайным образом.

Теперь это выглядит так:

 arvaus = [ *list of my files here* ]

@client.command()
async def arvaa(ctx):
   if not ctx.author.voice:
      return await ctx.send(ctx.message.author.mention   'You need to connect to a voice channel')
    
guild = ctx.guild
voice_client: discord.VoiceClient = discord.utils.get(client.voice_clients, guild=guild)
audio_source =(discord.FFmpegPCMAudio(executable="F:/ffmpeg/bin/ffmpeg.exe", source=random.choice(arvaus)))
voice_client.play(audio_source, after=None)

 

Так что в основном теперь он воспроизводит один аудиофайл, пока я снова не введу команду, чтобы запустить другой.

Ответ №1:

     async def play(self, ctx, *, query):
        """Plays a file from the local filesystem"""

        source = discord.PCMVolumeTransformer(discord.FFmpegPCMAudio(query))
        ctx.voice_client.play(source, after=lambda e: print(f'Player error: {e}') if e else None)

        await ctx.send(f'Now playing: {query}')
 

это код в одном из примеров discord_bot_voice myaybe попробуйте реализовать это в своем коде скажите, что после подключения бота воспроизводится случайный звук звука из файла, который у вас есть

ДОПОЛНИТЕЛЬНО: бот автоматически отключится через некоторое время, если вы не издадите ни звука, так что, возможно, просто попросите бота воспроизвести файл, в котором нет звука, до случайного времени

может быть

 arvaus = [ *list of my files here* ]

@client.command()
async def arvaa(ctx):
if not ctx.author.voice:
    return await ctx.send(ctx.message.author.mention   'You need to connect to a voice 
channel')

guild = ctx.guild
voice_client: discord.VoiceClient = discord.utils.get(client.voice_clients, guild=guild)
for i in range(len(arvaus)):
    audio_source = (discord.FFmpegPCMAudio(executable="F:/ffmpeg/bin/ffmpeg.exe", 
    source=random.choice(arvaus)))
    randomtime = random.randint(20,200)
    await asyncio.sleep(ransomint)
    voice_client.play(audio_source, after=None)