#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)