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;
        }
Esempio n. 2
0
        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 });
     }
 }
Esempio n. 4
0
        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);
        }