discord.errors.HTTPException:400错误请求(错误代码:40032):目标用户未连接到语音

2024-09-29 21:35:09 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我在机器人中的代码

@Bot.event
async def on_voice_state_update(member,before,after): #Создание войс комнат
    if after:
        if after.channel:
            if after.channel.id == $$$$$$$$$$$$$$$$$$$$$:
                print(f'{member} зашёл в канал')
                for guild in Bot.guilds:
                    maincategory = discord.utils.get(guild.categories, id=$$$$$$$$$$$$$$$$$$$$)
                    channel2 = await guild.create_voice_channel(name=f'{member.display_name}`s Channel',category = maincategory)
                    await channel2.set_permissions(member,connect=True,mute_members=True,move_members=True,manage_channels=True)
                    await member.move_to(channel2)
                    def check(x,y,z):
                        return len(channel2.members) == 0
                    await Bot.wait_for('voice_state_update',check=check)
                    await channel2.delete()

这是我在终端上的错误

Ignoring exception in on_voice_state_update
Traceback (most recent call last):
  File "C:\Users\Макс\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\discord\client.py", line 343, in _run_event
    await coro(*args, **kwargs)
  File "C:\Users\Макс\DRACULA-rms\bot.py", line 115, in on_voice_state_update
    await member.move_to(channel2)
  File "C:\Users\Макс\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\discord\member.py", line 725, in move_to
    await self.edit(voice_channel=channel, reason=reason)
  File "C:\Users\Макс\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\discord\member.py", line 668, in edit
    await http.edit_member(guild_id, self.id, reason=reason, **payload)
  File "C:\Users\Макс\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\discord\http.py", line 254, in request
    raise HTTPException(r, data)
discord.errors.HTTPException: 400 Bad Request (error code: 40032): Target user is not connected to voice.

请帮帮我吧,我自己解决不了这个错误,我用的是Python 39


Tags: inpypackageslinechannelupdateawaitusers
1条回答
网友
1楼 · 发布于 2024-09-29 21:35:09

我在代码中看到一些错误。我无法解释您提到的错误,因为您的代码中没有搜索特定用户。让我们看看其他方面:

首先:它是bot.event,而不是Bot.event,除非您以不同的方式定义它,否则请忽略此消息。(代码必须由您调整

在测试时,我注意到for guild in Bot.guilds:抛出了以下错误:

discord.errors.HTTPException: 400 Bad Request (error code: 10003): Unknown Channel

我通过直接定义guild修复了这个错误:

guild = bot.get_guild(GuildID):

我还对代码进行了一些重构,并添加了一个discord.PermissionOverwrite函数以使其更清晰

完整代码:

@bot.event
async def on_voice_state_update(member, before, after):
    if after:
        if after.channel:
            if after.channel.id == AfterChannelID:
                print(f'{member} зашёл в канал')
                guild = bot.get_guild(GuildID)
                maincategory = discord.utils.get(guild.categories, id=CategoryID)
                overwrites = {
                    member: discord.PermissionOverwrite(connect=True, mute_members=True, move_members=True,
                                                        manage_channels=True)
                }
                channel2 = await guild.create_voice_channel(name=f'{member.display_name}',
                                                            category=maincategory, overwrites=overwrites)

                await member.move_to(channel2)

                def check(x, y, z):
                    return len(channel2.members) == 0

                await bot.wait_for('voice_state_update', check=check)
                await channel2.delete()

代码可能需要根据您的喜好进行调整,但这一个对我来说很好

相关问题 更多 >

    热门问题