嗨,我正在尝试检查用户是否为 Discord 语音频道是机器人,并检查语音频道中是否没有其他成员可以暂停机器人播放。
我遇到的问题是我的支票没有按预期进行,并且会在频道中除自己之外没有其他人时播放音乐。
这是我正在使用的:
@bot.event
async def on_ready():
print(f"I'm online!")
channel = bot.get_channel(channelID)
the_guild = bot.get_guild(GuildID)
voice = await channel.connect()
for member in the_guild.members:
if member.voice == bot is not None and member is None:
voice.pause()
print("paused")
else:
voice.play(discord.FFmpegPCMAudio("Media_URL")) # #default channel
如果有人可以帮助我,我将不胜感激。
答案 0 :(得分:0)
你的 if 语句根本没有任何意义,首先你要检查 member.voice == bot
(它返回一个布尔值),然后检查它的结果是否不是 NoneType
,您还要检查 member is None
是否也没有任何意义。
您可以简单地遍历 channel.members
的每个成员并检查它是否是带有 Member.bot
的机器人
for member in channel.members:
if member.bot:
voice.pause()
print("Paused")
不过这里有一个缺陷,如果语音频道中的任何成员是机器人,它就会停止播放音乐。您可以检查语音频道中有多少机器人,然后将其与频道中的成员总数进行比较:
counter = 0
for member in channel.members:
if member.bot:
counter += 1
if counter == len(channel.members):
voice.pause()
print("Paused")
如果你想要更短的版本:
counter = len([member for member in channel.members if member.bot])
if counter == len(channel.members):
voice.pause()
print("Paused")