【问题标题】:How can I send this list as one message in discord.py?如何在 discord.py 中将此列表作为一条消息发送?
【发布时间】:2021-03-21 08:51:11
【问题描述】:

我刚刚尝试在我的 discord 机器人上添加一个 listrole 命令,该命令列出了具有特定角色的每个用户。 但是,我似乎找不到一个解决方案,让我的机器人将整个列表作为一条消息发送,它将列表中的每个成员作为一条消息发送出去,这对大量成员来说很烦人。

到目前为止,这是我的代码:

@bot.command()
@commands.has_permissions(administrator=True)
async def listrole(ctx, role:discord.Role):
    members = role.members
    if len(members) > 100:
        await ctx.send("Too many members to list")
    else:
        for member in members:
            memberlist = ''.join(f"{member.display_name}#{member.discriminator}")
            await ctx.send(memberlist)

非常感谢您的帮助,我对 Python 很陌生

【问题讨论】:

  • 另外,str(member) 会给会员用户名+鉴别符

标签: python discord.py discord.py-rewrite


【解决方案1】:

在循环之前定义您的memberlist,并附加到它。然后,将该列表中的所有项目连接成一个由换行符分隔的长字符串,并在循环完成后发送它

memberlist = []
for member in members:
    memberlist.append(f"{member.display_name}#{member.discriminator}")
await ctx.send('\n'.join(memberlist))

【讨论】:

  • 首先,感谢您的帮助。但是,当我这样做时,我的机器人首先发送包含 1 个成员的 1 条消息,然后发送包含 2 个成员的 1 条消息,依此类推。我有什么遗漏吗?编辑:好的,我很笨,我把 ctx.send 放到我的 for 循环中!现在可以使用了,再次感谢您的帮助!
  • 很高兴这有效。我强调它应该在循环之后 以防其他人在将来看到这个答案。
猜你喜欢
  • 2019-04-14
  • 2020-10-15
  • 2021-03-16
  • 2021-07-08
  • 2021-05-01
  • 2020-10-01
  • 2020-04-21
  • 2021-10-15
  • 2021-11-07
相关资源
最近更新 更多