public async ValueTask HandleReactionsCleared(object sender, ReactionsClearedEventArgs e) { foreach (var service in ReactionsClearedServices) { await ExecuteAsync((service, e) => service.OnReactionsCleared(e), service, e).ConfigureAwait(false); } }
public async Task HandleAsync(ReactionsClearedEventArgs args) { if (!(args.Channel is CachedTextChannel channel)) { return; } using var ctx = new AdminDatabaseContext(_provider); var star = await ctx.GetSpecialEmojiAsync(channel.Guild.Id, EmojiType.Star); if (!args.Reactions.HasValue || !args.Reactions.Value.ContainsKey(star)) // TODO: ContainsKey works for Equals? { return; } if (!(await ctx.Starboard.FindAsync(args.Message.Id) is { } entry)) { return; } ctx.Starboard.Remove(entry); await ctx.SaveChangesAsync(); await args.Client.DeleteMessageAsync(entry.EntryChannelId, entry.EntryMessageId); }
protected internal virtual ValueTask OnReactionsCleared(ReactionsClearedEventArgs e) => default;