【问题标题】:Create a voice channel only to view but not to join创建语音频道只能查看不能加入
【发布时间】:2022-11-16 11:54:52
【问题描述】:

我想创建一个统计机器人。如果频道还没有创建,它应该在某个类别下自动创建。 但是,我想设置权限,以便任何人都无法连接、交谈、创建视频或使用该活动。

怎样才能让所有人都能看到这个频道,但是没有人可以使用呢?这些频道通常标有锁。

我用speak = False试过了,但我得到了这个错误:

TypeError: create_voice_channel() got an unexpected keyword argument 'speak'

@bot.event
async def on_ready():
    print(f'We have logged in as {bot.user}')
    
    activity = discord.Game(name="Sudoku", type=1)
    
    await bot.change_presence(status=discord.Status.online, activity=activity)

    guilds = bot.guilds
    for guild in guilds:
        Member = len([m for m in guild.members if not m.bot])
        
        channel = get(guild.channels, name=f"Count: {Member}")
        if not channel:
            cat = discord.utils.get(guild.categories, id=<id>)
            Member_count_channels.append(await guild.create_voice_channel(f'Count: {Member}', category=cat, speak = False)) 

【问题讨论】:

    标签: python discord discord.py


    【解决方案1】:

    您可以通过不和谐覆盖来做到这一点:

    perms = channel.overwrites_for(ctx.guild.default_role)
    perms.connect = False
    await channel.set_permissions(ctx.guild.default_role, overwrite=perms)
    

    该代码获取通道的现有权限,将连接权限设置为 false,然后应用于默认角色(每个人)。

    【讨论】:

      猜你喜欢
      • 2019-11-11
      • 2020-11-03
      • 2018-04-04
      • 1970-01-01
      • 2020-06-26
      • 2023-02-25
      • 2020-11-04
      • 2020-10-07
      • 2021-02-10
      相关资源
      最近更新 更多