获取一个类别Channel的权限并设置为语音通道discord.py

Posted

技术标签:

【中文标题】获取一个类别Channel的权限并设置为语音通道discord.py【英文标题】:Get the permissions of a category Channel and set it to voice channel discord.py 【发布时间】:2021-04-05 11:48:27 【问题描述】:

我想在更改发言权限的语音频道中将所有人静音,但是当我这样做时,它不再与类别频道同步。

cat = ctx.guild.get_channel(categorychannel)
everyone = ctx.guild.default_role
channel = await ctx.guild.create_voice_channel("test", category=cat)
await channel.set_permissions(everyone, speak=False)

所以我正在尝试获取类别频道权限并将其设置为语音频道,但由于某种原因它不起作用。

cat = ctx.guild.get_channel(categorychannel)
everyone = ctx.guild.default_role
perm = cat.overwrites_for(everyone)
perm.speak = False
channel = await ctx.guild.create_voice_channel("test", category=cat)
await channel.set_permissions(everyone, overwrite=perm)

谁能帮帮我?

【问题讨论】:

【参考方案1】:

由于权限不一样,语音通道将不会与类别同步。因此,当您使用 speak = False 覆盖发言权限时,它不再与类别同步。如果您之后同步权限,您将覆盖speak = False

您提供的第二个代码按预期工作(只要找到类别),它获取类别的权限,将类别权限设置为语音通道,设置speak = False,然后不再与类别。

【讨论】:

是的,第二个它应该可以工作,但事实并非如此。你知道为什么吗? 它不起作用是什么意思?它是否复制类别的权限?是否将发言权限设置为 False?【参考方案2】:

为了让它工作,我将 Bot 文件移到我的服务器上,它开始正常工作,我不知道为什么,但它有,可能是缓存或我桌面上的一些配置。 所以第二个代码就像@Lemon.py 所说的那样是正确的。 这是代码。

cat = ctx.guild.get_channel(categorychannel)
everyone = ctx.guild.default_role
perm = cat.overwrites_for(everyone)
perm.speak = False
channel = await ctx.guild.create_voice_channel("test", category=cat)
await channel.set_permissions(everyone, overwrite=perm)

谢谢。

【讨论】:

以上是关于获取一个类别Channel的权限并设置为语音通道discord.py的主要内容,如果未能解决你的问题,请参考以下文章

静音整个 Discord 语音通道 (JS)

带有斜杠命令的 Discord.js 语音通道

如何将变量设置为用户指定的语音通道 - Discord.js

Discord bot无法连接到语音通道(python)

如何确定用户是不是加入/切换/离开了语音频道?

Discord.js 机器人提到语音通道