【问题标题】:Creating private Vc discord.py创建私有 Vc discord.py
【发布时间】:2020-10-29 21:26:51
【问题描述】:

我正在尝试为我正在尝试制作的功能创建一个私有 vc。它使 vc 具有我希望它制作的权限,但是在它制作后它给出了一个错误,我不能在它后面放置任何代码。 这是代码:

guild = ctx.author.guild
players_role = await guild.create_role(name=f"Players {game_id}")
for i in all_players:
    print(all_players)
    print(i)
    i = guild.get_member(int(i[1]))
    await i.add_roles(players_role)
    overwrites = {
        guild.default_role: discord.PermissionOverwrite(view_channel=False),
        players_role: discord.PermissionOverwrite(view_channel=True)
    }
    players_vc = await guild.create_voice_channel(f"Game: {game_id}", overwrites=overwrites)

    await players_vc.edit(position=len(ctx.guild.voice_channels))
    print("edited position")

我想要做的是编辑我创建的 vc 以便它被拉到底部,但它没有这样做,因为它在前一行中给出了一个错误。我尝试将players_vc = await guild.create_voice_channel(f"Game: {game_id}", overwrites=overwrites) 放入try:except:,但我需要变量来编辑位置。这是错误消息:

Traceback (most recent call last):


File "C:\Users\Gebruiker\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\ext\commands\core.py", line 83, in wrapped
    ret = await coro(*args, **kwargs)
  File "D:\Thijs coding map\TeaBot\TeaBot.py", line 889, in vc_test
    test_vc = await guild.create_voice_channel(f"test vc", overwrites=overwrites)
  File "C:\Users\Gebruiker\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\guild.py", line 888, in create_voice_channel
    channel = VoiceChannel(state=self._state, guild=self, data=data)
  File "C:\Users\Gebruiker\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\channel.py", line 553, in __init__
    self._update(guild, data)
  File "C:\Users\Gebruiker\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\channel.py", line 584, in _update
    self._fill_overwrites(data)
  File "C:\Users\Gebruiker\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\abc.py", line 294, in _fill_overwrites
    self._overwrites.append(_Overwrites(id=overridden_id, **overridden))
TypeError: __new__() got an unexpected keyword argument 'allow_new'

对于故障排除,您可以使用以下代码:

@client.command()
async def vc_test(ctx):
    guild = ctx.guild
    user = ctx.author
    overwrites = {
        guild.default_role: discord.PermissionOverwrite(view_channel=False),
        guild.me: discord.PermissionOverwrite(view_channel=True)
    }
    test_vc = await guild.create_voice_channel(f"test vc", overwrites=overwrites)

    await test_vc.edit(position=len(guild.voice_channels))
    print("edited position")

我在其他地方找不到这个问题 感谢所有帮助

【问题讨论】:

  • 总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是屏幕截图)放在有问题的(不是评论)中。还有其他有用的信息。

标签: python discord.py channels


【解决方案1】:

解决方案:

venv\lib\site-package\discord\abc.py

打开并找到

_Overwrites = namedtuple('_Overwrites', 'id allow deny type')

替换

class _Overwrites:
    __slots__ = ('id', 'allow', 'deny', 'type')

    def __init__(self, **kwargs):
        self.id = kwargs.pop('id')
        self.allow = kwargs.pop('allow', 0)
        self.deny = kwargs.pop('deny', 0)
        self.type = kwargs.pop('type')

    def _asdict(self):
        return {
            'id': self.id,
            'allow': self.allow,
            'deny': self.deny,
            'type': self.type,
        }

你可以看here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 2020-01-30
    • 2021-05-07
    • 1970-01-01
    • 2018-09-19
    • 2021-07-03
    相关资源
    最近更新 更多