예제 #1
0
        private async Task Action_Stop(SocketMessage message, string command)
        {
            string[] args = command.Split(' ');
            if (args.Length == 2 && int.TryParse(args[1], out int i))
            {
                await Application.Current.Dispatcher.Invoke(async() =>
                {
                    MainWindow WindowsGSM = (MainWindow)Application.Current.MainWindow;
                    if (WindowsGSM.IsServerExist(args[1]))
                    {
                        MainWindow.ServerStatus serverStatus = WindowsGSM.GetServerStatus(args[1]);
                        if (serverStatus == MainWindow.ServerStatus.Started)
                        {
                            bool started = await WindowsGSM.StopServerById(args[1], message.Author.Id.ToString(), message.Author.Username);
                            await message.Channel.SendMessageAsync($"Server (ID: {args[1]}) {(started ? "Stopped" : "Fail to Stop")}.");
                        }
                        else if (serverStatus == MainWindow.ServerStatus.Stopped)
                        {
                            await message.Channel.SendMessageAsync($"Server (ID: {args[1]}) already Stopped.");
                        }
                        else
                        {
                            await message.Channel.SendMessageAsync($"Server (ID: {args[1]}) currently in {serverStatus.ToString()} state, not able to stop.");
                        }

                        await SendServerEmbed(message, Color.Orange, args[1], WindowsGSM.GetServerStatus(args[1]).ToString(), WindowsGSM.GetServerName(args[1]));
                    }
                    else
                    {
                        await message.Channel.SendMessageAsync($"Server (ID: {args[1]}) does not exists.");
                    }
                });
            }
            else
            {
                await message.Channel.SendMessageAsync($"Usage: {Configs.GetBotPrefix()}wgsm stop `<SERVERID>`");
            }
        }
예제 #2
0
 private async Task Action_Update(SocketMessage message, string command)
 {
     string[] args = command.Split(' ');
     if (args.Length >= 2 && int.TryParse(args[1], out int i))
     {
         await Application.Current.Dispatcher.Invoke(async() =>
         {
             MainWindow WindowsGSM = (MainWindow)Application.Current.MainWindow;
             if (WindowsGSM.IsServerExist(args[1]))
             {
                 MainWindow.ServerStatus serverStatus = WindowsGSM.GetServerStatus(args[1]);
                 if (serverStatus == MainWindow.ServerStatus.Stopped)
                 {
                     await message.Channel.SendMessageAsync($"Server (ID: {args[1]}) Update started - this may take some time.");
                     bool updated = await WindowsGSM.UpdateServerById(args[1], message.Author.Id.ToString(), message.Author.Username);
                     await message.Channel.SendMessageAsync($"Server (ID: {args[1]}) {(updated ? "Updated" : "Fail to Update")}.");
                 }
                 else if (serverStatus == MainWindow.ServerStatus.Updating)
                 {
                     await message.Channel.SendMessageAsync($"Server (ID: {args[1]}) already Updating.");
                 }
                 else
                 {
                     await message.Channel.SendMessageAsync($"Server (ID: {args[1]}) currently in {serverStatus} state, not able to update.");
                 }
             }
             else
             {
                 await message.Channel.SendMessageAsync($"Server (ID: {args[1]}) does not exists.");
             }
         });
     }
     else
     {
         await message.Channel.SendMessageAsync($"Usage: {Configs.GetBotPrefix()}wgsm update `<SERVERID>`");
     }
 }
예제 #3
0
 public Bot()
 {
     Configs.CreateConfigs();
 }
예제 #4
0
        private async Task CommandReceivedAsync(SocketMessage message)
        {
            // The bot should never respond to itself.
            if (message.Author.Id == _client.CurrentUser.Id)
            {
                return;
            }

            // Return if the author is not admin
            List <string> adminIds = Configs.GetBotAdminIds();

            if (!adminIds.Contains(message.Author.Id.ToString()))
            {
                return;
            }

            // Return if the message is not WindowsGSM prefix
            var prefix     = Configs.GetBotPrefix();
            var commandLen = prefix.Length + 4;

            if (message.Content.Length < commandLen)
            {
                return;
            }
            if (message.Content.Length == commandLen && message.Content == $"{prefix}wgsm")
            {
                await SendHelpEmbed(message);

                return;
            }

            if (message.Content.Length >= commandLen + 1 && message.Content.Substring(0, commandLen + 1) == $"{prefix}wgsm ")
            {
                // Remote Actions
                string[] args   = message.Content.Split(new[] { ' ' }, 2);
                string[] splits = args[1].Split(' ');

                switch (splits[0])
                {
                case "start":
                case "stop":
                case "restart":
                case "send":
                case "list":
                case "check":
                case "backup":
                case "update":
                case "stats":
                    List <string> serverIds = Configs.GetServerIdsByAdminId(message.Author.Id.ToString());
                    if (splits[0] == "check")
                    {
                        await message.Channel.SendMessageAsync(
                            serverIds.Contains("0")?
                            "You have full permission.\nCommands: `check`, `list`, `start`, `stop`, `restart`, `send`, `backup`, `update`, `stats`" :
                            $"You have permission on servers (`{string.Join(",", serverIds.ToArray())}`)\nCommands: `check`, `start`, `stop`, `restart`, `send`, `backup`, `update`, `stats`");

                        break;
                    }

                    if (splits[0] == "list" && serverIds.Contains("0"))
                    {
                        await Action_List(message);
                    }
                    else if (splits[0] != "list" && (serverIds.Contains("0") || serverIds.Contains(splits[1])))
                    {
                        switch (splits[0])
                        {
                        case "start": await Action_Start(message, args[1]); break;

                        case "stop": await Action_Stop(message, args[1]); break;

                        case "restart": await Action_Restart(message, args[1]); break;

                        case "send": await Action_SendCommand(message, args[1]); break;

                        case "backup": await Action_Backup(message, args[1]); break;

                        case "update": await Action_Update(message, args[1]); break;

                        case "stats": await Action_Stats(message); break;
                        }
                    }
                    else
                    {
                        await message.Channel.SendMessageAsync("You don't have permission to access.");
                    }
                    break;

                default: await SendHelpEmbed(message); break;
                }
            }
        }