예제 #1
0
        public bool HandleEvent(string payload)
        {
            var jsonObj = JObject.Parse(payload);

            ConsoleMessenger.PrintError("Could not parse Unknown Type: " + jsonObj["type"].ToString());
            return(true);
        }
예제 #2
0
        //THIS IS A RECURSIVE FUNCTION
        public static WebSocketSharp.WebSocket GetSocket()
        {
            if (CurrentAttempt <= ConnectionAttempts)
            {
                if (ConnectedSocket != null)
                {
                    CurrentAttempt = 0;
                    return(ConnectedSocket);
                }
                else
                {
                    CurrentAttempt++;
                    ConsoleMessenger.PrintError("Trying to reconnect");
                    Connect();
                    return(GetSocket());
                }
            }
            ConsoleMessenger.PrintError("Connection To Slack Failed\nPress ENTER to exit or type \"retry\" to try again");
            var input = Console.ReadLine();

            if (input == "retry")
            {
                CurrentAttempt = 0;
                GetSocket();
            }
            Environment.Exit(0);
            return(null);
        }
예제 #3
0
        private void StartSpecificGame(User targetPlayer, string requestingPlayerId, string requestingPlayerName, string channel)
        {
            Channel       ChannelInfo    = APICalls.GetChannelInfo(channel);
            List <string> UsersInChannel = ChannelInfo.members.ToList();

            if (UsersInChannel.Contains(targetPlayer.id))
            {
                GameRound newRound = new GameRound {
                    PlayerOne      = requestingPlayerId,
                    PlayerTwo      = targetPlayer.id,
                    Channel        = channel,
                    PlayerSpecific = true
                };
                Sender.SendMessage(new RTMMessageOut {
                    channel = channel,
                    text    = $"{requestingPlayerName} wants to fist bump {targetPlayer.name}"
                });
                ConsoleMessenger.PrintSuccess($"New game started by {requestingPlayerId}");
                CurrentGames.Add(newRound);
            }
            else
            {
                Sender.SendMessage(new RTMMessageOut {
                    channel = channel,
                    text    = $"{targetPlayer.name} is not this channel"
                });
            }
        }
예제 #4
0
 private void StartOpenGame(GameRound newRound, string playerName)
 {
     CurrentGames.Add(newRound);
     Sender.SendMessage(new RTMMessageOut {
         channel = newRound.Channel,
         text    = $"{playerName} is looking for a fistbump! \nType \"!FistBump\" to bump {playerName} back!"
     });
     ConsoleMessenger.PrintSuccess($"New game started by {playerName}");
 }
예제 #5
0
        public static void JoinChannel(string channelName)
        {
            APICaller AC      = new APICaller();
            var       content = new FormUrlEncodedContent(new[] {
                new KeyValuePair <string, string>("token", SlackConnector.AuthToken),
                new KeyValuePair <string, string>("name", channelName)
            });

            AC.CallAPI(content, "https://slack.com/api/channels.join");
            ConsoleMessenger.PrintSuccess("Joined Channel: " + channelName);
        }
예제 #6
0
 /// <summary>
 /// Returns a user if found, else it returns null
 /// </summary>
 /// <param name="NameOrId"></param>
 /// <returns>a User</returns>
 public static User FindUser(string NameOrId)
 {
     foreach (var u in GetUsers())
     {
         if (u.name.Equals(NameOrId) || u.id.Equals(NameOrId))
         {
             return(u);
         }
     }
     ConsoleMessenger.PrintError($"{NameOrId} not found");
     return(null);
 }
예제 #7
0
        public static void BacktestBinanceTrades()
        {
            var msg1 = new ConsoleMessenger();

            /*var symbols = new string[] { "NEOBTC", "NEOETH", "TRXBTC", "TRXETH", "XMRBTC", "XMRETH", "XRPBTC", "XRPETH",
             *  "ZECBTC", "ZECETH", "ZRXBTC", "ZRXETH" , "ASTBTC", "ASTETH", "LTCBNB", "LTCBTC", "LTCETH", "LTCUSDT"
             * };*/

            var symbols = new string[] { "ADABTC", "ADAETH", "ADXBNB", "ADXBTC", "ADXETH", "AEBNB", "AEBTC", "AEETH", "AIONBNB", "AIONBTC", "AIONETH", "AMBBNB", "AMBBTC", "AMBETH",
                                         "APPCBNB", "APPCBTC", "APPCETH", "ARKBTC", "ARKETH", "ARNBTC", "ARNETH", "ASTBTC", "ASTETH", "BATBNB", "BATBTC", "BATETH",
                                         "BCCBNB", "BCCBTC", "BCCETH", "BCCUSDT", "BCDBTC", "BCDETH", "BCPTBNB", "BCPTBTC", "BCPTETH", "BLZBNB", "BLZBTC", "BLZETH",
                                         "BNBBTC", "BNBETH", "BNBUSDT", "BNTBTC", "BNTETH", "BQXBTC", "BQXETH", "BRDBNB", "BRDBTC", "BRDETH", "BTCUSDT", "BTGBTC", "BTGETH", "BTSBNB", "BTSBTC", "BTSETH",
                                         "CDTBTC", "CDTETH", "CHATBTC", "CHATETH", "CMTBNB", "CMTBTC", "CMTETH", "CNDBNB", "CNDBTC", "CNDETH", "CTRBTC", "CTRETH", "DASHBTC", "DASHETH",
                                         "DGDBTC", "DGDETH", "DLTBNB", "DLTBTC", "DLTETH", "DNTBTC", "DNTETH", "EDOBTC", "EDOETH", "ELFBTC", "ELFETH", "ENGBTC", "ENGETH", "ENJBTC", "ENJETH",
                                         "EOSBTC", "EOSETH", "ETCBTC", "ETCETH", "ETHBTC", "ETHUSDT", "EVXBTC", "EVXETH", "FUELBTC", "FUELETH", "FUNBTC", "FUNETH", "GASBTC",
                                         "GTOBNB", "GTOBTC", "GTOETH", "GVTBTC", "GVTETH", "GXSBTC", "GXSETH", "HSRBTC", "HSRETH", "ICNBTC", "ICNETH", "ICXBNB", "ICXBTC", "ICXETH",
                                         "INSBTC", "INSETH", "IOSTBTC", "IOSTETH", "IOTABNB", "IOTABTC", "IOTAETH", "KMDBTC", "KMDETH", "KNCBTC", "KNCETH", "LENDBTC", "LENDETH",
                                         "LINKBTC", "LINKETH", "LRCBTC", "LRCETH", "LSKBNB", "LSKBTC", "LSKETH", "LTCBNB", "LTCBTC", "LTCETH", "LTCUSDT", "LUNBTC", "LUNETH",
                                         "MANABTC", "MANAETH", "MCOBNB", "MCOBTC", "MCOETH", "MDABTC", "MDAETH", "MODBTC", "MODETH", "MTHBTC", "MTHETH", "MTLBTC", "MTLETH",
                                         "NANOBNB", "NANOBTC", "NANOETH", "NAVBNB", "NAVBTC", "NAVETH", "NEBLBNB", "NEBLBTC", "NEBLETH", "NEOBNB", "NEOBTC", "NEOETH", "NEOUSDT",
                                         "NULSBNB", "NULSBTC", "NULSETH", "OAXBTC", "OAXETH", "OMGBTC", "OMGETH", "OSTBNB", "OSTBTC", "OSTETH", "PIVXBNB", "PIVXBTC", "PIVXETH",
                                         "POEBTC", "POEETH", "POWRBNB", "POWRBTC", "POWRETH", "PPTBTC", "PPTETH", "QSPBNB", "QSPBTC", "QSPETH", "QTUMBTC", "QTUMETH", "RCNBNB", "RCNBTC", "RCNETH",
                                         "RDNBNB", "RDNBTC", "RDNETH", "REQBTC", "REQETH", "RLCBNB", "RLCBTC", "RLCETH", "SALTBTC", "SALTETH", "SNGLSBTC", "SNGLSETH", "SNMBTC", "SNMETH",
                                         "SNTBTC", "SNTETH", "STEEMBNB", "STEEMBTC", "STEEMETH", "STORJBTC", "STORJETH", "STRATBTC", "STRATETH", "SUBBTC", "SUBETH",
                                         "TNBBTC", "TNBETH", "TNTBTC", "TNTETH", "TRIGBNB", "TRIGBTC", "TRIGETH", "TRXBTC", "TRXETH", "VENBNB", "VENBTC", "VENETH", "VIABNB", "VIABTC", "VIAETH",
                                         "VIBBTC", "VIBEBTC", "VIBEETH", "VIBETH", "WABIBNB", "WABIBTC", "WABIETH", "WAVESBNB", "WAVESBTC", "WAVESETH", "WINGSBTC", "WINGSETH",
                                         "WTCBNB", "WTCBTC", "WTCETH", "XLMBNB", "XLMBTC", "XLMETH", "XMRBTC", "XMRETH", "XRPBTC", "XRPETH", "XVGBTC", "XVGETH", "XZCBNB", "XZCBTC", "XZCETH",
                                         "YOYOBNB", "YOYOBTC", "YOYOETH", "ZECBTC", "ZECETH", "ZRXBTC", "ZRXETH" };

            foreach (string s in symbols)
            {
                var b1 = new BinanceTradeMACD(binance, s, msg1);
                b1.StartTrade(0.1M, 1, tradeLive: false, backTestOnly: true);
                var b5 = new BinanceTradeMACD(binance, s, msg1);
                b5.StartTrade(0.1M, 5, tradeLive: false, backTestOnly: true);
                var b15 = new BinanceTradeMACD(binance, s, msg1);
                b15.StartTrade(0.1M, 15, tradeLive: false, backTestOnly: true);
                var b30 = new BinanceTradeMACD(binance, s, msg1);
                b30.StartTrade(0.1M, 30, tradeLive: false, backTestOnly: true);
                var b60 = new BinanceTradeMACD(binance, s, msg1);
                b60.StartTrade(0.1M, 60, tradeLive: false, backTestOnly: true);
            }
        }
예제 #8
0
        static void Main(string[] args)
        {
            var messager       = new ConsoleMessenger();
            var inputProcess   = new ConsoleProcessUserInput(messager);
            var consoleHandler = new ConsoleBoardHandler()
            {
                Board = new Board {
                    SizeX = 100, SizeY = 20
                },
                Hero = new Hero()
                {
                    PositionX = 10, PositionY = 10, Symbol = "+"
                },
                Bombs = new List <Bomb>()
                {
                    new Bomb()
                    {
                        PositionX = 12, PositionY = 15, Symbol = "x"
                    },
                    new Bomb()
                    {
                        PositionX = 50, PositionY = 15, Symbol = "x"
                    },
                    new Bomb()
                    {
                        PositionX = 56, PositionY = 11, Symbol = "x"
                    },
                    new Bomb()
                    {
                        PositionX = 34, PositionY = 5, Symbol = "x"
                    },
                    new Bomb()
                    {
                        PositionX = 8, PositionY = 19, Symbol = "x"
                    }
                }
            };

            new AppLogic(messager, consoleHandler, inputProcess).Run();
        }
예제 #9
0
        public static void Load()
        {
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

            config.AppSettings.Settings.Clear();
            try {
                var lines = File.ReadLines(".env");
                foreach (var line in lines)
                {
                    var data = line.Split('=');
                    config.AppSettings.Settings.Add(data[0], data[1]);
                    config.Save(ConfigurationSaveMode.Modified, true);
                    ConfigurationManager.RefreshSection("appSettings");
                }
            }
            catch (FileNotFoundException) {
                ConsoleMessenger.PrintError("Could not locate .env file");
            }
            catch (PathTooLongException) {
                ConsoleMessenger.PrintError("File path too long");
            }
            ConsoleMessenger.PrintSuccess(".env loaded");
        }
예제 #10
0
 private void FinishGame(GameRound round, string requestingPlayerName = "", string requestingPlayerId = "")
 {
     if (!round.PlayerSpecific)
     {
         //finish open game
         round.PlayerTwo = requestingPlayerId;
         ArchiveGame(round);
         Sender.SendMessage(new RTMMessageOut {
             channel = round.Channel,
             text    = $"{requestingPlayerName} Fist bumped {Users.FindUser(round.PlayerOne).name} back!"
         });
         ConsoleMessenger.PrintSuccess("Game Finished");
     }
     else
     {
         //finish specific game
         ArchiveGame(round);
         Sender.SendMessage(new RTMMessageOut {
             channel = round.Channel,
             text    = $"{Users.FindUser(round.PlayerTwo).name} Fist bumped {Users.FindUser(round.PlayerOne).name} back!"
         });
     }
 }
예제 #11
0
 static void OnClose(object sender, EventArgs e)
 {
     ConsoleMessenger.PrintWarning("Shutting Down");
     SlackConnector.GetSocket().CloseAsync();
 }
예제 #12
0
 private static void OnOpen(object sender, EventArgs e)
 {
     ConsoleMessenger.PrintSuccess("Connected to slack websocket");
 }