Discord bot在Python的帮助下使用语音聊天来静音人们的声音

Discord bot在Python的帮助下使用语音聊天来静音人们的声音,python,discord,Python,Discord,我正在尝试制作一个Discord机器人,它使用语音聊天使参与者的声音静音 为此,我使用Python 这是我的代码,但它没有按预期工作 导入不一致 从discord.ext导入命令 client=commands.Bot(command_prefix=“!”) @客户端事件 _ready()上的异步定义: 打印('BOT-ACTIVATED') @client.command() 异步def静音(ctx): voice\u client=ctx.guild.voice\u client 如果不是v

我正在尝试制作一个Discord机器人,它使用语音聊天使参与者的声音静音

为此,我使用Python

这是我的代码,但它没有按预期工作

导入不一致
从discord.ext导入命令
client=commands.Bot(command_prefix=“!”)
@客户端事件
_ready()上的异步定义:
打印('BOT-ACTIVATED')
@client.command()
异步def静音(ctx):
voice\u client=ctx.guild.voice\u client
如果不是voice_客户端:
返回
channel=语音\客户端.channel
等待语音客户端。语音状态(ctx.guild.id、channel.id、self\u mute=True)
client.run(我的令牌)
我的想法是:

我将输入的命令:
!全部静音
\

机器人将使语音聊天中的所有参与者静音

我将输入的命令:
!全部取消静音
\


机器人将取消语音聊天中所有参与者的静音。

在我们找到问题的关键之前,在您的前缀上加一个简短的词:
您的命令前缀是
预先使用空格。我不知道这是否是有意的,但如果是,在我的测试中,我发现使用它是不可能的。不和谐带开始空白,所以我所有的信息
!测试结果为
!测试

修复此问题后,请尝试使用
!静音
命令产生错误:
“VoiceClient”对象没有属性“voice\u state”
事实上,我在文档中找不到类似的内容。我花了很多时间寻找,但我可能得到了你想要的

client=commands.Bot(command_prefix=“!”)
@client.command()
异步def静音(ctx):
voice_client=ctx.guild.voice_client#获取此帮会中机器人的当前语音连接
如果没有语音客户端:#如果没有连接。。。
return#可能应该添加一些消息,让用户知道为什么这里什么都没有发生,比如ctx.send(“我不在任何语音频道…”)
channel=voice_client.channel#获取语音连接的语音通道
people=channel.members#获取频道中的成员
对于人物中的人物:#在这些成员上循环
如果person==client.user:#如果被检查的人是机器人。。。
继续#跳过此迭代,以避免使机器人静音
wait person.edit(mute=True,reason=“{}告诉我让这个频道中的每个人都静音”。format(ctx.author))
#编辑要静音的人,原因显示在调用此命令的审核日志中。该行正在等待,因为它涉及到向服务器发送命令(“禁用此用户”),然后等待响应。

您的bot需要权限才能禁用用户。

能否显示您的整个代码文件(不包括令牌)?您是否在
async def mute
上面有
@client.command()
装饰程序?
main\u ws
应该在
voice\u客户端.main\u ws.voice\u状态()中是什么?我在discord.py文档中找不到它
import discord from discord.ext import commands client=commands.Bot(command_prefix=“!”)@client.event async def on_ready():print('Bot ACTIVATED')@client.command()async def mute(ctx):voice\u client=ctx.guild.voice\u client如果不是voice\u client:return channel=voice\u client.channel wait voice\u client.voice\u state(ctx.guild.id,channel.id,self\u mute=True)client.run(我的令牌)
谢谢先生:)