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 }); }
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); }
protected override MessagesSendParams _handle(VkNet.Model.Message command) { return(new MessagesSendParams { Message = Coins[Random.Next() % 2], PeerId = command.GetPeerId() }); }
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); }
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() }); }
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); }
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); }
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"); } } }
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 }); }