You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对Discord Bot输出的reaction数值进行降序排序?

问题:如何对Discord Bot输出的reaction数量进行降序排序

我用Discord Bot脚本获取频道内带指定reaction的消息,筛选出reaction数量达标的条目后,当前输出如下(每行一个条目):

reaction 2
reaction 1
reaction 1
reaction 2
reaction 3

需要将输出中的数字按从大到小降序排列,得到如下结果:

reaction 3
reaction 2
reaction 2
reaction 1
reaction 1

当前生成输出的代码如下:

async for historical_message in message.channel.history(limit=historyLimit):
    for reaction in historical_message.reactions:
        if reaction.emoji == msgSplit[1]:
            num = reaction.count
            if num >= int(msgSplit[2]):
                print(reaction, num)

解决方案

要实现降序排序,不能边遍历边打印,需要先收集所有符合条件的条目,排序后再输出。具体修改如下:

修改后的代码

# 初始化空列表存储符合条件的结果
reaction_results = []

async for historical_message in message.channel.history(limit=historyLimit):
    for reaction in historical_message.reactions:
        if reaction.emoji == msgSplit[1]:
            num = reaction.count
            if num >= int(msgSplit[2]):
                # 将条目以(数量, reaction对象)的形式存入列表
                reaction_results.append( (num, reaction) )

# 按数量从大到小排序
reaction_results.sort(reverse=True, key=lambda item: item[0])

# 遍历排序后的列表打印结果
for num, reaction in reaction_results:
    print(reaction, num)

关键说明

  1. 收集结果:先把所有符合条件的(num, reaction)元组存入列表,避免边遍历边打印导致顺序无法控制
  2. 排序逻辑:sort(reverse=True, key=lambda item: item[0])指定按元组的第一个元素(即reaction数量)降序排列
  3. 输出结果:遍历排序后的列表,按原格式打印每个条目

内容的提问来源于stack exchange,提问作者user19567178

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:42:22