public Task <bool> HandleAsync(IIncomingMessage message, IVityaBot bot)
 {
     return(bot.SendMessageAsync(new OutgoingMessage()
     {
         peer_id = message.peer_id, message = string.Format("Все говорят {0}, а ты пошел на хуй", message.text)
     }));
 }
Exemple #2
0
        static async Task ProcessMessagesAsync(IVityaBot bot, IEnumerable <IUpdatesHandler <IIncomingMessage> > handlers)
        {
            try
            {
                if (Processing)
                {
                    return;
                }
                _logger.Log(NLog.LogLevel.Info, "ProcessMessagesStart");
                Processing = true;
                var updatesResult = await bot.GetUpdatesAsync();

                foreach (var message in updatesResult.Updates)
                {
                    foreach (var handler in handlers)
                    {
                        if (handler.CanHandle(message, bot))
                        {
                            await handler.HandleAsync(message, bot);
                        }
                    }
                }
                Processing = false;
            }
            catch (Exception e)
            {
                Processing = false;
                _logger.Log(NLog.LogLevel.Error, e);
            }
        }
Exemple #3
0
 public async Task <HandlerResult> HandleAsync(IIncomingMessage message, IVityaBot bot)
 {
     return(new HandlerResult()
     {
         message = bot.confimationCode
     });
 }
 public Task <bool> HandleAsync(IIncomingMessage message, IVityaBot bot)
 {
     return(bot.SendMessageAsync(new OutgoingMessage()
     {
         peer_id = message.peer_id, message = string.Format("Твоя картинка говно")
     }));
 }
Exemple #5
0
        public async Task <HandlerResult> HandleAsync(IIncomingMessage message, IVityaBot bot)
        {
            foreach (var attach in message.attachments.Where(x => x.type == "audio_message"))
            {
                //у гугла бесплатный лимит на 60 минту в месяц, если больше то надо бабки платить
                //я там поставил на 120 секунд в день квоту, что бы за пределы не вылезало
                //у меня вроде бесплатный режим стоит в аккаунте, но я хз как у них там сразу бабки снимает
                //if (attach.audio_message.duration < 10)
                //{
                //    var audioText = await bot.audioToText((string)attach.audio_message.link_mp3);
                //    if (!string.IsNullOrWhiteSpace(audioText))
                //    {
                //        await bot.processMemeAsync(message, audioText);
                //    }
                //    else
                //    {
                //        await bot.processMemeAsync(message, generateRandom());
                //    }
                //}
                //else
                {
                    await bot.processMemeAsync(message, generateRandom());
                }
            }

            return(new HandlerResult()
            {
                message = "ok"
            });
        }
Exemple #6
0
 public bool CanHandle(IIncomingMessage message, IVityaBot bot)
 {
     return(bot.canProcess(message.from_id) &&
            _messageTypes.Contains(message.MessageType.ToLowerInvariant()) &&
            Services.DataService.vityaId == message.from_id &&
            message.attachments != null &&
            message.attachments.Any(x => x.type == "wall"));
 }
Exemple #7
0
 public async Task <HandlerResult> HandleAsync(IIncomingMessage message, IVityaBot bot)
 {
     //await _commands[message.text.ToLowerInvariant()](message, bot);
     return(new HandlerResult()
     {
         message = "ok"
     });
 }
Exemple #8
0
 public override async Task handleAsync(IIncomingMessage message, IVityaBot bot, Match match)
 {
     var outgoingMessage = new Models.OutgoingMessage()
     {
         peer_id = message.peer_id,
         message = $"bot test mode is {bot.mode.ToString()}"
     };
     await bot.SendMessageAsync(outgoingMessage);
 }
Exemple #9
0
 public override async Task handleAsync(IIncomingMessage message, IVityaBot bot, Match match)
 {
     var outgoingMessage = new Models.OutgoingMessage()
     {
         peer_id = message.peer_id,
         message = $"Бэтмен {Generator.generate(SwearWordGenerator.Type.Adjective, 2, Sex.M, Case.I)} {Generator.generate(SwearWordGenerator.Type.Noun, 2, Sex.M, Case.I)}"
     };
     await bot.SendMessageAsync(outgoingMessage);
 }
Exemple #10
0
        public async Task <HandlerResult> HandleAsync(IIncomingMessage message, IVityaBot bot)
        {
            await bot.processTextMessage(message);

            return(new HandlerResult()
            {
                message = "ok"
            });
        }
Exemple #11
0
 public override async Task handleAsync(IIncomingMessage message, IVityaBot bot, Match match)
 {
     bot.mode = Enum.Parse <VKBot.VkBot.Mode>(match.Groups[1].Value);
     var outgoingMessage = new Models.OutgoingMessage()
     {
         peer_id = message.peer_id,
         message = $"bot test mode is {bot.mode.ToString()}"
     };
     await bot.SendMessageAsync(outgoingMessage);
 }
Exemple #12
0
 public override async Task handleAsync(IIncomingMessage message, IVityaBot bot, Match match)
 {
     var peers           = VkontakteBot.Services.DataService.activeMemes.Select(t => t.Id + " - " + t.title + " - " + t.description);
     var outgoingMessage = new Models.OutgoingMessage()
     {
         peer_id = message.peer_id,
         message = string.Join("\n", peers)
     };
     await bot.SendMessageAsync(outgoingMessage);
 }
Exemple #13
0
 public override async Task handleAsync(IIncomingMessage message, IVityaBot bot, Match match)
 {
     var outgoingMessage = new Models.OutgoingMessage()
     {
         peer_id = message.peer_id,
         //message = text,
         attachment = Services.DataService.pictures["joke"],
         //group_id = message.
     };
     await bot.SendMessageAsync(outgoingMessage);
 }
        public async Task <bool> HandleAsync(IIncomingMessage message, IVityaBot bot)
        {
            foreach (var attach in message.attachments.Where(x => x.type == "wall"))
            {
                await bot.SendMessageAsync(new OutgoingMessage()
                {
                    peer_id = message.peer_id, message = string.Format("Опять всякое говно репостим")
                });
            }

            return(true);
        }
Exemple #15
0
        public async Task <bool> HandleAsync(IIncomingMessage message, IVityaBot bot)
        {
            foreach (var attach in message.attachments.Where(x => x.type == "audio"))
            {
                await bot.SendMessageAsync(new OutgoingMessage()
                {
                    peer_id = message.peer_id, message = string.Format("{0} говно", attach.audio.artist)
                });
            }

            return(true);
        }
Exemple #16
0
        public async Task <HandlerResult> HandleAsync(IIncomingMessage message, IVityaBot bot)
        {
            //foreach (var attach in message.attachments.Where(x => x.type == "audio"))
            //{
            //    await bot.SendMessageAsync(new OutgoingMessage() { peer_id = message.peer_id, message = string.Format("{0} говно", attach.audio.artist) });
            //}

            return(new HandlerResult()
            {
                message = "ok"
            });
        }
Exemple #17
0
        public override async Task handleAsync(IIncomingMessage message, IVityaBot bot, Match match)
        {
            var memes = VkontakteBot.Services.DataService.activeMemes;

            foreach (var meme in memes)
            {
                await bot.processMemeByIdAsync(message.peer_id, meme.Id, meme.title + ";" + meme.description);
            }
            var outgoingMessage = new Models.OutgoingMessage()
            {
                peer_id = message.peer_id,
                message = $"test memes finished"
            };
            await bot.SendMessageAsync(outgoingMessage);
        }
Exemple #18
0
        public override async Task handleAsync(IIncomingMessage message, IVityaBot bot, Match match)
        {
            var peerId = match.Groups[1].Value;
            var text   = match.Groups[2].Value;

            if (!string.IsNullOrEmpty(text))
            {
                var outgoingMessage = new Models.OutgoingMessage()
                {
                    peer_id = peerId,
                    message = text
                };
                await bot.SendMessageAsync(outgoingMessage);
            }
        }
Exemple #19
0
        public async Task <HandlerResult> HandleAsync(IIncomingMessage message, IVityaBot bot)
        {
            var outgoingMessage = new OutgoingMessage()
            {
                peer_id = message.peer_id,
                //message = text,
                attachment = Services.DataService.pictures["communityLike"],
                //group_id = message.
            };
            await bot.SendMessageAsync(outgoingMessage);

            return(new HandlerResult()
            {
                message = "ok"
            });
        }
Exemple #20
0
        static void Main(string[] args)
        {
            SpeechSynthesizer speaker = new SpeechSynthesizer();

            //speaker.SelectVoice("ScanSoft Katerina_Full_22kHz");
            speaker.Rate   = 1;
            speaker.Volume = 100;
            // speaker.Speak("vitia pidor"); // надо поставить русский езык(в распозновании речи, можно скачать у мелкософта, но у меня не получилось :( из-за x64 винды и через стрим заливать как музычку

            NLog.LogManager.LoadConfiguration(Directory.GetParent(Environment.CurrentDirectory).Parent.FullName + "//NLog.config");

            _logger.Info("Hello World");
            bot = new VkBot(_logger);
            Start();

            Console.Read();
        }
Exemple #21
0
        public override async Task handleAsync(IIncomingMessage message, IVityaBot bot, Match match)
        {
            var memeId = match.Groups[1].Value;
            var memes  = VkontakteBot.Services.DataService.activeMemes;
            var meme   = memes.FirstOrDefault(t => t.Id == memeId);

            if (meme != null)
            {
                await bot.processMemeByIdAsync(message.peer_id, meme.Id, meme.title + ";" + meme.description);
            }
            var outgoingMessage = new Models.OutgoingMessage()
            {
                peer_id = message.peer_id,
                message = $"test {memeId} finished"
            };
            await bot.SendMessageAsync(outgoingMessage);
        }
Exemple #22
0
        public async Task processMessage(IIncomingMessage message, IVityaBot bot)
        {
            //get user access rights
            var userAccess = Services.DataService.userAccess(message.from_id);
            //get user patterns
            var userPatternHandlers = patternHandlers.Where(t => (t.access != 2 && t.access <= userAccess) || (t.access == 2 && t.userIds.Contains(message.from_id)));

            foreach (var pattern in userPatternHandlers)
            {
                Match match = pattern.regex.Match(message.text);
                if (match.Success)
                {
                    await pattern.handleAsync(message, bot, match);

                    break;
                }
            }
        }
Exemple #23
0
        public override async Task handleAsync(IIncomingMessage message, IVityaBot bot, Match match)
        {
            //todo: random event
            var randInt = _random.Next(0, 100);

            if (randInt < 80)
            {
                await funcs[0](message, bot);
            }
            else if (randInt < 90)
            {
                await funcs[1](message, bot);
            }
            else if (randInt < 100)
            {
                await funcs[2](message, bot);
            }
        }
Exemple #24
0
        async Task <IActionResult> ProcessMessagesAsync(IVityaBot bot, IIncomingMessage message)
        {
            try
            {
                //check chache
                //if cache already contains the message, then return ok result, else proceed
                ObjectCache cache    = MemoryCache.Default;
                var         cacheKey = message.peer_id + message.MessageType + message.from_id + message.date;
                if (cache[cacheKey] != null)
                {
                    _logger.Log(NLog.LogLevel.Info, $"cache key found: {cacheKey}");
                    return(Ok("ok"));
                }
                cache.Add(cacheKey, message, DateTime.Now.AddMinutes(5));
                //todo: separate interface for Task<HandlerResult>
                //handle logic with response to vk
                foreach (var handler in responseHandler)
                {
                    if (handler.CanHandle(message, bot))
                    {
                        var result = await handler.HandleAsync(message, bot);

                        return(Ok(result.message));
                    }
                }
                //todo: separate interface for Task
                //handle bot requests
                foreach (var handler in updatesHandler)
                {
                    if (handler.CanHandle(message, bot))
                    {
                        handler.HandleAsync(message, bot);
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Log(NLog.LogLevel.Error, ex, "Error during bot process");
                return(Ok(ex.ToString()));
            }
            return(Ok("ok"));
        }
Exemple #25
0
        public override async Task handleAsync(IIncomingMessage message, IVityaBot bot, Match match)
        {
            var peerId = match.Groups[1].Value;
            var memeId = match.Groups[2].Value;
            var text   = match.Groups[3].Value;

            if (text == "random")
            {
                await bot.processRandomBestMemeAsync(new Models.UpdateMessage()
                {
                    @object = new Models.UpdateMessageData()
                    {
                        peer_id = int.Parse(peerId)
                    }
                });
            }
            else
            {
                await bot.processMemeByIdAsync(peerId, memeId, text);
            }
        }
Exemple #26
0
 public bool CanHandle(IIncomingMessage message, IVityaBot bot)
 {
     return(message.MessageType == "confirmation");
 }
Exemple #27
0
 public bool CanHandle(IIncomingMessage message, IVityaBot bot)
 {
     return(bot.canProcess(message.from_id) &&
            _messageTypes.Contains(message.MessageType.ToLowerInvariant()) &&
            !string.IsNullOrWhiteSpace(message.text));
 }
Exemple #28
0
 public override async Task handleAsync(IIncomingMessage message, IVityaBot bot, Match match)
 {
     //do nothing
 }
Exemple #29
0
 public bool CanHandle(IIncomingMessage message, IVityaBot bot)
 {
     return(message.attachments.Any(x => x.type == "audio"));
 }
Exemple #30
0
 public override async Task handleAsync(IIncomingMessage message, IVityaBot bot, Match match)
 {
     await bot.processMemeAsync(message, match.Groups[1].Value);
 }