Ejemplo n.º 1
0
        protected override MessagesSendParams _handle(VkNet.Model.Message command)
        {
            var(func, _) = command.ParseFunc();

            string message;

            switch (func.ToLowerInvariant())
            {
            case "ping":
                message = Ping();
                break;

            case "pong":
                message = "ping";
                break;

            case "pang":
                message = "HHЫЬЫТолыо!!тЛылЬЬ;27~~&@!";
                break;

            default:
                throw new KeyNotFoundException();
            }


            var param = new MessagesSendParams
            {
                Message = message,
                PeerId  = command.GetPeerId()
            };

            return(param);
        }
Ejemplo n.º 2
0
        protected override MessagesSendParams _handle(VkNet.Model.Message command)
        {
            var chatid  = command.ChatId ?? throw new AccessViolationException("Available only in chats");
            var adminid = _api.Messages.GetChat(chatid).AdminId ??
                          throw new AccessViolationException("Only chat admin can use these method");


            var(_, args) = command.ParseFunc();

            if (args.Length == 0 || args[0] == "load")
            {
                return(new MessagesSendParams
                {
                    PeerId = command.GetPeerId(),
                    Message = LoadQueue(chatid)
                });
            }

            if (args[0] == "add")
            {
                if (command.FromId != adminid && !_bot.Admins.Contains(command.FromId ?? 0))
                {
                    throw new AccessViolationException("Only chat admin can use these method");
                }

                return(new MessagesSendParams
                {
                    PeerId = command.GetPeerId(),
                    Message = AddQueue(chatid, string.Join(' ', args.Skip(1)), adminid)
                });
            }

            string message;

            switch (args[0])
            {
            case "join":
                message = JoinQueue(chatid, command.FromId ?? 0, "last");
                break;

            case "leave":
                message = LeaveQueue(chatid, command.FromId ?? 0, "last");
                break;

            default:
                message = "Error!";
                break;
            }

            return(new MessagesSendParams
            {
                PeerId = command.GetPeerId(),
                Message = message
            });
        }
Ejemplo n.º 3
0
        protected override MessagesSendParams _handle(VkNet.Model.Message command)
        {
            if (command.FromId.HasValue && !_bot.Admins.Contains(command.FromId.Value))
            {
                throw new AccessViolationException("Permission denied!");
            }

            var(func, args) = command.ParseFunc();

            string message;

            switch (func.ToLowerInvariant())
            {
            case "sleep":
                Sleep();
                message = "zZzzzzZzzz";
                break;

            case "wakeup":
                WakeUp();
                message = "Ready!";
                break;

            case "stop":
                Stop();
                message = "Bye";
                break;

            case "load":
                message = LoadModule(args);
                break;

            case "unload":
                message = UnloadModule(args);
                break;

            default:
                message = "Not implemented yet";
                break;
            }

            var param = new MessagesSendParams
            {
                Message = message,
                PeerId  = command.GetPeerId()
            };

            return(param);
        }
Ejemplo n.º 4
0
        protected override MessagesSendParams _handle(VkNet.Model.Message command)
        {
            var(_, args) = command.ParseFunc();

            var(message, attachement) = GetVid(args[0]);

            var param = new MessagesSendParams
            {
                Message     = message,
                Attachments = new List <MediaAttachment> {
                    attachement
                },
                PeerId = command.GetPeerId()
            };

            return(param);
        }
Ejemplo n.º 5
0
        protected override MessagesSendParams _handle(VkNet.Model.Message command)
        {
            var(_, args) = command.ParseFunc();

            string message;

            if (args.Length != 2)
            {
                throw new ArgumentException("Wrong number of arguments provided");
            }

            switch (args[0])
            {
            case "now":
                message = Now(args[1]);
                break;

            case "today":
                message = Today(args[1]);
                break;

            case "tomorrow":
                message = Tomorrow(args[1]);
                break;

            case "week":
                message = Week(args[1]);
                break;

            default:
                throw new ArgumentException("Second argument is incorrect");
            }

            var param = new MessagesSendParams
            {
                Message = message,
                PeerId  = command.GetPeerId()
            };

            return(param);
        }
Ejemplo n.º 6
0
        protected override MessagesSendParams _handle(VkNet.Model.Message command)
        {
            var(_, args) = command.ParseFunc();

            if (!args.Any() || args[0].ToLowerInvariant() == "all")
            {
                var s = new StringBuilder();

                foreach (var provider in _bot.Providers.Values)
                {
                    if (provider.State == ProviderState.Unloaded)
                    {
                        continue;
                    }
                    s.Append(provider.GetAllHelp());
                    s.AppendLine();
                }

                return(new MessagesSendParams
                {
                    Message = s.ToString(),
                    PeerId = command.GetPeerId()
                });
            }

            if (!_bot.Functions.ContainsKey(args[0]))
            {
                throw new KeyNotFoundException("No such module.");
            }

            return(new MessagesSendParams
            {
                Message = _bot.Functions[args[0]].Functions[args[0]],
                PeerId = command.GetPeerId()
            });
        }
Ejemplo n.º 7
0
        protected override MessagesSendParams _handle(VkNet.Model.Message command)
        {
            command.MarkAsRead(_api);
            var(_, args) = command.ParseFunc();


            Subreddit sub;

            try
            {
                sub = _reddit.GetSubredditAsync(args[0]).Result;
            }
            catch (WebException)
            {
                return(new MessagesSendParams
                {
                    Message = $"No sush subreddit: {args[0]}.",
                    PeerId = command.GetPeerId()
                });
            }

            if (sub == null)
            {
                return(new MessagesSendParams
                {
                    Message = $"No sush subreddit: {args[0]}.",
                    PeerId = command.GetPeerId()
                });
            }

            Listing <Post> listing;

            switch (args.Last().ToLowerInvariant())
            {
            case "top":
                listing = sub.GetTop(FromTime.Day);
                break;

            default:     // "hot" also
                listing = sub.GetPosts(Subreddit.Sort.Hot);
                break;

            case "new":
                listing = sub.GetPosts(Subreddit.Sort.New);
                break;
            }

            var posts = listing.Take(50).Where(p => p.Url.ToString().EndsWith(".jpg")).ToList().Result;

            var rand = new Random();

            if (posts.Count == 0)
            {
                return(new MessagesSendParams
                {
                    Message = "Error getting image",
                    PeerId = command.GetPeerId()
                });
            }

            var post  = posts[rand.Next(0, posts.Count)];
            var image = post.Url.ToString();

            if (command.IsFromChat() && post.NSFW)
            {
                return(new MessagesSendParams
                {
                    Message = $"Link for 'friend': {image}",
                    PeerId = command.GetPeerId(),
                    DontParseLinks = true
                });
            }

            var server = _api.Photo.GetMessagesUploadServer(command.GetPeerId());

            using (var wc = new WebClient())
            {
                try
                {
                    var imageBytes = wc.DownloadData(image);

                    var responseFile = UploadImage(server.UploadUrl, imageBytes).Result;

                    var photos = _api.Photo.SaveMessagesPhoto(responseFile);

                    return(new MessagesSendParams
                    {
                        Message = $"Reddit [/r/{sub.Name}] {post.Title}\nLink: {post.Shortlink}",
                        Attachments = photos,
                        PeerId = command.GetPeerId(),
                        DontParseLinks = true
                    });
                }
                catch (WebException)
                {
                    throw new WebException("Error getting image");
                }
            }
        }
Ejemplo n.º 8
0
        protected override MessagesSendParams _handle(VkNet.Model.Message command)
        {
            var(_, args) = command.ParseFunc();
            var expr = new Expression(string.Join(' ', args))
            {
                Parameters = _parameters
            };

            void Repeat(string name, FunctionArgs argz)
            {
                if (name.ToLowerInvariant() == "repeat")
                {
                    var ex = argz.Parameters[0];
                    ex.EvaluateFunction += Repeat;

                    var what  = ex.Evaluate().ToString();
                    var times = Math.Min((int)argz.Parameters[1].Evaluate(), 4096 / what.Length + 1);

                    var o = new StringBuilder(times * what.Length);
                    for (var i = 0; i < times; i++)
                    {
                        o.Append(what);
                    }

                    argz.Result = o.ToString();
                }
            }

            void Factorial(string name, FunctionArgs argz)
            {
                if (name.ToLowerInvariant() == "fact")
                {
                    var fact = (int)argz.Parameters[0].Evaluate();

                    if (fact < 0 || fact > 1491)
                    {
                        throw new ArgumentOutOfRangeException(nameof(fact), "Must be positive integer [0..1491].");
                    }

                    BigInteger result = 1;

                    for (var i = 2; i <= fact; i++)
                    {
                        result *= i;
                    }

                    argz.Result = result;
                }
            }

            expr.EvaluateFunction += Repeat;
            expr.EvaluateFunction += Factorial;

            var message = "Error! ";

            try
            {
                message = "Out[0] = " + expr.Evaluate();
            }
            catch (Exception e)
            {
                message += e.Message;
            }

            return(new MessagesSendParams
            {
                PeerId = command.GetPeerId(),
                Message = message
            });
        }