【问题标题】: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
        )
        

        【讨论】:

          猜你喜欢
          • 2021-03-14
          • 1970-01-01
          • 1970-01-01
          • 2021-02-20
          • 1970-01-01
          • 2021-11-02
          • 2021-03-01
          • 2021-04-24
          • 2021-01-21
          相关资源
          最近更新 更多