提问者:小点点

如何检测用户是否加入语音频道的任何人?


我只是想,当一个特定的用户进入我的不和谐服务器上的任何语音聊天时,我的机器人会检测到它,然后进入语音并说“x用户加入了聊天或类似的东西”(我已经知道如何)。问题是如何检测用户进入?(检测必须是即时的)。我尝试使用这段代码:

@bot.event
async def on_voice_state_update(message, after, before, member):
ctx = await bot.get_context(message)
u = ctx.guild.get_member(428938023057620994)
for channel in ctx.guild.voice_channels:
    if sebastiano in channel:
        tts = gTTS(text=u + "in voice chat", lang='en')
        tts.save("u.mp3")
        try:
            vc = await channel.connect()
            await vc.play(discord.FFmpegPCMAudio('sebastiano.mp3'))
            await vc.disconnect()
        except:
            await ctx.send("Scusate ho la 104 e non funziono.")

但不起作用:

文件"/home/diego/Documents/Python3/CancerBot/cancerbot.py",第26行,on_voice_state_updatectx=await bot.get_context(message)File"/home/diego/. local/lib/python3.9/site-不和谐/ext/命令/bot.py",第880行,在get_contextview=StringView(message.content)属性错误:'成员'对象没有属性'content'


共1个答案

匿名用户

您在这里遇到了一些问题:

on_voice_state_update中没有消息或ctx。

参数必须如下:

成员-加入/离开/移动频道的成员

之前-之前的语音状态。如果他进入了一个频道并且没有从一个频道移动到另一个频道,则频道属性将为无

之后-之后的语音状态。如果他离开频道并且没有移动频道,则频道属性将为无

你回答你的问题,检查是否有人加入了我也会这样做,如果他搬家了我也会这样做:

if after.channel:

那就做你想做的