using System;
using System.Diagnostics;
using Discord.WebSocket;
using DiscordLibCommands = Discord.Commands;
using DiscordLib = Discord;
using PluginManager.Interfaces;
using PluginManager.Others.Permissions;
using PluginManager.Others;
namespace DiscordBot.Discord.Commands
{
internal class Restart : DBCommand
{
///
/// Command name
///
public string Command => "restart";
///
/// Command Description
///
public string Description => "Restart the bot";
///
/// Command usage
///
public string Usage => "restart [-p | -c | -args | -cmd] ";
///
/// Check if the command can be used />
///
public bool canUseDM => false;
///
/// Check if the command can be used in a server
///
public bool canUseServer => true;
///
/// Check if the command require administrator to be executed
///
public bool requireAdmin => false;
///
/// The main body of the command
///
/// The command context
/// The command message
/// The discord bot client
/// True if the message was sent from a DM channel, false otherwise
public async void Execute(DiscordLibCommands.SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
{
if (!DiscordPermissions.hasPermission(message.Author as SocketGuildUser, DiscordLib.GuildPermission.Administrator)) return;
var args = Functions.GetArguments(message);
var OS = Functions.GetOperatinSystem();
if (args.Count == 0)
{
switch (OS)
{
case PluginManager.Others.OperatingSystem.WINDOWS:
Process.Start("./DiscordBot.exe");
break;
case PluginManager.Others.OperatingSystem.LINUX:
case PluginManager.Others.OperatingSystem.MAC_OS:
Process.Start("./DiscordBot");
break;
default:
return;
}
return;
}
switch (args[0])
{
case "-p":
case "-poweroff":
case "-c":
case "-close":
Environment.Exit(0);
break;
case "-cmd":
case "-args":
string cmd = "--args";
if (args.Count > 1)
for (int i = 1; i < args.Count; i++)
cmd += $" {args[i]}";
switch (OS)
{
case PluginManager.Others.OperatingSystem.WINDOWS:
Functions.WriteLogFile("Restarting the bot with the following arguments: \"" + cmd + "\"");
Process.Start("./DiscordBot.exe", cmd);
break;
case PluginManager.Others.OperatingSystem.LINUX:
case PluginManager.Others.OperatingSystem.MAC_OS:
Process.Start("./DiscordBot", cmd);
break;
default:
return;
}
Environment.Exit(0);
break;
default:
await context.Channel.SendMessageAsync("Invalid argument. Use `help restart` to see the usage.");
break;
}
}
}
}