Пример #1
0
        private void HandleReaction(MessageReactionAddEvent reaction)
        {
            _ = Task.Run(async() =>
            {
                var currentUser = await Client.Rest.GetCurrentUserAsync();
                if (reaction.UserId == currentUser.Id)
                {
                    return;
                }
                if (!(_callbacks.TryGetValue(reaction.MessageId.RawValue, out var callback)))
                {
                    return;
                }
                if (!(await callback.Criterion.JudgeAsync(callback.Context, reaction.Emoji)
                      .ConfigureAwait(false)))
                {
                    return;
                }

                if (await callback.HandleCallbackAsync(reaction.Emoji).ConfigureAwait(false))
                {
                    RemoveReactionCallback(reaction.MessageId);
                }
            });
        }
Пример #2
0
 public void Enrich(Scope scope, int shardId, MessageReactionAddEvent evt)
 {
     scope.AddBreadcrumb("", "event.reaction",
                         data: new Dictionary <string, string>
     {
         { "user", evt.UserId.ToString() },
         { "channel", evt.ChannelId.ToString() },
         { "guild", (evt.GuildId ?? 0).ToString() },
         { "message", evt.MessageId.ToString() },
         { "reaction", evt.Emoji.Name }
     });
     scope.SetTag("shard", shardId.ToString());
 }
Пример #3
0
 public static string JumpLink(this MessageReactionAddEvent msg) =>
 $"https://discord.com/channels/{msg.GuildId}/{msg.ChannelId}/{msg.MessageId}";