首页 > 解决方案 > 我怎样才能知道一个人当前是否在 discord.py 中说话?

问题描述

我想知道是有人在说话还是在AFK。我找到了一些可能有帮助的例子,但我不知道它是否应该起作用。像这个:

async def on_member(member):
    if member.voice:
        print("HI")

我想知道我是否必须导入其他东西,因为目前我只有:

import discord
from discord.ext import commands

标签: discord.pyvoice-recognition

解决方案


您提供的示例返回 a VoiceState,您可能会使用它。如果您在公会中设置了 AFK 语音通道和一键通语音通道,您可以执行以下操作:

on_voice_state_update() (在这里阅读)

@bot.event
async def on_voice_state_update(member, prev, cur):
    user = f"{member.name}#{member.discriminator}"
    if cur.afk and not prev.afk:
        print(f"{user} went AFK!")
    elif prev.afk and not cur.afk:
        print(f"{user} is no longer AFK!")
    elif cur.self_mute and not prev.self_mute: # Would work in a push to talk channel
        print(f"{user} stopped talking!")
    elif prev.self_mute and not cur.self_mute: # As would this one
        print(f"{user} started talking!")

澄清:

Discord 不接收音频,除非您打算使用套接字中的字节,但这是一个相当大的项目。


推荐阅读