Exemple #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("XenfbotDN (C) XAYRGA 2020");

            // Param check
            if (args.Length > 0)
            {
                var ptg = "xenfbot@preboot";
                Console.WriteLine("parameter check.....");
            }

            Localization.init();

            /// Load Config File
            Helpers.writeOut(tag, "Initializing configuration.");
            Config.init("config.ini");

            /// Load telegram API
            Telegram.SetAPIKey(Config.getValue("TGAPIKey"));
            {
                var tries = 0;
                var me    = Telegram.getMe(); // Synchronous call for result.
                while (me == null)
                {
                    tries++;
                    Thread.Sleep(1200);
                    Helpers.warn("Failed. Trying again");
                    me = Telegram.getMe();
                    if (tries > 3)
                    {
                        Helpers.warn("Invalid telegram API key or cannot connect to tgapi.");
                        Environment.Exit(-1);
                    }
                }
                botUsername = me.username;   // set bot username
                botName     = me.first_name; // set bot name
                Console.WriteLine($"Hello, I'm {botName} under the handle {botUsername}");
            }

            /// Load SQL
            var initValue = SQL.Init(Config.getValue("MySQLHost"), Config.getValue("MySQLUser"), Config.getValue("MySQLPassword"), Config.getValue("MySQLDatabase"));

            Console.WriteLine(Config.getValue("MySQLHost"), Config.getValue("MySQLUser"), Config.getValue("MySQLPassword"), Config.getValue("MySQLDatabase"));
            Helpers.writeOut(tag, "Testing MySQL Interface");
            {
                var ok    = SQL.Query($"SHOW FUNCTION STATUS");
                var tries = 0;
                while (ok == null)
                {
                    tries++;
                    ok = SQL.Query("SHOW FUNCTION STATUS");
                    if (tries > 3)
                    {
                        Helpers.warn("Cannot connect to MySQL server.");
                        Console.WriteLine(SQL.getLastError());
                        Environment.Exit(-1);
                    }
                    Thread.Sleep(1200);
                }
            }
            Console.WriteLine("OK!");

            /// Setup Lua State
            LuaState = new Lua();
            LuaState.LoadCLRPackage(); // Initialize CLR for lua state
            LStateLibaries.File.Setup(LuaState);
            LStateLibaries.LuaString.Setup(LuaState);
            LuaState.DoString("dofile('xen/preinit.lua')");
            LuaState.DoString("import('XenfbotDN','XenfbotDN')"); // Import xenfbot namespace
            LuaState.DoString("print(Telegram)");
            LuaState.DoString("print(GroupConfiguration)");
            LuaState.DoString("dofile('xen/init.lua')");
            //LuaState.DoString("dofile('xen/hooktest.lua')");
            callHook = (LuaFunction)LuaState["modhook.Call"];


            botRoot.Enter();
        }