discord py - 排行榜选错了用户

discord py - leaderboard picks wrong user

我有一个问题,现在已经毁了我几个小时的大脑。我想检查消息作者和服务器上的特定用户是否具有相同的 ID。如果是,那么另一个动作 运行.

所以,这就是工作。但是我在排行榜中获得了第二名的用户,我..只是不知道为什么,我想要一个修复。

Json-文件结构:

{"327176944640720906": {"level": 29, "xp": 165, "secXP": 4508, "cooldown": 1611183963.9734623}, {..}, {..}}

我的代码:

with open("level.json", "r") as a:
         level = json.load(a)
         high_score_list = sorted(level, key=lambda x: level[x].get('secXP'), reverse=True)
         count1 = 0
         user = None
         for number, user in enumerate(high_score_list):
             if count1 == 1:
                break
         count1 += 1
         # Wrong ID (second place) at "User2"
         print(f"User2: {user} + msg author: {message.author.id} - {message.author.name}")

只要您确定您的 secXP 值存储为 int 而不是 str,那么您的排序就是正确的(否则它将是词典排序和不是你所期望的)。

为了完整起见,如果它们 str(或者您想绝对确定),您可以轻松转换为 int :

key=lambda x: int(level[x].get('secXP'))

由于您有一个正确排序的列表,具有最大 secXP 的用户 ID 只是排序列表的第一个元素,例如:high_score_list[0].