python - 我想创建一个只对管理员可见的频道 discord.py
问题描述
async def report(ctx, member: discord.Member, *, report=None):
report_channel = await ctx.guild.create_text_channel("reports")
await report_channel.set_permissions(has_permissions(administrator=True), view_channel=True, add_reactions=True)
# I tried to fix it every time but it never works i just want to make that specific report channel to be only visible for admins :(
我不断收到此错误:命令引发异常:InvalidArgument:目标参数必须是成员或角色
解决方案
你得到的错误很清楚。
channel.set_permissions
将成员或角色对象作为其参数。
无论如何您都不需要使用它,您可以简单地使用以下overwrites
参数ctx.guild.create_text_channel
:
everyone = ctx.guild.default_role
# Gets the @everyone role, see: https:#discordpy.readthedocs.io/en/stable/api.html#discord.Guild.default_role
ctx.guild.
overwrites = {everyone: discord.PermissionOverwrite.from_pair(deny=discord.Permissions.all(), allow=[])
ctx.guild.get_role(admin_role_snowflake): discord.PermissionOverwrite.from_pair(deny=discord.Permissions.none(), allow=discord.Permissions.all_channel())}
await ctx.guild.create_text_channel("reports", overwrites=overwrites)
# see: https:#discordpy.readthedocs.io/en/stable/api.html#discord.Guild.create_text_channel
第一个 dict 项声明 @everyone 默认情况下不应该对该频道有任何权限。
第二个声明管理员角色应该拥有该频道的所有文本频道权限。
您可能需要调整权限以获得所需的结果,并确保替换admin_role_snowflake
为服务器中管理员角色的雪花。
推荐阅读
- java - 每次调用新函数时,我都需要运行查询“USE database”
- python - 这个有什么用:df.columns=['count']?
- symfony - 是否可以通过作曲家更改 php bin/console?
- javascript - 将jquery函数转化为函数式编程函数
- python - 如何在 tkinter 中从中间开始进度条
- maven - 命令行中带有 AND、OR 操作的复杂黄瓜标签不起作用
- amazon-web-services - 如何使 api 网关和 lambda 控制台测试之间的事件相同
- java - 仿真器:仿真器:错误:仿真当前需要硬件加速
- vue.js - npm run build 生成错误的路径
- angular - Angular 中的锚标签——它们是如何工作的?