If else语句使用dict选择正确的值

2024-06-01 21:26:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做一个Teamspeak 3机器人。你知道吗

首先,我只想说我对Python非常陌生,所以可能有一个简单的解决方案,我不知道,但我不知道如何做到这一点。你知道吗

我所做的是创建一个每20秒运行一次的脚本。它将使用所有联机连接的客户端创建一个循环,如果它们不在AFK频道并且不是工作人员,则在数据库中的total time online表中添加20秒。到目前为止,我已经创造了这个,它是有效的。你知道吗

使用此bot的计划是,如果teamspeak客户机已经在线了达到servergroup所需的时间,则为其分配一个新的servergroup。你知道吗

我在这里创建了三个示例:

serverGroups = {
    "Rookie": ("9", "3600"),
    "Member": ("10", "43200"),
    "Veteran": ("11", "172800")
}

在Rookie组中,名称当然是Rookie,servergroup ID是9,实现它所需的总时间(以秒为单位)是3600。你知道吗

我有所有所需信息的变量,如用户当前服务器组id和总在线时间。你知道吗

因此,基本上我不知道该怎么做的是编写代码来检查用户是否达到了新服务器组所需的时间,以及是否应该将用户分配到新服务器组。你知道吗

请注意,我不能每次运行时都更改servergroup,因为用户将在其客户端上听到它,因此我只能在到达时间并且用户不是他所到达的用户组时分配新组。稍后我将向我使用的dict添加更多的组,这就是我在这里提问的原因,因为我一直在尝试并尝试以一种简单的方式来实现这一点,我不必每次添加新的servergroup时都进入代码并添加大量行。你知道吗

我试图从这里返回的是,是否应该更改servergroup以及更改为哪个servergroup。你知道吗

如果我解释得不好,请告诉我,我会尝试用更好的方式重新表述。你知道吗

谢谢你。你知道吗


Tags: 代码用户服务器脚本客户端方式时间机器人
1条回答
网友
1楼 · 发布于 2024-06-01 21:26:14

如果没有关于如何存储玩家信息的详细信息,很难给出一个很好的例子,但是像这样的东西可能就是你想要的

def upgradeUserRank(playerScore):
    # :param playerscore: whatever variable
    # which contains the players newest time
    # after adding the 20 seconds
    #
    # returns the new player rank if they should
    # be upgraded, else None
    serverGroups = {
        "Rookie": ("9", "3600"),
        "Member": ("10", "43200"),
        "Veteran": ("11", "172800")
    }

    # invert the dictionary because we want to reference by times
    # scoreDict = {serverGroups[i][1]:i for i in serverGroups.keys()}
    scoreDict = {j[1]:i for i, j in serverGroups.items()}

    # iterate through the required times from greatest to least
    # so you don't return the lower ranks
    for i in sorted(scoreDict, key=lambda x:int(x), reverse=True):
        # Check if they've entered the new rank in the last 20 seconds
        # Otherwise, you'd suggest they should be updated
        # every 20s interval you check after the pass the
        # threshold
        if 0<=playerScore-int(i)<20:
            return scoreDict[i]

相关问题 更多 >