【问题标题】:Discord.py member statusDiscord.py 成员状态
【发布时间】:2021-07-09 16:39:35
【问题描述】:
我怎样才能替换不止一件事,例如我做了 .replace("dnd", "Do Not Disturb") 但我怎样才能对“在线”、“离线”和“空闲”做同样的事情,所以我可以在里面放表情符号。
embed.add_field(name="**•Status•**", value=str(member.status).replace("dnd", "Do Not Disturb") , inline=True)
【问题讨论】:
标签:
python
discord
discord.py
【解决方案1】:
您可以像其他答案显示的那样简单地链接 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)
【解决方案2】:
这似乎更像是一个 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])
【解决方案3】:
你基本上可以做同样的事情,因为.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
)