Exemplo n.º 1
0
        public static void Main(string[] args)
        {
            Console.WriteLine("Reading INI File");
            string cfgpath;

            if (args.Length > 1)
            {
                cfgpath = args [1];
            }
            else
            {
                cfgpath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "/.config/cardbot.ini";
            }
            cfgpath = System.IO.Path.GetFullPath(cfgpath);
            Console.WriteLine("Trying to read from " + cfgpath);
            Configuration.ReadConfig(cfgpath);

            Console.WriteLine("Connecting to Matrix");
            Client = new MatrixClient(Configuration.Config ["matrix"] ["host"]);

            Console.WriteLine("Connected. Logging in");
            Client.LoginWithPassword(Configuration.Config ["matrix"] ["user"], Configuration.Config ["matrix"] ["pass"]);
            Console.WriteLine("Logged in OK");
            Console.WriteLine("Joining Rooms:");
            foreach (string roomid in Configuration.Config["matrix"] ["rooms"].Split(','))
            {
                MatrixRoom room = Client.GetRoomByAlias(roomid);
                if (room == null)
                {
                    room = Client.JoinRoom(roomid);
                    if (room != null)
                    {
                        Console.WriteLine("\tJoined " + roomid);
                        room.OnMessage += Room_OnMessage;
                    }
                    else
                    {
                        Console.WriteLine("\tCouldn't find " + roomid);
                    }
                }
                else
                {
                    room.OnMessage += Room_OnMessage;
                }
            }
            Console.WriteLine("Done!");
            //Find commands
            foreach (MethodInfo method in typeof(Commands).GetMethods(BindingFlags.Static | BindingFlags.Public))
            {
                BotCmd cmd = method.GetCustomAttribute <BotCmd> ();
                if (cmd != null)
                {
                    Cmds.Add(cmd, method);
                }
            }

            LobbyManager            = new LobbyManager(Client);
            Console.CancelKeyPress += (object sender, ConsoleCancelEventArgs e) => {
                LobbyManager.Dispose();
                Client.Dispose();
            };
        }
Exemplo n.º 2
0
        public static void Main(string[] args)
        {
            Console.WriteLine("Reading INI File");
            string cfgpath;

            if (args.Length > 1)
            {
                cfgpath = args [1];
            }
            else
            {
                cfgpath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "/.config/mpddj.ini";
            }
            cfgpath = System.IO.Path.GetFullPath(cfgpath);
            Console.WriteLine("Trying to read from " + cfgpath);
            Configuration.ReadConfig(cfgpath);


            Console.WriteLine("Connecting to MPD");
            MPCClient = new MPC(Configuration.Config ["mpc"] ["host"], Configuration.Config ["mpc"] ["port"]);
            MPCClient.Status();


            Console.WriteLine("Connecting to Matrix");
            Client = new MatrixClient(Configuration.Config ["matrix"] ["host"]);

            Console.WriteLine("Connected. Logging in");
            Client.LoginWithPassword(Configuration.Config ["matrix"] ["user"], Configuration.Config ["matrix"] ["pass"]);
            Console.WriteLine("Logged in OK");
            Console.WriteLine("Joining Rooms:");
            foreach (string roomid in Configuration.Config["matrix"] ["rooms"].Split(','))
            {
                MatrixRoom room = Client.GetRoomByAlias(roomid);
                if (room == null)
                {
                    room = Client.JoinRoom(roomid);
                    if (room != null)
                    {
                        Console.WriteLine("\tJoined " + roomid);
                        room.OnMessage += Room_OnMessage;
                    }
                    else
                    {
                        Console.WriteLine("\tCouldn't find " + roomid);
                    }
                }
                else
                {
                    room.OnMessage += Room_OnMessage;
                }
            }
            Console.WriteLine("Done!");
            //Find commands
            foreach (MethodInfo method in typeof(Commands).GetMethods(BindingFlags.Static | BindingFlags.Public))
            {
                BotCmd cmd = method.GetCustomAttribute <BotCmd> ();
                if (cmd != null)
                {
                    Cmds.Add(cmd, method);
                }
                if (method.GetCustomAttribute <BotFallback>() != null)
                {
                    if (fallback != null)
                    {
                        Console.WriteLine("WARN: You have more than one fallback command set, overwriting previous");
                    }
                    fallback = method;
                }
            }
        }
Exemplo n.º 3
0
        public MatrixBot(
            string cmdprefix,
            string host,
            string user,
            string pass,
            string[] rooms,
            bool AutoAcceptInvite = false,
            StatusOptions statusOptions = null
            )
        {
            prefix = cmdprefix;
            Client = new MatrixClient (host);
            Client.AddStateEventType ("uk.half-shot.status", typeof(HSStatusEvent));

            this.AutoAcceptInvite = AutoAcceptInvite;

            Client.OnInvite += (roomid, joined) => {
                if (AutoAcceptInvite) {
                    MatrixRoom room = Client.JoinRoom (roomid);
                    if (room != null) {
                        room.OnMessage += Room_OnMessage;
                    }

                }
            };

            Client.LoginWithPassword (user, pass);

            MatrixRoom[] existingRooms = Client.GetAllRooms ();
            foreach (string roomid in rooms) {
                MatrixRoom room = roomid.StartsWith ("#") ? Client.GetRoomByAlias (roomid) : Client.GetRoom (roomid);
                if (existingRooms.Contains (room)) {
                    continue;
                }
                if (room == null) {
                    room = Client.JoinRoom (roomid);
                    if (room != null) {
                        Console.WriteLine ("\tJoined " + roomid);
                    } else {
                        Console.WriteLine ("\tCouldn't find " + roomid);
                    }
                }
            }

            existingRooms = Client.GetAllRooms ();
            foreach (MatrixRoom room in existingRooms) {
                room.OnMessage += Room_OnMessage;
            }

            //Find commands
            foreach (MethodInfo method in typeof(T).GetMethods(BindingFlags.Static|BindingFlags.Public)) {
                BotCmd cmd = method.GetCustomAttribute<BotCmd> ();
                if (cmd != null) {
                    Cmds.Add (cmd, method);
                }
                if (method.GetCustomAttribute<BotFallback> () != null) {
                    if (fallback != null) {
                        Console.WriteLine ("WARN: You have more than one fallback command set, overwriting previous");
                    }
                    fallback = method;
                }
            }

            if (statusOptions != null && statusOptions.StartAutomatically) {
                //Start Status Thread.
                statusOpts = statusOptions;
                StartStatusReporting(statusOptions.IntervalMinutes);

            }
        }