예제 #1
0
        public override void Call(Message m, TgGroup g, TgUser u, string[] args, bool dev)
        {
            var usage = "Usage: /notify <label> (<option> [true|false])";

            usage += "\r\nOptions:";
            usage += "\r\n- state (server online status)";
            usage += "\r\n- count (server user count)";
            usage += "\r\n- name (player name samples)";

            switch (args.Length)
            {
            default:
                Respond(m.Chat.Id, usage);
                break;

            case 2:
                var srv = g.GetServer(args[1]);
                if (srv != null)
                {
                    Respond(m.Chat.Id, GetSrvNotifications(srv), ParseMode.Html);
                }
                else
                {
                    Respond(m.Chat.Id, "Server label not found.\r\n\r\n" + usage);
                }
                break;

            case 4:
                var srv2 = g.GetServer(args[1]);
                if (srv2 != null)
                {
                    var argl = args[3].ToLower() == "true";
                    switch (args[2].ToLower())
                    {
                    case "state":
                        srv2.NotifyServer = argl;
                        break;

                    case "count":
                        srv2.NotifyCount = argl;
                        break;

                    case "name":
                        srv2.NotifyNames = argl;
                        break;

                    default:
                        Respond(m.Chat.Id, "Unknown setting.\r\n\r\n" + usage);
                        return;
                    }
                    Respond(m.Chat.Id, GetSrvNotifications(srv2), ParseMode.Html);
                }
                else
                {
                    Respond(m.Chat.Id, "Server label not found.\r\n\r\n" + usage);
                }
                break;
            }
        }
예제 #2
0
        public override void Call(Message m, TgGroup g, TgUser u, string[] args, bool dev)
        {
            var use = "Usage: /add [label] [address] (port default 25565)";

            try
            {
                if (g.Servers.Count > 2 && !dev)
                {
                    throw new Exception("Only up to 3 servers are allowed per group.");
                }
                if (args.Length < 3 || args.Length > 4)
                {
                    throw new Exception("Invalid arguments.");
                }
                Utils.VerifyLabel(args[1]);
                if (g.GetServer(args[1]) != null)
                {
                    throw new Exception("Label name already in use.");
                }

                var addr = args[2];
                var port = 25565;
                // try to parse port if given
                if (args.Length == 4 && !int.TryParse(args[3], out port))
                {
                    throw new Exception("Port is not a number.");
                }

                try
                {
                    Utils.VerifyAddress(addr, port);
                }
                catch (Exception e)
                {
                    // bypass ip check if user is developer
                    if (dev)
                    {
                        Respond(m.Chat.Id, "Verify Warning: " + e.Message);
                    }
                    else
                    {
                        throw e;
                    }
                }

                // add & respond
                g.AddServer(args[1], addr, port);
                Respond(m.Chat.Id, "Server added to watchlist: [" + EventBase.Wrap(Types.Formatting.Html, args[1]) + "]",
                        ParseMode.Html);
            }
            catch (Exception ex)
            {
                Respond(m.Chat.Id, "Error adding server: " + ex.Message + "\r\n" + use);
            }
        }