【发布时间】:2021-12-28 14:42:21
【问题描述】:
这是我的锁定命令
@commands.command()
async def lock(self, ctx, channel: discord.TextChannel = None, reason: str = None):
channel = ctx.channel or channel
await channel.set_permissions(ctx.guild.default_role, send_messages=False, add_reactions=False)
await ctx.send(f"{success} | **{ctx.author.name}**, successfully locked <#{channel.id}>",
ephemeral=True)
embed = discord.Embed(
title="Channel locked",
description=f"This channel was locked by {ctx.author.mention} ????",
color=embed_color
)
embed.add_field(name="Reason", value=reason.capitalize())
embed.add_field(name=":warning: | Important", value="**Users with Administrator perms won't be affected**",
inline=False)
embed.timestamp = datetime.datetime.utcnow()
await channel.send(embed=embed)
它可以工作,但如果频道是私人频道(所以@everyone 看不到频道),即使在代码中(它覆盖权限)我没有 view_channel=True,机器人也会将其设置为公共频道。有什么想法可以解决吗?
【问题讨论】:
-
与您的问题无关,但您可以使用
channel.mention而不是<#{channel.id}> -
感谢改进!
-
也许当你做
set_permissions它默认view_channel=True,所以尝试将它显式设置为False?不幸的是,如果是这种情况,我在文档中找不到参考。 -
但是如果一个频道在被屏蔽之前对所有人都是可见的(所以
@everyone可以看到它),如果我输入view_channel=False然后@everyone不再看到它。这就是问题所在。 -
你可以试试 PermissionOverwrites - discordpy.readthedocs.io/en/stable/…
标签: discord discord.py