public override void OnCommand(BotShell bot, CommandArgs e) { // make !status display various stats of the bot and the current state of all slaves and their friendslists, also include links to relog etc switch (e.Command) { case "shutdown": bot.SendOrganizationMessage(bot.ColorHighlight + "System »» Shutting Down"); bot.SendPrivateMessage(e.SenderID, bot.ColorHighlight + "System »» Shutting Down", AoLib.Net.PacketQueue.Priority.Urgent, true); bot.SendPrivateChannelMessage(bot.ColorHighlight + "System »» Shutting Down"); System.Threading.Thread.Sleep(1000); bot.Shutdown(); break; case "restart": if (!bot.CoreConnected) { bot.SendReply(e, "Restart is not available"); return; } bot.SendOrganizationMessage(bot.ColorHighlight + "System »» Rebooting"); bot.SendPrivateMessage(e.SenderID, bot.ColorHighlight + "System »» Rebooting", AoLib.Net.PacketQueue.Priority.Urgent, true); bot.SendPrivateChannelMessage(bot.ColorHighlight + "System »» Rebooting"); System.Threading.Thread.Sleep(1000); bot.Restart(); break; case "core": this.OnCoreCommand(bot, e); break; case "core shutdown": case "core start": case "core restart": if (e.Args.Length < 1 || !e.Args[0].Contains("@")) { bot.SendReply(e, "Usage: " + e.Command + " [bot@dimension]"); return; } if (!bot.Master) { bot.SendReply(e, "This bot is not a master bot"); return; } CoreCommand command; if (e.Command == "core shutdown") { command = CoreCommand.Shutdown; } else if (e.Command == "core start") { command = CoreCommand.Start; } else { command = CoreCommand.Restart; } MessageResult result = bot.SendCoreMessage(this.InternalName, e.Args[0].ToLower(), command); switch (result) { case MessageResult.Success: bot.SendReply(e, "Your command has been relayed to the core and will be executed shortly"); break; case MessageResult.InvalidTarget: bot.SendReply(e, "The target you specified appeared to be invalid"); break; case MessageResult.NotConnected: bot.SendReply(e, "Unable to connect to the core in order to issue this command"); break; default: bot.SendReply(e, "An unknown error prevented your command from being executed"); break; } break; case "core clean": bot.Clean(); bot.SendReply(e, "Memory cleaning routines have been executed"); break; } }