discord.py - 我怎样才能知道一个人当前是否在 discord.py 中说话?
问题描述
我想知道是有人在说话还是在AFK。我找到了一些可能有帮助的例子,但我不知道它是否应该起作用。像这个:
async def on_member(member):
if member.voice:
print("HI")
我想知道我是否必须导入其他东西,因为目前我只有:
import discord
from discord.ext import commands
解决方案
您提供的示例返回 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 不接收音频,除非您打算使用套接字中的字节,但这是一个相当大的项目。
推荐阅读
- linux - 如何找到 zip 文件的名称并使用 Dockerfile 将内容提取到特定文件夹
- python - xarray 中 sys.getsizeof、nbytes 和 DataArray.size 的区别
- okhttp - 有更新的电子邮件列表吗?
- java - Primefaces 组件不渲染
- java - 我在 jpanel 上替换 jmenubar 时遇到问题
- c# - Roslyn 代码分析从无错误解决方案返回错误的构建错误
- arrays - 如果某一列中存在一个数字,则在与该数字对应的另一列中查找一个值
- c# - 即使没有给出 int,C# 也会返回错误“无法将类型“int”隐式转换为“字符串”
- gcc - 无法构建台面的静态库(libGL.a)
- python - Matplotlib 设置打印的绘图区域大小