python - 检索频道 discord.py 中的成员列表 rewrite
问题描述
概括
我对 discord.py 真的很陌生,并且正在尝试弄清楚如何在 discord 服务器频道中检索人员列表。我正在研究一个将频道随机分成两个不同呼叫的命令,但我想知道如何在语音频道中检索成员,创建成员列表,随机拆分它们,最后移动成员。
我现在主要关心的只是将成员列表检索为列表 [] 格式
这是我到目前为止所拥有的:
async def team(ctx):
team_select = [discord.VoiceChannel.members(ctx.guild.channels, id=742871631751282829)]
print(team_select)
^ 这段代码,我用来给我错误:“TypeError:'property' object is not callable”
解决方案
您可以通过 来做到这一点VoiceChannel.members
,但有些事情应该从Abdulaziz
的答案中改变。
1.使用Bot.get_channel()
如果
bot.get_channel
您有频道的 ID,或者Guild.get_channel
如果您知道频道在哪个公会并且有其 ID,utils.get
则应仅在您没有 ID 时调用。get_ 方法是 O(1),而 utils.get 在内部是一个 for 循环,因此是 O(n)。
如果您不熟悉大 O 表示法,O(1) 表示操作时间与任意数量的项目相同,而 O(n) 是线性的,项目越多,所需时间越长。
阅读更多关于
O(n) vs O(1)
这里。
2.使用Bot.get_guild()
fetch_guild
是一个 API 调用,并且可以在不是 API 调用时让您的机器人速率受限get_guild
。使用返回的 Guild 对象
fetch_guild
不会给你公会的频道。在此处的文档中阅读有关它的更多信息。
这是修改后的代码:
@bot.command()
async def team(ctx):
vc = ctx.guild.get_channel(742871631751282829)
await ctx.send("\n".join([str(i) for i in vc.members]))
推荐阅读
- vue.js - 从枚举字段中获取值以在 Vue 中动态填充单选按钮
- c# - 使用 .NET 框架命名空间和类
- haskell - 为什么一旦其中一项完全收缩,收缩就会停止
- c++ - 调用 C++20 模板 lambda 会导致解析错误
- python - 运行 python manage.py runserver 命令时 DLL 加载失败
- swift - 将 UIView 在容器中居中而不跳转
- python - RNN在权重更新后输出NaN
- java - HttpResponseException:尝试通过 java 在 jenkins 中调用创建作业时被禁止
- dictionary - 数据未在 Text() 小部件中呈现,我如何在 Flutter 应用程序中查看数据
- java - 有没有办法从本地 jar 在 pom 文件中创建 maven 依赖项