0

嗨,我正在尝试检查用户是否是 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

如果有人可以在这里帮助我,我将不胜感激。

4

1 回答 1

0

您的 if 语句根本没有任何意义,首先您要检查 if member.voice == bot(返回布尔值),然后检查它的结果是否不是 a 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")

参考:

于 2021-04-03T16:32:24.037 回答