Discord.py 会员状态

时间:2021-04-14 15:48:06

标签: python discord discord.py

我怎样才能替换不止一件事,例如我做了 .replace("dnd", "Do Not Disturb") 但是我怎样才能对“online”、“offline”和“idle”做同样的事情,所以我可以在里面放表情符号。

embed.add_field(name="**•Status•**", value=str(member.status).replace("dnd", "Do Not Disturb") , inline=True)

3 个答案:

答案 0 :(得分:3)

您可以像其他答案一样简单地链接 replace 方法,尽管我认为这是一种丑陋的方式。

你可以有一个将状态映射到实际名称的字典,然后简单地使用状态获取值:

status_dict = {
    "online": "Online",
    "offline": "Offline", 
    "idle": "Idle",
    "dnd": "Do Not Disturb",
    "invisible": "Invisible"
} # Change the values accordingly

status = status_dict[str(member.status)]
embed.add_field(name="**Status**", value=status)

答案 1 :(得分:0)

这看起来更像是一个 python 问题而不是 discord.py 但是...

str.replace 用第二个参数替换所有出现的子字符串,并返回新字符串。由于它返回新字符串,因此您可以在另一个字符串上堆叠一次,从而可以执行以下操作:

str(member.status).replace("dnd", "Do Not Disturb").replace("idle", "Idle").replace("online", "Online")

然而,这有点笨重,所以我会用替换创建一个列表,然后遍历列表并替换。

mstatus = str(member.status)
l = [
  ["dnd", "Do Not Disturb"],
  ["idle", "Idle"],
  ["online", "Online"]
]

for status in l:
    mstatus = mstatus.replace(status[0], status[1])

答案 2 :(得分:0)

你基本上可以做同样的事情,因为 .replace() 会返回一个字符串。

status = str(member.status)
formatted = status.replace("dnd", "Do Not Disturb").replace("online", "SomethingOnline").replace("offline", "SomethingOffline")

embed.add_field(
  name="**•Status•**",
  value=str(member.status).replace("dnd", "Do Not Disturb"),
  inline=True
)