Discord.NET 获取特定 Reaction 的 ReactionCount
Discord.NET Get Reactioncount of specific Reaction
我想计算每次有人(当然机器人除外)对消息添加反应时特定表情符号的反应数。
这就是我目前拥有的:
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());
}
}
所以在bot反应的情况下程序跳出。 (顺便说一句)
我只是不知道如何计算表情。
有谁知道我会怎么做?我在其他地方找不到任何有用的东西(或者互联网对我来说可能只是意味着)。
提前致谢 :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();
我想计算每次有人(当然机器人除外)对消息添加反应时特定表情符号的反应数。
这就是我目前拥有的:
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());
}
}
所以在bot反应的情况下程序跳出。 (顺便说一句)
我只是不知道如何计算表情。 有谁知道我会怎么做?我在其他地方找不到任何有用的东西(或者互联网对我来说可能只是意味着)。 提前致谢 :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();