我只是想,当一个特定的用户进入我的不和谐服务器上的任何语音聊天时,我的机器人会检测到它,然后进入语音并说“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'
您在这里遇到了一些问题:
on_voice_state_update中没有消息或ctx。
参数必须如下:
成员-加入/离开/移动频道的成员
之前-之前的语音状态。如果他进入了一个频道并且没有从一个频道移动到另一个频道,则频道属性将为无
之后-之后的语音状态。如果他离开频道并且没有移动频道,则频道属性将为无
你回答你的问题,检查是否有人加入了我也会这样做,如果他搬家了我也会这样做:
if after.channel:
那就做你想做的