oh yeah woo yeah
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

137 lines
4.7 KiB

5 years ago
using Discord;
using Discord.Commands;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Kehyeedra3.Commands
{
[Group]
public class HelpModule : ModuleBase ///////////////////////////////////////////////
{
private CommandService _service;
public HelpModule(CommandService service) //Create a constructor for the commandservice dependency
{
_service = service;
}
/*[Command("commands"), Alias("coomands")]
public async Task HelpAsync()
{
string debug = null;
string prefix = Configuration.Load().Prefix;
var builder = new EmbedBuilder()
{
Color = new Color(114, 137, 218),
Description = "These are the commands you can use"
};
foreach (var module in _service.Modules)
{
string description = null;
debug += $"{module.Name}\n";
foreach (var cmd in module.Commands)
{
var result = await cmd.CheckPreconditionsAsync(Context);
if (result.IsSuccess)
description += $"{prefix}{cmd.Aliases.First()}\n";
debug += $"{prefix}{cmd.Aliases.First()}\n";
}
if (!string.IsNullOrWhiteSpace(description))
{
builder.AddField(x =>
{
x.Name = module.Name;
x.Value = description;
x.IsInline = false;
});
}
}
await ReplyAsync(debug);
}
[Command("command"), Alias("coomand")]
public async Task HelpAsync(string command)
{
var result = _service.Search(Context, command);
if (!result.IsSuccess)
{
await ReplyAsync($"Sorry, I couldn't find a command with the name **{command}**.");
return;
}
string prefix = Configuration.Load().Prefix;
var builder = new EmbedBuilder()
{
Color = new Color(0, 255, 0),
Description = $"Here are some commands like **{command}**"
};
foreach (var match in result.Commands)
{
var cmd = match.Command;
builder.AddField(x =>
{
x.Name = string.Join(", ", cmd.Aliases);
x.Value = $"Parameters: {string.Join(", ", cmd.Parameters.Select(p => p.Name))}\n" +
$"Remarks: {cmd.Remarks}";
x.IsInline = false;
});
}
await ReplyAsync("", false, builder.Build());
}*/
[Command("help"), Summary("Shows this thing")]
public async Task HelpCommand([Remainder] string command = null)
{
if(command == null)
{
EmbedBuilder embed = new EmbedBuilder();
embed.AddField("AIMLbot", "Mention me to talk with me (don't expect intelligence)");
foreach (var module in Bot._cmds.Modules)
{
StringBuilder coommands = new StringBuilder("");
foreach(var cmd in module.Commands)
{
var result = await cmd.CheckPreconditionsAsync(Context, Bot._dmap).ConfigureAwait(false);
if (result.IsSuccess)
{
coommands.Append(cmd.Name);
if (cmd != module.Commands.LastOrDefault())
coommands.Append(", ");
}
}
embed.AddField(module.Name, coommands.ToString());
}
await ReplyAsync("Here's a list of commands search for the command to find what it be and what it do", false, embed.Build());
}
else
{
var res = Bot._cmds.Search(command);
if (res.IsSuccess)
{
EmbedBuilder embed = new EmbedBuilder();
var coomand = res.Commands.FirstOrDefault();
embed.AddField(coomand.Command.Name ?? "N/A", string.IsNullOrEmpty(coomand.Command.Summary) ? "No Summary Found" : coomand.Command.Summary);
await ReplyAsync($"Here's a command like **{command}**", false, embed.Build());
}
else
{
await ReplyAsync("Check your input retard");
}
}
}
}
}