示例#1
0
        public static void Main(string[] args)
        {
            app = new Infra.App();

            InMemoryDatabase.InitData();

            BotCommandFactory.CreateCommands(app);

            BotCallbackFactory.CreateCallbacks(app);

            SessionManager.Create(app);

            Init();
        }
示例#2
0
        static async Task Run()
        {
            var Bot = new Api("171139565:AAGZDEsv0gw_6LDsAHZR9wDCwMDTgfWzAIE");

            var me = await Bot.GetMe();

            Console.WriteLine("Hello my name is {0}", me.Username);

            var offset = 0;

            while (true)
            {
                var updates = await Bot.GetUpdates(offset);

                foreach (var update in updates)
                {
                    if (update.Message.Type == MessageType.TextMessage) // && previous.Where(j=> j.Equals(update.Message.From.Username)).Count() < 3)
                    {
                        await Bot.SendChatAction(update.Message.Chat.Id, ChatAction.Typing);

                        await Task.Delay(2000);

                        var match = Regex.Match(update.Message.Text + " ", @"(?'command'^\/.*?\s)?(?'action'.*?\s)?(?'pattern'.*)");

                        if (match.Groups.Count > 1)
                        {
                            BotCommandFactory factory = new BotCommandFactory();
                            var command = factory.CreateCommand(match.Groups["command"].Value.Trim());
                            if (command == null)
                            {
                                await Bot.SendTextMessage(update.Message.Chat.Id, "...idiota.. devi aver scritto qualche cazzata..");
                            }
                            else
                            {
                                command.BotApi = Bot;
                                await command.Process(update.Message, match);
                            }
                        }
                    }
                    offset = update.Id + 1;
                }


                await Task.Delay(3000);
            }
        }
示例#3
0
        private static async void OnMessage(object sender, MessageEventArgs messageEventArgs)
        {
            var message = messageEventArgs.Message;

            if (message == null || message.Type != MessageType.TextMessage)
            {
                return;
            }

            Console.WriteLine($"Comando recebido: @{message.Text}");

            await bot.SendChatActionAsync(message.Chat.Id, ChatAction.Typing);

            var commandText = message.Text.Split(' ').First();

            var command = BotCommandFactory.Get(commandText, bot);

            command.Execute(message);
        }