首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Discord.py重写-查看某个成员是否处于静音状态,在API引用中找不到任何信息。

Discord.py重写-查看某个成员是否处于静音状态,在API引用中找不到任何信息。
EN

Stack Overflow用户
提问于 2019-07-06 05:24:17
回答 1查看 2.1K关注 0票数 1

如何查看Member对象是否处于静音状态?我可以使用编辑()函数来静音,但是我想检索一个服务器上所有静音成员的列表。但是,如果我不能检查Member对象是否是静音的,我就不能这样做。

另外,如何更改用户的权限,使他们不能发送消息(静音函数)

代码语言:javascript
复制
if ctx.author.is_muted(): # <<< Goal :) Not a real function
    await ctx.author.edit(mute=False) # Is a real function, only works on voice connection.
else:
    pass
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-06 13:28:26

正如您所说的(我也知道),无法使用discord.py API提供的函数正确地为服务器成员静音。您可以在语音聊天中静音,但不能在文本通道中静音。

避免用户发送消息的唯一方法是创建一个静音角色并更改所有通道perms。

下面是一些你能做些什么来回答你的问题的例子:

静音作用:

因此,如果每次调用命令mute @user时都不存在“静音”角色,我们就不会创建该角色:

代码语言:javascript
复制
import discord, asyncio
from discord.utils import get

async def create_mute_role(guild):
   '''
   `guild` : must be :class:`discord.Guild`
   '''
   role_name = "muted"
   mute_role = get(guild.roles, name = role_name)  # allows us to check if the role exists or not

   # if the role doesn't exist, we create it
   if mute_role is None:
      await guild.create_role(name = role_name)
      mute_role = get(guild.roles, name = role_name)  # retrieves the created role

   # set channels permissions
   for channel in guild.text_channels:
      await asyncio.sleep(0)

      mute_permissions = discord.PermissionsOverwrite()
      mute_permissions.send_messages = False

      await channel.set_permissions(mute_role, overwrite = mute_permissions)

   return(mute_role)

您的mute @user命令将执行如下操作:

代码语言:javascript
复制
@commands.command()
async def mute(self, ctx, member: discord.Member):
   guild = ctx.message.guild
   mute_role = await create_mute_role(guild)
   await member.add_roles(mute_role)

   await ctx.send(f"{member.name} has been muted !")
   return

让沉默的成员:

要获取服务器静音成员的列表,需要使用role.members

这样做:

代码语言:javascript
复制
muted_list = mute_role.members
print(len(muted_list))

将显示静音成员的数量,您可以使用以下方法遍历此列表:

代码语言:javascript
复制
for member in muted_list:

希望能帮上忙!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56911474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档