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

如何通过索引获取Discord Bot反应集合中的Emoji变量?

解决Discord机器人通过索引获取反应表情的问题

嘿Jelle,我明白你遇到的问题了!你现在的代码里,message.Reactions其实是一个IReadOnlyDictionary<IEmote, ReactionMetadata>类型的集合——也就是说它存储的是键值对:键是表情(IEmote),值是包含计数(Count)等信息的ReactionMetadata对象。

当你用ElementAt(0)取第一个元素时,拿到的是一个KeyValuePair<IEmote, ReactionMetadata>实例,而不是直接能访问emoji和count的对象,所以你需要通过键值对的Key和Value属性来获取对应的内容。

给你修改后的代码示例:

private async void reset(IUserMessage message)
{
    // 先判断消息有没有反应,避免索引越界异常
    if (message.Reactions.Any())
    {
        var firstReactionPair = message.Reactions.ElementAt(0);
        // 获取表情(对应你要的emoji变量)
        IEmote targetEmoji = firstReactionPair.Key;
        // 获取该表情的反应计数
        int reactionCount = firstReactionPair.Value.Count;
        
        // 这里可以添加你需要的逻辑,比如使用targetEmoji做操作
        Console.WriteLine($"第一个反应的表情是:{targetEmoji},共有{reactionCount}次反应");
    }
}

另外要注意:字典的顺序在某些情况下可能不是固定的,如果你是想获取特定的表情,最好直接通过表情对象去字典里查找,而不是依赖索引。但如果你的场景确实需要按索引取第一个反应,上面的代码就可以解决你的问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 05:02:42