예제 #1
0
        public SlackBot(SlackApi api, WorldCupApi wcApi, string channelId, string token)
        {
            _api             = api;
            _wcApi           = wcApi;
            _channelId       = channelId;
            _token           = token;
            _start           = DateTime.Now;
            _previousMatches = new List <WorldCupMatch>();

            _commands = new Dictionary <string, Action>()
            {
                { "!prono", () => { _api.SendMessage(channelId, "https://fr.pronocontest.com/contest/3087-apollocup?page=1#/ranking/general", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup"); } },
                { "!slither", () => { _api.SendMessage(channelId, "http://slither.io/", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup"); } },
                { "!alexis", () => { _api.SendMessage(channelId, "Monnnnnneeeetttt", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup"); } },
                { "!yaya", () => { _api.SendMessage(channelId, "Zoom zoom", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup"); } },
                { "!uptime", () => { _api.SendMessage(channelId, $"Bot démarré depuis le {_start.ToString("dd/MM/yy HH:mm:ss")}", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup"); } },
                { "!today", () => {
                      var matches = _wcApi.GetTodayMatches().Result.OrderBy(m => DateTime.Parse(m.DateTime)).ToList();

                      foreach (var match in matches)
                      {
                          PostMatchStateChange(match);
                      }
                  } },
                { "!tomorrow", () => {
                      var matches = _wcApi.GetTomorrowMatches().Result.OrderBy(m => DateTime.Parse(m.DateTime)).ToList();

                      foreach (var match in matches)
                      {
                          PostMatchStateChange(match);
                      }
                  } },
            };
        }
예제 #2
0
        static void Main(string[] args)
        {
            var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());

            XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config"));

            Console.ForegroundColor = ConsoleColor.White;

            try
            {
                string webhook   = null;
                string token     = null;
                string channelId = _channelId;
                if (args != null)
                {
                    if (args.Length > 0)
                    {
                        webhook         = args[0];
                        _enableSlackApi = true;
                    }
                    if (args.Length > 1)
                    {
                        token = args[1];
                    }
                    if (args.Length > 2)
                    {
                        channelId = args[2];
                    }
                }

                _log.Info("Start");


                _wcApi    = new WorldCupApi();
                _slackApi = new SlackApi(webhook);

                _slackBot = new SlackBot(_slackApi, _wcApi, channelId, token, _log, () => _running = false);
                _slackBot.Start();

#if DEBUG
                string command = Constants.CMD_YESTERDAY;
                _slackBot.ExecuteCommand(command);
#endif

                while (_running)
                {
                    Thread.Sleep(1000);
                }

                _slackBot.Stop();

                _log.Info("End");
            }
            catch (Exception e) {
                _log.Error(e);
            }
        }
예제 #3
0
        static void Main(string[] args)
        {
            try
            {
                string webhook   = null;
                string token     = null;
                string channelId = _channelId;
                if (args != null)
                {
                    if (args.Length > 0)
                    {
                        webhook         = args[0];
                        _enableSlackApi = true;
                    }
                    if (args.Length > 1)
                    {
                        token = args[1];
                    }
                    if (args.Length > 2)
                    {
                        channelId = args[2];
                    }
                }

                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.WriteLine("Start");
                Console.ForegroundColor = ConsoleColor.White;

                _wcApi    = new WorldCupApi();
                _slackApi = new SlackApi(webhook);

                _slackBot = new SlackBot(_slackApi, _wcApi, channelId, token);
                _slackBot.Start();

                Console.ReadKey();

                _slackBot.Stop();

                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.WriteLine("End");
            }
            catch (Exception e) {
                log.Error(e);
            }
        }
예제 #4
0
        public SlackBot(SlackApi api, WorldCupApi wcApi, string channelId, string token, ILog logger, Action onClose)
        {
            _logger          = logger;
            _api             = api;
            _wcApi           = wcApi;
            _channelId       = channelId;
            _token           = token;
            _start           = DateTime.Now;
            _previousMatches = new List <WorldCupMatch>();
            _onClose         = onClose;

            _cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);

            _commands = new Dictionary <string, Action>()
            {
                { Constants.CMD_PRONO, () => { _api.SendMessage(channelId, "https://fr.pronocontest.com/contest/3087-apollocup?page=1#/ranking/general", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger); } },
                { Constants.CMD_SLITHER, () => { _api.SendMessage(channelId, "http://slither.io/", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger); } },
                { Constants.CMD_ALEXIS, () => { _api.SendMessage(channelId, "https://image.ibb.co/gZCMnJ/money.jpg", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger); } },
                { Constants.CMD_YAYA, () => { _api.SendMessage(channelId, "https://media.giphy.com/media/3oKGz8CjdhZx1OCDV6/source.gif", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger); } },
                { Constants.CMD_UPTIME, () => { _api.SendMessage(channelId, $"Bot démarré depuis le {_start.ToString("dd/MM/yy HH:mm:ss")}", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger); } },
                { Constants.CMD_ROLL, () => { _api.SendMessage(channelId, "https://www.youtube.com/watch?v=dQw4w9WgXcQ", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger); } },
                { Constants.CMD_PUDDY, () => { _api.SendMessage(channelId, "https://www.youtube.com/watch?v=KyucG76N9PY", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger); } },
                { Constants.CMD_HORSE, () => { _api.SendMessage(channelId, "https://www.youtube.com/watch?v=OWFBqiUgspg", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger); } },
                { Constants.CMD_POIREAU, () => { _api.SendMessage(channelId, "https://www.youtube.com/watch?v=jdL-K9EgSwE", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger); } },
                { Constants.CMD_STARS, () => { _api.SendMessage(channelId, "https://www.youtube.com/watch?v=cl4ySbLvdEM", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger); } },
                { Constants.CMD_CHICKEN, () => { _api.SendMessage(channelId, "https://www.youtube.com/watch?v=rA9Ood3-peg", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger); } },
                { Constants.CMD_TAUPE, () => { _api.SendMessage(channelId, "https://www.youtube.com/watch?v=24pUKRQt7fk", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger); } },
                { Constants.CMD_FROG, () => { _api.SendMessage(channelId, "https://www.youtube.com/watch?v=k85mRPqvMbE", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger); } },
                { Constants.CMD_GITHUB, () => { _api.SendMessage(channelId, "Vous pouvez contribuer ici : https://github.com/ApolloSSC/ApolloWorldCup", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger); } },
                { Constants.CMD_SCRIBE, () => { _api.SendMessage(channelId, "Vous savez, moi je ne crois pas qu’il y ait de bonne ou de mauvaise situation. Moi, si je devais résumer ma vie aujourd’hui avec vous, je dirais que c’est d’abord des rencontres. Des gens qui m’ont tendu la main, peut-être à un moment où je ne pouvais pas, où j’étais seul chez moi. Et c’est assez curieux de se dire que les hasards, les rencontres forgent une destinée... Parce que quand on a le goût de la chose, quand on a le goût de la chose bien faite, le beau geste, parfois on ne trouve pas l’interlocuteur en face je dirais, le miroir qui vous aide à avancer. Alors ça n’est pas mon cas, comme je disais là, puisque moi au contraire, j’ai pu : et je dis merci à la vie, je lui dis merci, je chante la vie, je danse la vie... je ne suis qu’amour ! Et finalement, quand beaucoup de gens aujourd’hui me disent « Mais comment fais-tu pour avoir cette humanité ? », et bien je leur réponds très simplement, je leur dis que c’est ce goût de l’amour ce goût donc qui m’a poussé aujourd’hui à entreprendre une construction mécanique, mais demain qui sait ? Peut-être simplement à me mettre au service de la communauté, à faire le don, le don de soi... ", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger); } },
                { Constants.CMD_STOP, () => {
                      _api.SendMessage(channelId, $"Demande d'arrêt du bot...", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger);
                      _onClose?.Invoke();
                  } },
                { Constants.CMD_TODAY, () => {
                      _api.SendMessage(channelId, $"Récupération des matchs de la journée...", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger);
                      var matches = _wcApi.GetTodayMatches().Result.OrderBy(m => DateTime.Parse(m.DateTime)).ToList();

                      PostMatchStateChange(matches);
                  } },
                { Constants.CMD_TOMORROW, () => {
                      _api.SendMessage(channelId, $"Récupération des matchs de demain...", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger);
                      var matches = _wcApi.GetTomorrowMatches().Result.OrderBy(m => DateTime.Parse(m.DateTime)).ToList();

                      PostMatchStateChange(matches);
                  } },
                { Constants.CMD_YESTERDAY, () => {
                      _api.SendMessage(channelId, $"Récupération des matchs d'hier...", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger);
                      var matches = _wcApi.GetYesterdayMatches().Result.OrderBy(m => DateTime.Parse(m.DateTime)).ToList();

                      PostMatchStateChange(matches);
                  } },
                { Constants.CMD_FUTURES, () => {
                      _api.SendMessage(channelId, $"Récupération des prochains matchs...", Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger);
                      var matches = _wcApi.GetFuturesMatches().Result.OrderBy(m => DateTime.Parse(m.DateTime)).ToList();

                      PostMatchStateChange(matches);
                  } },
                { Constants.CMD_TEAMS, () => {
                      var teams = _wcApi.GetRemainingTeams().Result;

                      PostOnTeamStat(teams);
                  } },
                { Constants.CMD_LIST, () => {
                      _api.SendMessage(channelId, string.Join(", ", _commands.Keys), Slack.Webhooks.Emoji.Ghost, "ApolloWorldCup", _logger);
                  } },
            };
        }