private async Task handleItTho(Cacheable <IUserMessage, ulong> arg1, EventAction act, Discord.WebSocket.SocketReaction arg3) { var user = Program.Client.GetUser(arg3.UserId); if (user == null || user.IsBot) { return; } if (messages.TryGetValue(arg1.Id, out var msg)) { if (msg.Events.HasFlag(act) == false) { return; } var eventArgs = new ReactionEventArgs() { Emote = arg3.Emote, User = user, Message = msg.Message, State = msg.State, Action = act }; msg.Method.Invoke(eventArgs); } await Task.CompletedTask; }
public static async void ReactionHandle(object sender, ReactionEventArgs args) { var asLetters = new StringBuilder(); if (args.Emote.Name.Length < 2) { return; } for (int i = 0; i < args.Emote.Name.Length; i += 2) { var indicator = args.Emote.Name.Substring(i, 2); var letter = convertRegionalToLetter(indicator); if (letter == null) { // not a regional indicator, so not a flag emote return; // so probably not trying to translate } asLetters.Append(letter); } await args.Message.RemoveReactionAsync(args.Emote, args.User); var toLanguage = getLanguage(asLetters.ToString()); if (toLanguage == null) { await args.User.SendMessageAsync($"You reacted with country flag `{args.Emote.Name}`, but I don't yet know what language that means. Please contact my owner."); return; } await Program.Services.GetRequiredService <TranslationService>() .Translate(args.Message, args.User, toLanguage); }
public void Invoke(ReactionEventArgs args) { if (_eh != null) { _eh.Invoke(this, args); } else { GetMethod().Invoke(null, new object[] { this, args }); } }
private async Task Client_ReactionAdded(Cacheable <IUserMessage, ulong> arg1, Cacheable <IMessageChannel, ulong> arg2, SocketReaction arg3) { var arg = new ReactionEventArgs() { Action = EventAction.Added, Emote = arg3.Emote, State = null, Message = await arg1.GetOrDownloadAsync(), User = arg3.User.GetValueOrDefault(null) ?? Program.Client.GetUser(arg3.UserId) }; ReactionHandle(this, arg); }