c# - Discord.NET 获取特定 react 的 react 计数

标签 c# discord bots discord.net

每当有人(当然除了机器人)向消息添加 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/

相关文章:

c# - Azure 表高级查询

c# - ASP.NET MVC 网格显示解决方案

javascript - 从提及中获取用户 ID

javascript - 不和谐机器人 : struggling to tally emoji reacts for voting

regex - 如何阻止对与 Apache 中常见模式匹配的 URL 的机器人请求?

api - Discord Rest Api Bot,读取用户在特定公会中的角色

python - 是否可以让 discord.py 机器人在没有用户触发的情况下向用户发送私有(private)消息?

c# - 将接口(interface)方法作为参数传递

c# - ASP.NET MVC 应用程序从 SQLite 数据库读取数据

python discord.py 在加入公会时向邀请者发送 DM