public async Task StartScriptAsync() { IUserMessage response; EmbedBuilder initialBuilder; initialBuilder = EmbedHelper.GetDefaultEmbed(Context); initialBuilder.AddField(":robot: Starting idle script", "Please wait..."); response = await ReplyAsync("", embed : initialBuilder.Build()); try { EmbedBuilder embed; Stopwatch watch; watch = new Stopwatch(); watch.Start(); embed = EmbedHelper.GetDefaultEmbed(Context); _screenshotProvider.Start(); watch.Stop(); embed.AddField(":white_check_mark: Success", "The idle script has been started."); embed.AddField(":alarm_clock: Time taken to complete action", watch.Elapsed.ToString("mm'm 'ss's 'fff'ms'")); await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); } catch (Exception e) { await response.ModifyAsync(msg => msg = ErrorHandler.GetDefaultErrorMessageEmbed(e, msg, Context.Message)); } }
public async Task GetMemoryInformationAsync() { IUserMessage response; EmbedBuilder initialBuilder; initialBuilder = EmbedHelper.GetDefaultEmbed(Context); initialBuilder.AddField(":mag: Gathering data", "Please wait..."); response = await ReplyAsync("", embed : initialBuilder.Build()); try { EmbedBuilder embed; Dictionary <string, string> ram; embed = EmbedHelper.GetDefaultEmbed(Context); ram = MemoryProvider.GetRamUsage(); foreach (var kvp in ram) { embed.AddField(kvp.Key, kvp.Value); } await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); } catch (Exception e) { await response.ModifyAsync(msg => msg = ErrorHandler.GetDefaultErrorMessageEmbed(e, msg, Context.Message)); } }
public async Task GetVersionAsync() { IUserMessage response; EmbedBuilder initialBuilder; initialBuilder = EmbedHelper.GetDefaultEmbed(Context); initialBuilder.AddField(":robot: Starting bot script", "Please wait..."); response = await ReplyAsync("", embed : initialBuilder.Build()); try { EmbedBuilder embed; Assembly assembly; FileVersionInfo fileVersionInfo; string version; embed = EmbedHelper.GetDefaultEmbed(Context); assembly = Assembly.GetExecutingAssembly(); fileVersionInfo = FileVersionInfo.GetVersionInfo(assembly.Location); version = fileVersionInfo.FileVersion; embed.AddField(":cheese: Session Bot Version", version); await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); } catch (Exception e) { await response.ModifyAsync(msg => msg = ErrorHandler.GetDefaultErrorMessageEmbed(e, msg, Context.Message)); } }
public async Task StartGameAsync() { IUserMessage response; EmbedBuilder initialBuilder; initialBuilder = EmbedHelper.GetDefaultEmbed(Context); initialBuilder.AddField(":video_game: Starting game", "Please wait..."); response = await ReplyAsync("", embed : initialBuilder.Build()); try { EmbedBuilder embed; ProcessProvider provider; provider = new ProcessProvider(); embed = EmbedHelper.GetDefaultEmbed(Context); StartGTAProcess(); embed.AddField("Game started", "The GTA 5 game has been started successfully."); await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); } catch (Exception e) { await response.ModifyAsync(msg => msg = ErrorHandler.GetDefaultErrorMessageEmbed(e, msg, Context.Message)); } }
public async Task ShutdownAsync() { IUserMessage response; EmbedBuilder initialBuilder; initialBuilder = EmbedHelper.GetDefaultEmbed(Context); initialBuilder.AddField(":video_game: Exiting game", "Please wait..."); response = await ReplyAsync("", embed : initialBuilder.Build()); try { EmbedBuilder embed; ProcessProvider provider; provider = new ProcessProvider(); embed = EmbedHelper.GetDefaultEmbed(Context); embed.AddField(":robot: Stopping bot process", "Please wait..."); _screenshotProvider.Stop(); embed.AddField(":white_check_mark: Success", "The bot process has been stopped."); // Forcibly kill the GTA process. KillGTAProcess(); embed.AddField("Process Killed", "The GTA 5 process is no longer running."); await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); } catch (Exception e) { await response.ModifyAsync(msg => msg = ErrorHandler.GetDefaultErrorMessageEmbed(e, msg, Context.Message)); } }
public async Task SwitchToDesktopAsync() { IUserMessage response; EmbedBuilder initialBuilder; initialBuilder = EmbedHelper.GetDefaultEmbed(Context); initialBuilder.AddField(":desktop: Switching to desktop", "Please wait..."); response = await ReplyAsync("", embed : initialBuilder.Build()); try { ScreenCaptureProvider provider; IntPtr windowHandle; EmbedBuilder embed; const int WM_COMMAND = 0x111; const int MIN_ALL = 419; embed = EmbedHelper.GetDefaultEmbed(Context); provider = new ScreenCaptureProvider(_config); windowHandle = User32.GetDesktopWindow(); IntPtr lHwnd = User32.FindWindow("Shell_TrayWnd", null); User32.SendMessage(lHwnd, WM_COMMAND, (IntPtr)MIN_ALL, IntPtr.Zero); User32.SetForegroundWindow(windowHandle); embed.AddField(":white_check_mark: Success", "The desktop should now be in focus."); await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); } catch (Exception e) { await response.ModifyAsync(msg => msg = ErrorHandler.GetDefaultErrorMessageEmbed(e, msg, Context.Message)); } }
public async Task GetNetworkStatsAsync() { IUserMessage response; EmbedBuilder initialBuilder; initialBuilder = EmbedHelper.GetDefaultEmbed(Context); initialBuilder.AddField(":computer: Gathering Network Statistics", "Please wait..."); response = await ReplyAsync("", embed : initialBuilder.Build()); try { EmbedBuilder embed; IPGlobalProperties properties; UdpStatistics udpStat = null; embed = EmbedHelper.GetDefaultEmbed(Context); properties = IPGlobalProperties.GetIPGlobalProperties(); udpStat = properties.GetUdpIPv4Statistics(); embed.AddField("Datagrams Received", udpStat.DatagramsReceived.ToString("#,##0"), inline: true); embed.AddField("Datagrams Sent", udpStat.DatagramsSent.ToString("#,##0"), inline: true); embed.AddField("Datagrams Discarded", udpStat.IncomingDatagramsDiscarded.ToString("#,##0")); embed.AddField("Datagrams With Errors", udpStat.IncomingDatagramsWithErrors.ToString("#,##0")); embed.AddField("UDP Listeners", udpStat.UdpListeners.ToString("#,##0")); await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); } catch (Exception e) { await response.ModifyAsync(msg => msg = ErrorHandler.GetDefaultErrorMessageEmbed(e, msg, Context.Message)); } }
public async Task FindNewSessionAsync() { IUserMessage response; EmbedBuilder initialBuilder; initialBuilder = EmbedHelper.GetDefaultEmbed(Context); initialBuilder.AddField(":mag: Finding new session", "Please wait..."); response = await ReplyAsync("", embed : initialBuilder.Build()); try { EmbedBuilder embed; IntPtr windowHandle; ProcessProvider provider; embed = EmbedHelper.GetDefaultEmbed(Context); provider = new ProcessProvider(); embed.AddField(":robot: Stopping bot process", "Please wait..."); _screenshotProvider.Stop(); embed.AddField(":white_check_mark: Success", "The bot process has been stopped."); embed.AddField(":mag: Finding new session", "Please wait..."); await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); windowHandle = provider.GetGrandTheftAutoProcessPointer(); User32.GetWindowThreadProcessId(windowHandle, out uint processID); if (processID != 0) { Process process; process = Process.GetProcessById((int)processID); process.Suspend(); Thread.Sleep(8000); process.Resume(); } embed.AddField(":white_check_mark: Success", "A new session has been found."); embed.AddField(":robot: Starting bot script", "Please wait"); await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); _screenshotProvider.Start(); embed.AddField(":white_check_mark: Success", "Bot script started "); await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); } catch (Exception e) { await response.ModifyAsync(msg => msg = ErrorHandler.GetDefaultErrorMessageEmbed(e, msg, Context.Message)); } }
public async Task RestartGameAsync() { IUserMessage response; EmbedBuilder initialBuilder; initialBuilder = EmbedHelper.GetDefaultEmbed(Context); initialBuilder.AddField(":video_game: Restarting game", "Please wait..."); response = await ReplyAsync("", embed : initialBuilder.Build()); try { EmbedBuilder embed; embed = EmbedHelper.GetDefaultEmbed(Context); embed.AddField(":robot: Stopping idle script", "Please wait..."); _screenshotProvider.Stop(); embed.AddField(":white_check_mark: Success", "The bot process has been stopped."); embed.AddField("Stopping GTA", "Please wait..."); await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); KillGTAProcess(); embed = EmbedHelper.GetDefaultEmbed(Context); embed.AddField("Starting GTA", "Please wait..."); if (_config.IsSteamGame) { // This is really nasty but is the best we can do without any information as to whether the game // synchronization in Steam has been completed. Wait for 20 seconds until Steam is able to sync // the game data and hope that the task has completed in time. Thread.Sleep(20000); } await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); StartGTAProcess(); embed = EmbedHelper.GetDefaultEmbed(Context); embed.AddField("Game started", "The GTA 5 game has been restarted successfully."); await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); } catch (Exception e) { await response.ModifyAsync(msg => msg = ErrorHandler.GetDefaultErrorMessageEmbed(e, msg, Context.Message)); } }
public async Task RestartSystem() { IUserMessage response; EmbedBuilder initialBuilder; initialBuilder = EmbedHelper.GetDefaultEmbed(Context); initialBuilder.AddField(":zzz: Preparing to restart", "Please wait..."); response = await ReplyAsync("", embed : initialBuilder.Build()); using (var proc = Process.Start("shutdown.exe", "/r /t 0")) { // Nothing to do here as the process will be disposed of. } }
public async Task GetCpuInformationAsync() { IUserMessage response; EmbedBuilder initialBuilder; initialBuilder = EmbedHelper.GetDefaultEmbed(Context); initialBuilder.AddField(":mag: Gathering data", "Please wait..."); response = await ReplyAsync("", embed : initialBuilder.Build()); try { EmbedBuilder embed; string cores; string uptime; string processor; Dictionary <string, string> temps; Dictionary <string, string> usage; embed = EmbedHelper.GetDefaultEmbed(Context); cores = CpuProvider.GetCoreCount(); uptime = CpuProvider.GetUpTime(); processor = CpuProvider.GetProcessorInformation(); temps = CpuProvider.GetCpuTemperatures(); usage = CpuProvider.GetCpuLoad(); embed.AddField("Processor", processor); embed.AddField("Processor Cores", cores); embed.AddField("System Up Time", uptime); foreach (var kvp in usage) { embed.AddField(kvp.Key, kvp.Value); } foreach (var kvp in temps) { embed.AddField(kvp.Key, kvp.Value); } await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); } catch (Exception e) { await response.ModifyAsync(msg => msg = ErrorHandler.GetDefaultErrorMessageEmbed(e, msg, Context.Message)); } }
public async Task EnterGTAOnlineAsync() { IUserMessage response; EmbedBuilder initialBuilder; ProcessProvider provider; initialBuilder = EmbedHelper.GetDefaultEmbed(Context); initialBuilder.AddField(":keyboard: Pressing buttons", "Please wait..."); provider = new ProcessProvider(); response = await ReplyAsync("", embed : initialBuilder.Build()); Console.WriteLine(AppDomain.CurrentDomain.BaseDirectory); try { EmbedBuilder embed; string path; Process process; ProcessStartInfo startInfo; IntPtr windowHandle; path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources"); embed = EmbedHelper.GetDefaultEmbed(Context); startInfo = new ProcessStartInfo(); startInfo.FileName = $"{path}\\enterOnline.exe"; process = new Process(); process.StartInfo = startInfo; windowHandle = provider.GetGrandTheftAutoProcessPointer(); User32.SetForegroundWindow(windowHandle); process.Start(); embed.AddField("Buttons Pressed", "IDK what to put here, things are happening I guess?"); await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); } catch (Exception e) { await response.ModifyAsync(msg => msg = ErrorHandler.GetDefaultErrorMessageEmbed(e, msg, Context.Message)); } }
public async Task GetLatencyAsync() { IUserMessage response; EmbedBuilder initialBuilder; initialBuilder = EmbedHelper.GetDefaultEmbed(Context); initialBuilder.AddField(":earth_asia: Calculating latency", "Please wait..."); response = await ReplyAsync("", embed : initialBuilder.Build()); try { EmbedBuilder embed; embed = EmbedHelper.GetDefaultEmbed(Context); embed.AddField(":earth_asia: Latency", $"{Context.Client.Latency}ms"); await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); } catch (Exception e) { await response.ModifyAsync(msg => msg = ErrorHandler.GetDefaultErrorMessageEmbed(e, msg, Context.Message)); } }
public async Task BringWindowToForegroundAsync() { IUserMessage response; EmbedBuilder initialBuilder; initialBuilder = EmbedHelper.GetDefaultEmbed(Context); initialBuilder.AddField("Bringing GTA Process to foreground", "Please wait..."); response = await ReplyAsync("", embed : initialBuilder.Build()); try { IntPtr windowHandle; ProcessProvider provider; EmbedBuilder embed; Stopwatch watch; watch = new Stopwatch(); watch.Start(); embed = EmbedHelper.GetDefaultEmbed(Context); provider = new ProcessProvider(); windowHandle = provider.GetGrandTheftAutoProcessPointer(); User32.SetForegroundWindow(windowHandle); watch.Stop(); embed.AddField(":white_check_mark: Success", "GTA Process is in foreground."); embed.AddField(":alarm_clock: Time taken to complete action", watch.Elapsed.ToString("mm'm 'ss's 'fff'ms'")); await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); } catch (Exception e) { await response.ModifyAsync(msg => msg = ErrorHandler.GetDefaultErrorMessageEmbed(e, msg, Context.Message)); } }
public async Task PressEnterAsync() { IUserMessage response; EmbedBuilder initialBuilder; initialBuilder = EmbedHelper.GetDefaultEmbed(Context); initialBuilder.AddField(":keyboard: Pressing buttons", "Please wait..."); response = await ReplyAsync("", embed : initialBuilder.Build()); Console.WriteLine(AppDomain.CurrentDomain.BaseDirectory); try { EmbedBuilder embed; string path; Process process; ProcessStartInfo startInfo; path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources"); embed = EmbedHelper.GetDefaultEmbed(Context); startInfo = new ProcessStartInfo(); startInfo.FileName = $"{path}\\enter.exe"; process = new Process(); process.StartInfo = startInfo; process.Start(); embed.AddField("Buttons Pressed", "IDK what to put here, I literally just pressed 1 key."); await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); } catch (Exception e) { await response.ModifyAsync(msg => msg = ErrorHandler.GetDefaultErrorMessageEmbed(e, msg, Context.Message)); } }
public async Task KillErrorReporterAsync() { IUserMessage response; EmbedBuilder initialBuilder; initialBuilder = EmbedHelper.GetDefaultEmbed(Context); initialBuilder.AddField(":gun: Killing Error Reporter", "Please wait..."); response = await ReplyAsync("", embed : initialBuilder.Build()); try { Process errorReporter; ProcessProvider provider; EmbedBuilder embed; embed = EmbedHelper.GetDefaultEmbed(Context); provider = new ProcessProvider(); errorReporter = provider.GetWindowsErrorReporterProcess(); if (errorReporter != null) { errorReporter.Kill(); } else { EventLogLogger.LogWarning("Attempted to kill the Windows error reporter process but the process could not be found."); } embed.AddField(":white_check_mark: Success", "The Windows error reporter process has been killed."); await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); } catch (Exception e) { await response.ModifyAsync(msg => msg = ErrorHandler.GetDefaultErrorMessageEmbed(e, msg, Context.Message)); } }
public async Task GrabPlayerList() { IUserMessage response; EmbedBuilder initialBuilder; initialBuilder = EmbedHelper.GetDefaultEmbed(Context); initialBuilder.AddField(":camera_with_flash: Capturing Player List", "Please wait..."); response = await ReplyAsync("", embed : initialBuilder.Build()); try { Byte[] imageBytes; ScreenCaptureProvider provider; EmbedBuilder embed; ISupportedImageFormat format; embed = EmbedHelper.GetDefaultEmbed(Context); provider = new ScreenCaptureProvider(_config); format = new JpegFormat { Quality = 50 }; imageBytes = provider.MergePlayerList(); using (var stream = new MemoryStream(imageBytes)) { using (MemoryStream outStream = new MemoryStream()) { // Initialize the ImageFactory using the overload to preserve EXIF metadata. using (ImageFactory imageFactory = new ImageFactory(preserveExifData: true)) { imageFactory.Load(stream) .Format(format) .Save(outStream); } TimeSpan span; string dateString; span = (DateTime.Now - File.GetLastWriteTimeUtc(Common.PlayerListFirstScreenshotPath)); dateString = ""; if (span.Days > 0) { dateString += $"{span.Days} days, "; } if (span.Hours > 0) { dateString += $"{span.Hours} hours, "; } if (span.Minutes > 0) { dateString += $"{span.Minutes} minutes, "; } dateString += $"{span.Seconds} seconds"; embed.AddField(":pencil: Current Player List", $"List age: {dateString} old"); await Context.Channel.SendFileAsync(outStream, "players.jpg"); } } await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); } catch (Exception e) { await response.ModifyAsync(msg => msg = ErrorHandler.GetDefaultErrorMessageEmbed(e, msg, Context.Message)); } }
public async Task GetScreenStatusAsync() { IUserMessage response; EmbedBuilder initialBuilder; initialBuilder = EmbedHelper.GetDefaultEmbed(Context); initialBuilder.AddField(":camera_with_flash: Uploading screenshot", "Please wait..."); response = await ReplyAsync("", embed : initialBuilder.Build()); try { ScreenCaptureProvider provider; IntPtr windowHandle; EmbedBuilder embed; Stopwatch watch; Stopwatch uploadWatch; ISupportedImageFormat format; TextLayer watermark; Byte[] imageBytes; watch = new Stopwatch(); uploadWatch = new Stopwatch(); watch.Start(); embed = EmbedHelper.GetDefaultEmbed(Context); provider = new ScreenCaptureProvider(_config); // Get the desktop window rather than the GTA window, if there is an application // blocking the GTA window then taking a screenshot of the GTA window won't really // show any problems. Getting the desktop window will grab the currently active desktop. windowHandle = User32.GetDesktopWindow(); format = new JpegFormat { Quality = 50 }; imageBytes = provider.CaptureWindow(windowHandle); watermark = BuildWatermark(windowHandle); using (var stream = new MemoryStream(imageBytes)) { using (MemoryStream outStream = new MemoryStream()) { // Initialize the ImageFactory using the overload to preserve EXIF metadata. using (ImageFactory imageFactory = new ImageFactory(preserveExifData: true)) { imageFactory.Load(stream) .Format(format) .Watermark(watermark) .Save(outStream); } watch.Stop(); embed.AddField(":camera_with_flash: Success", "Current status of the host machine is shown below."); embed.AddField(":alarm_clock: Action time", watch.Elapsed.ToShortForm(), inline: true); uploadWatch.Start(); await Context.Channel.SendFileAsync(outStream, "window.jpg"); } } uploadWatch.Stop(); embed.AddField(":alarm_clock: Upload time", uploadWatch.Elapsed.ToShortForm(), inline: true); await response.ModifyAsync(msg => { msg.Embed = embed.Build(); msg.Content = ""; }); } catch (Exception e) { await response.ModifyAsync(msg => msg = ErrorHandler.GetDefaultErrorMessageEmbed(e, msg, Context.Message)); } }