每当有人(当然除了机器人)向消息添加 react 时,我想计算特定表情符号的 react 数量。
这就是我目前拥有的:
public async Task InitializeAsync()
{
_client.ReactionAdded += HandleReactionAsync;
}
private async Task HandleReactionAsync(Cacheable<IUserMessage, ulong> message, Cacheable<IMessageChannel, ulong> channel, SocketReaction reaction)
{
if (_client.GetUser(reaction.UserId).IsBot) return;
if (reaction.Emote.Name == "👍")
{
int reactionCount = ?
Console.WriteLine(reactionCount.ToString());
}
}
因此,如果机器人使用react,程序就会跳出。 (顺便说一句,这有效)
我只是不知道如何计算表情。 有谁知道我会怎么做?我在其他地方找不到任何有用的东西(或者也许互联网对我来说只是卑鄙的)。 提前致谢:D
_
编辑:
解决方案如下面的答案所述。但在我的例子中,要获取消息,我需要先将其下载到缓存中:
private async Task HandleReactionAsync(Cacheable<IUserMessage, ulong> message, Cacheable<IMessageChannel, ulong> channel, SocketReaction reaction)
{
if (_client.GetUser(reaction.UserId).IsBot) return;
if (reaction.Emote.Name == "👍")
{
var emotes = await message.GetOrDownloadAsync().Result.GetReactionUsersAsync(new Emoji("👍"), 1000).FlattenAsync();
int reactionCount = emotes.Count();
Console.WriteLine(reactionCount.ToString());
}
}
最佳答案
您可以使用以下内容来获取它,其中 message
是当前上下文中消息的变量名称。 (docs)
var emotes = await message.GetReactionUsersAsync(new Emoji("\U0001f495"), 1000).FlattenAsync();
int emotescount = emotes.Count();
关于c# - Discord.NET 获取特定 react 的 react 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71666189/