如何通过索引获取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
相关产品推荐
相关产品推荐

