python - Discord.py 获取消息中给定角色的所有成员
问题描述
这似乎微不足道,但我有一个奇怪的问题。
我在 on_message 中检查了这个条件(只是一个片段,我在那里有更多条件,它们工作得很好):
elif message.content.startswith("?ranklist "):
await rankLister(cls, message)
这是我用来列出用户在消息中提供的角色的所有成员的功能。
async def rankLister(cls, message):
rankToAnalizeStr = message.content[10:]
logging.info("Asked for %s role members", rankToAnalizeStr)
for role in message.guild.roles:
if role.name == rankToAnalizeStr:
rankToAnalize = role
break
rankToAnalize = ""
if rankToAnalize:
memberNames = "\n".join(i.name for i in rankToAnalize.members)
embed=discord.Embed(title="", description="", color=0xff0000)
embed.set_author(name="", url="https://tieronetact.com")
embed.set_thumbnail(url="https://cdn.discordapp.com/emojis/734014025834430525.png")
embed.add_field(name="Lista osób z rangą {}".format(rankToAnalizeStr), value=memberNames, inline=True)
await message.channel.send(embed=embed)
消息的格式如下:
?ranklist roleNameHere
因此,开始时的字符串切割。现在发生的情况是,当 BOT 正在启动时(而不是在调用函数时),我只得到连接到语音的成员,这真的很奇怪,因为我没有以任何方式引用语音通道。我想获得所有成员(包括那些未连接到语音的成员,包括在线和离线)。
解决方案
推荐阅读
- javascript - 在执行下一行之前等待 foreach 完成
- c++ - directory_entry 的输出与具有变体的类的重载 ostream 运算符<< 冲突
- html - Ionic5 侧边菜单 - 仅限于特定视图
- spring - 使用 Spring 根据配置参数注入正确的实现
- sql - 更新/替换更新太多记录的 SQL 查询
- php - Laravel Collection <> 非数据库实体的模型混合?
- python - 我知道即使 scikit-bio 已成功安装,也没有 skbio 模块
- c++ - 使用 for 循环 C++ 计算浮点类型平均值
- php - Laravel:无效的参数号:未定义参数
- events - 基于事件的与版本化事件的集成