#python #discord.py
#python #discord.py
Вопрос:
Итак, я создал фрагмент кода с discord.py который воспроизводит аудиофайл, когда пользователь подключается к голосовому каналу. Проблема в том, что я получаю предупреждение выше. Я думаю, это потому, что, когда бот присоединяется, он видит, что сам присоединяется, и не может присоединиться снова. Я пытался решить эту проблему с помощью закомментированной строки кода, но, похоже, это не работает. Полная ошибка будет ниже кода. Я вставлю только код, необходимый для этого аспекта моего бота, потому что проблема заключается в этом фрагменте кода, а не в остальном. Я также получаю это предупреждение о закрытии websocket, но не знаю, важно ли это.
Код:
@bot.event
async def on_voice_state_update(member: discord.Member, before, after):
vc_before = before.channel
vc_after = after.channel
path_mp3 = "Tutturuu.mp3"
path_ffmpeg = r"C:ffmpegbinffmpeg.exe"
if vc_before == vc_after:
return
if vc_before is None: # and member.display_name != discord.ClientUser.name:
channel = member.voice.channel
vc = await channel.connect()
time.sleep(.5)
vc.play(discord.FFmpegPCMAudio(executable=path_ffmpeg, source=path_mp3))
with audioread.audio_open(path_mp3) as f:
time.sleep(f.duration)
await vc.disconnect()
elif vc_after is None:
return
else:
channel = member.voice.channel
vc = await channel.connect()
time.sleep(.5)
vc.play(discord.FFmpegPCMAudio(executable=path_ffmpeg, source=path_mp3))
with audioread.audio_open(path_mp3) as f:
time.sleep(f.duration)
await vc.disconnect()
Полная ошибка:
Игнорирование исключения в on_voice_state_update
Обратная трассировка (последний последний вызов):
Файл «C:UsersyorbeOneDriveDocumentenFoldersGerbinbot_3000venvlibsite-packagesdiscordclient.py «, строка 333, в _run_event
ожидает coro(* аргументы, ** kwargs)
Файл «C:/Users/yorbe/OneDrive/Documenten/Folders/Gerbinbot_3000/main.py «, строка 109, в on_voice_state_update
vc = ожидание канала.connect()
Файл «C:UsersyorbeOneDriveDocumentenFoldersGerbinbot_3000venvlibsite-packagesdiscordabc.py «, строка 1115, в соединении
вызывает исключение ClientException(«Уже подключено к голосовому каналу».)
discord.errors.ClientException: уже подключен к голосовому каналу.
соединение с websocket закрывается.
соединение с websocket закрывается.
соединение с websocket закрывается.
Ответ №1:
Хорошо, я узнал, как это исправить сам. просто добавьте этот код (см. Между заголовком) впереди, если vc_before == vc_after
@bot.event
async def on_voice_state_update(member: discord.Member, before, after):
vc_before = before.channel
vc_after = after.channel
path_mp3 = "Tutturuu.mp3"
path_ffmpeg = r"C:ffmpegbinffmpeg.exe"
-----------------
for role in member.roles:
if role.name == "Name of the role that your bot made when it joined the server,
usually its own name":
return
-----------------
if vc_before == vc_after:
return
if vc_before is None:
channel = member.voice.channel
vc = await channel.connect()
time.sleep(.5)
vc.play(discord.FFmpegPCMAudio(executable=path_ffmpeg, source=path_mp3))
with audioread.audio_open(path_mp3) as f:
time.sleep(f.duration)
await vc.disconnect()
elif vc_after is None:
return
else:
channel = member.voice.channel
vc = await channel.connect()
time.sleep(.5)
vc.play(discord.FFmpegPCMAudio(executable=path_ffmpeg, source=path_mp3))
with audioread.audio_open(path_mp3) as f:
time.sleep(f.duration)
await vc.disconnect()