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]
.
我有一个问题,现在已经毁了我几个小时的大脑。我想检查消息作者和服务器上的特定用户是否具有相同的 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]
.