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); } } }
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"); } }