示例#1
0
        void Room_OnMessage(MatrixRoom room, MatrixSDK.Structures.MatrixEvent evt)
        {
            if (evt.age > 3000) {
                return; // Too old
            }

            string msg = ((MatrixMRoomMessage)evt.content).body;

            if (msg.ToUpper().StartsWith (prefix.ToUpper())) {
                msg = msg.Substring (prefix.Length+1);
                string[] parts = msg.Split (' ');
                string cmd = parts [0].ToLower ();
                try
                {
                    MethodInfo method = Cmds.First(x => {
                        return (x.Key.CMD == cmd) || ( x.Key.BeginsWith.Any( y => cmd.StartsWith(y) ));
                    }).Value;

                    Task task = new Task (() => {
                        method.Invoke (null, new object[3]{ msg, evt.sender, room });
                    });
                    task.Start ();
                }
                catch(InvalidOperationException){
                    Task task = new Task (() => {
                        fallback.Invoke (null, new object[3]{ msg, evt.sender, room });
                    });
                    task.Start ();
                }
                catch(Exception e){
                    Console.Error.WriteLine ("Problem with one of the commands");
                    Console.Error.WriteLine (e);
                }
            }
        }
示例#2
0
        static void Room_OnMessage(MatrixRoom room, MatrixSDK.Structures.MatrixEvent evt)
        {
            if (evt.age > 3000)
            {
                return;                 // Too old
            }

            string msg = ((MatrixMRoomMessage)evt.content).body;

            if (msg.StartsWith("!cardbot"))
            {
                msg = msg.Substring(9);
                string[] parts = msg.Split(' ');
                string   cmd   = parts [0].ToLower();
                try
                {
                    MethodInfo method = Cmds.First(x => {
                        return((x.Key.CMD == cmd) || (x.Key.BeginsWith.Any(y => cmd.StartsWith(y))));
                    }).Value;

                    Task task = new Task(() => {
                        method.Invoke(null, new object[3] {
                            msg, evt.sender, room
                        });
                    });
                    task.Start();
                }
                catch (InvalidOperationException) {
                    //Command not found
                }
                catch (Exception e) {
                    Console.Error.WriteLine("Problem with one of the commands");
                    Console.Error.WriteLine(e);
                }
            }
            else if (msg == "botsnack")
            {
                room.SendMessage("Nom nom nom");
            }
        }