- Renamed Prefix to prefix

- Updated some command string keys which were using command name to use method names now
This commit is contained in:
Kwoth
2022-01-02 16:52:39 +01:00
parent 2edda76218
commit ca9fa1b0ac
18 changed files with 91 additions and 93 deletions

View File

@@ -26,15 +26,13 @@ namespace NadekoBot.Tests
var culture = new CultureInfo("en-US"); var culture = new CultureInfo("en-US");
var isSuccess = true; var isSuccess = true;
foreach (var entry in CommandNameLoadHelper.LoadCommandNames(aliasesPath)) foreach (var (methodName, _) in CommandNameLoadHelper.LoadAliases(aliasesPath))
{ {
var commandName = entry.Value[0]; var cmdStrings = strings.GetCommandStrings(culture.Name, methodName);
var cmdStrings = strings.GetCommandStrings(culture.Name, commandName);
if (cmdStrings is null) if (cmdStrings is null)
{ {
isSuccess = false; isSuccess = false;
TestContext.Out.WriteLine($"{commandName} doesn't exist in commands.en-US.yml"); TestContext.Out.WriteLine($"{methodName} doesn't exist in commands.en-US.yml");
} }
} }
@@ -56,7 +54,7 @@ namespace NadekoBot.Tests
[Test] [Test]
public void AllCommandMethodsHaveNames() public void AllCommandMethodsHaveNames()
{ {
var allAliases = CommandNameLoadHelper.LoadCommandNames( var allAliases = CommandNameLoadHelper.LoadAliases(
aliasesPath); aliasesPath);
var methodNames = GetCommandMethodNames(); var methodNames = GetCommandMethodNames();
@@ -77,7 +75,7 @@ namespace NadekoBot.Tests
[Test] [Test]
public void NoObsoleteAliases() public void NoObsoleteAliases()
{ {
var allAliases = CommandNameLoadHelper.LoadCommandNames(aliasesPath); var allAliases = CommandNameLoadHelper.LoadAliases(aliasesPath);
var methodNames = GetCommandMethodNames() var methodNames = GetCommandMethodNames()
.ToHashSet(); .ToHashSet();
@@ -95,7 +93,10 @@ namespace NadekoBot.Tests
} }
} }
Assert.IsTrue(isSuccess); if(isSuccess)
Assert.Pass();
else
Assert.Warn("There are some unused entries in data/aliases.yml");
} }
// [Test] // [Test]

View File

@@ -6,9 +6,9 @@ public static class CommandNameLoadHelper
{ {
private static readonly IDeserializer _deserializer = new Deserializer(); private static readonly IDeserializer _deserializer = new Deserializer();
public static Lazy<Dictionary<string, string[]>> LazyCommandAliases = new(() => LoadCommandNames()); public static Lazy<Dictionary<string, string[]>> LazyCommandAliases = new(() => LoadAliases());
public static Dictionary<string, string[]> LoadCommandNames(string aliasesFilePath = "data/aliases.yml") public static Dictionary<string, string[]> LoadAliases(string aliasesFilePath = "data/aliases.yml")
{ {
var text = File.ReadAllText(aliasesFilePath); var text = File.ReadAllText(aliasesFilePath);
return _deserializer.Deserialize<Dictionary<string, string[]>>(text); return _deserializer.Deserialize<Dictionary<string, string[]>>(text);

View File

@@ -16,7 +16,7 @@ public abstract class NadekoModule : ModuleBase
public ILocalization Localization { get; set; } public ILocalization Localization { get; set; }
public IEmbedBuilderService _eb { get; set; } public IEmbedBuilderService _eb { get; set; }
public string Prefix protected string prefix
=> CmdHandler.GetPrefix(ctx.Guild); => CmdHandler.GetPrefix(ctx.Guild);
protected ICommandContext ctx protected ICommandContext ctx

View File

@@ -50,7 +50,7 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.boostmsg_new); await ReplyConfirmLocalizedAsync(strs.boostmsg_new);
if (!sendBoostEnabled) if (!sendBoostEnabled)
await ReplyPendingLocalizedAsync(strs.boostmsg_enable($"`{Prefix}boost`")); await ReplyPendingLocalizedAsync(strs.boostmsg_enable($"`{prefix}boost`"));
} }
[Cmd] [Cmd]
@@ -99,7 +99,7 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.greetmsg_new); await ReplyConfirmLocalizedAsync(strs.greetmsg_new);
if (!sendGreetEnabled) if (!sendGreetEnabled)
await ReplyPendingLocalizedAsync(strs.greetmsg_enable($"`{Prefix}greet`")); await ReplyPendingLocalizedAsync(strs.greetmsg_enable($"`{prefix}greet`"));
} }
[Cmd] [Cmd]
@@ -131,7 +131,7 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.greetdmmsg_new); await ReplyConfirmLocalizedAsync(strs.greetdmmsg_new);
if (!sendGreetEnabled) if (!sendGreetEnabled)
await ReplyPendingLocalizedAsync(strs.greetdmmsg_enable($"`{Prefix}greetdm`")); await ReplyPendingLocalizedAsync(strs.greetdmmsg_enable($"`{prefix}greetdm`"));
} }
[Cmd] [Cmd]
@@ -163,7 +163,7 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.byemsg_new); await ReplyConfirmLocalizedAsync(strs.byemsg_new);
if (!sendByeEnabled) if (!sendByeEnabled)
await ReplyPendingLocalizedAsync(strs.byemsg_enable($"`{Prefix}bye`")); await ReplyPendingLocalizedAsync(strs.byemsg_enable($"`{prefix}bye`"));
} }
[Cmd] [Cmd]
@@ -190,7 +190,7 @@ public partial class Administration
await _service.ByeTest((ITextChannel)ctx.Channel, user); await _service.ByeTest((ITextChannel)ctx.Channel, user);
var enabled = _service.GetByeEnabled(ctx.Guild.Id); var enabled = _service.GetByeEnabled(ctx.Guild.Id);
if (!enabled) await ReplyPendingLocalizedAsync(strs.byemsg_enable($"`{Prefix}bye`")); if (!enabled) await ReplyPendingLocalizedAsync(strs.byemsg_enable($"`{prefix}bye`"));
} }
[Cmd] [Cmd]
@@ -203,7 +203,7 @@ public partial class Administration
await _service.GreetTest((ITextChannel)ctx.Channel, user); await _service.GreetTest((ITextChannel)ctx.Channel, user);
var enabled = _service.GetGreetEnabled(ctx.Guild.Id); var enabled = _service.GetGreetEnabled(ctx.Guild.Id);
if (!enabled) await ReplyPendingLocalizedAsync(strs.greetmsg_enable($"`{Prefix}greet`")); if (!enabled) await ReplyPendingLocalizedAsync(strs.greetmsg_enable($"`{prefix}greet`"));
} }
[Cmd] [Cmd]
@@ -222,7 +222,7 @@ public partial class Administration
await ctx.WarningAsync(); await ctx.WarningAsync();
var enabled = _service.GetGreetDmEnabled(ctx.Guild.Id); var enabled = _service.GetGreetDmEnabled(ctx.Guild.Id);
if (!enabled) if (!enabled)
await ReplyPendingLocalizedAsync(strs.greetdmmsg_enable($"`{Prefix}greetdm`")); await ReplyPendingLocalizedAsync(strs.greetdmmsg_enable($"`{prefix}greetdm`"));
} }
} }
} }

View File

@@ -13,26 +13,26 @@ public partial class Administration
[Cmd] [Cmd]
[Priority(1)] [Priority(1)]
public async partial Task PrefixCommand() public async partial Task Prefix()
=> await ReplyConfirmLocalizedAsync(strs.prefix_current(Format.Code(CmdHandler.GetPrefix(ctx.Guild)))); => await ReplyConfirmLocalizedAsync(strs.prefix_current(Format.Code(CmdHandler.GetPrefix(ctx.Guild))));
[Cmd] [Cmd]
[RequireContext(ContextType.Guild)] [RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)] [UserPerm(GuildPerm.Administrator)]
[Priority(0)] [Priority(0)]
public partial Task PrefixCommand(Set _, [Leftover] string prefix) public partial Task Prefix(Set _, [Leftover] string prefix)
=> PrefixCommand(prefix); => Prefix(prefix);
[Cmd] [Cmd]
[RequireContext(ContextType.Guild)] [RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)] [UserPerm(GuildPerm.Administrator)]
[Priority(0)] [Priority(0)]
public async partial Task PrefixCommand([Leftover] string prefix) public async partial Task Prefix([Leftover] string prefix)
{ {
if (string.IsNullOrWhiteSpace(prefix)) if (string.IsNullOrWhiteSpace(prefix))
return; return;
var oldPrefix = Prefix; var oldPrefix = base.prefix;
var newPrefix = CmdHandler.SetPrefix(ctx.Guild, prefix); var newPrefix = CmdHandler.SetPrefix(ctx.Guild, prefix);
await ReplyConfirmLocalizedAsync(strs.prefix_new(Format.Code(oldPrefix), Format.Code(newPrefix))); await ReplyConfirmLocalizedAsync(strs.prefix_new(Format.Code(oldPrefix), Format.Code(newPrefix)));

View File

@@ -34,7 +34,7 @@ public partial class Administration
[OwnerOnly] [OwnerOnly]
public async partial Task StartupCommandAdd([Leftover] string cmdText) public async partial Task StartupCommandAdd([Leftover] string cmdText)
{ {
if (cmdText.StartsWith(Prefix + "die", StringComparison.InvariantCulture)) if (cmdText.StartsWith(prefix + "die", StringComparison.InvariantCulture))
return; return;
var guser = (IGuildUser)ctx.User; var guser = (IGuildUser)ctx.User;
@@ -67,7 +67,7 @@ public partial class Administration
[OwnerOnly] [OwnerOnly]
public async partial Task AutoCommandAdd(int interval, [Leftover] string cmdText) public async partial Task AutoCommandAdd(int interval, [Leftover] string cmdText)
{ {
if (cmdText.StartsWith(Prefix + "die", StringComparison.InvariantCulture)) if (cmdText.StartsWith(prefix + "die", StringComparison.InvariantCulture))
return; return;
if (interval < 5) if (interval < 5)

View File

@@ -18,9 +18,9 @@ public partial class Administration
var newVal = _service.ToggleAdSarm(ctx.Guild.Id); var newVal = _service.ToggleAdSarm(ctx.Guild.Id);
if (newVal) if (newVal)
await ReplyConfirmLocalizedAsync(strs.adsarm_enable(Prefix)); await ReplyConfirmLocalizedAsync(strs.adsarm_enable(prefix));
else else
await ReplyConfirmLocalizedAsync(strs.adsarm_disable(Prefix)); await ReplyConfirmLocalizedAsync(strs.adsarm_disable(prefix));
} }
[Cmd] [Cmd]

View File

@@ -83,7 +83,7 @@ public partial class Gambling
return SendConfirmAsync(GetText(strs.animal_race), return SendConfirmAsync(GetText(strs.animal_race),
GetText(strs.animal_race_starting(options.StartTime)), GetText(strs.animal_race_starting(options.StartTime)),
footer: GetText(strs.animal_race_join_instr(Prefix))); footer: GetText(strs.animal_race_join_instr(prefix)));
} }
private Task Ar_OnStarted(AnimalRace race) private Task Ar_OnStarted(AnimalRace race)

View File

@@ -10,7 +10,7 @@ public partial class Games
[Cmd] [Cmd]
[RequireContext(ContextType.Guild)] [RequireContext(ContextType.Guild)]
public async partial Task Hangmanlist() public async partial Task Hangmanlist()
=> await SendConfirmAsync(GetText(strs.hangman_types(Prefix)), _service.GetHangmanTypes().Join('\n')); => await SendConfirmAsync(GetText(strs.hangman_types(prefix)), _service.GetHangmanTypes().Join('\n'));
private static string Draw(HangmanGame.State state) private static string Draw(HangmanGame.State state)
=> $@". ┌─────┐ => $@". ┌─────┐

View File

@@ -27,7 +27,7 @@ public partial class Games
var channel = (ITextChannel)ctx.Channel; var channel = (ITextChannel)ctx.Channel;
var game = _service.RunningContests.GetOrAdd(ctx.Guild.Id, var game = _service.RunningContests.GetOrAdd(ctx.Guild.Id,
_ => new(_games, _client, channel, Prefix, options, _eb)); _ => new(_games, _client, channel, prefix, options, _eb));
if (game.IsActive) if (game.IsActive)
await SendErrorAsync($"Contest already running in {game.Channel.Mention} channel."); await SendErrorAsync($"Contest already running in {game.Channel.Mention} channel.");

View File

@@ -50,7 +50,7 @@ public partial class Games
channel.Guild, channel.Guild,
channel, channel,
opts, opts,
Prefix + "tq", prefix + "tq",
_eb); _eb);
if (_service.RunningTrivias.TryAdd(channel.Guild.Id, trivia)) if (_service.RunningTrivias.TryAdd(channel.Guild.Id, trivia))
{ {

View File

@@ -51,9 +51,9 @@ public partial class Help : NadekoModule<HelpService>
var clientId = await _lazyClientId.Value; var clientId = await _lazyClientId.Value;
var r = new ReplacementBuilder().WithDefault(Context) var r = new ReplacementBuilder().WithDefault(Context)
.WithOverride("{0}", () => clientId.ToString()) .WithOverride("{0}", () => clientId.ToString())
.WithOverride("{1}", () => Prefix) .WithOverride("{1}", () => prefix)
.WithOverride("%prefix%", () => Prefix) .WithOverride("%prefix%", () => prefix)
.WithOverride("%bot.prefix%", () => Prefix) .WithOverride("%bot.prefix%", () => prefix)
.Build(); .Build();
var text = SmartText.CreateFrom(botSettings.HelpText); var text = SmartText.CreateFrom(botSettings.HelpText);
@@ -89,7 +89,7 @@ public partial class Help : NadekoModule<HelpService>
.ForEach(module => embed.AddField($"{GetModuleEmoji(module.Name)} {module.Name}", .ForEach(module => embed.AddField($"{GetModuleEmoji(module.Name)} {module.Name}",
GetText(GetModuleLocStr(module.Name)) GetText(GetModuleLocStr(module.Name))
+ "\n" + "\n"
+ Format.Code(GetText(strs.module_footer(Prefix, module.Name.ToLowerInvariant()))), + Format.Code(GetText(strs.module_footer(prefix, module.Name.ToLowerInvariant()))),
true)); true));
return embed; return embed;
@@ -233,9 +233,9 @@ public partial class Help : NadekoModule<HelpService>
//if cross is specified, and the command doesn't satisfy the requirements, cross it out //if cross is specified, and the command doesn't satisfy the requirements, cross it out
if (opts.View == CommandsOptions.ViewType.Cross) if (opts.View == CommandsOptions.ViewType.Cross)
return return
$"{(succ.Contains(x) ? "" : "")}{Prefix + x.Aliases.First(),-15} {"[" + x.Aliases.Skip(1).FirstOrDefault() + "]",-8}"; $"{(succ.Contains(x) ? "" : "")}{prefix + x.Aliases.First(),-15} {"[" + x.Aliases.Skip(1).FirstOrDefault() + "]",-8}";
return return
$"{Prefix + x.Aliases.First(),-15} {"[" + x.Aliases.Skip(1).FirstOrDefault() + "]",-8}"; $"{prefix + x.Aliases.First(),-15} {"[" + x.Aliases.Skip(1).FirstOrDefault() + "]",-8}";
}); });
if (i == last - 1 && (i + 1) % 2 != 0) if (i == last - 1 && (i + 1) % 2 != 0)
@@ -250,7 +250,7 @@ public partial class Help : NadekoModule<HelpService>
} }
} }
embed.WithFooter(GetText(strs.commands_instr(Prefix))); embed.WithFooter(GetText(strs.commands_instr(prefix)));
await ctx.Channel.EmbedAsync(embed); await ctx.Channel.EmbedAsync(embed);
} }
@@ -321,9 +321,9 @@ public partial class Help : NadekoModule<HelpService>
return new CommandJsonObject return new CommandJsonObject
{ {
Aliases = com.Aliases.Select(alias => Prefix + alias).ToArray(), Aliases = com.Aliases.Select(alias => prefix + alias).ToArray(),
Description = com.RealSummary(_strings, ctx.Guild?.Id, Prefix), Description = com.RealSummary(_strings, ctx.Guild?.Id, prefix),
Usage = com.RealRemarksArr(_strings, ctx.Guild?.Id, Prefix), Usage = com.RealRemarksArr(_strings, ctx.Guild?.Id, prefix),
Submodule = com.Module.Name, Submodule = com.Module.Name,
Module = com.Module.GetTopLevelModule().Name, Module = com.Module.GetTopLevelModule().Name,
Options = optHelpStr, Options = optHelpStr,

View File

@@ -122,7 +122,7 @@ public sealed partial class Music : NadekoModule<IMusicService>
queuedMessage?.DeleteAfter(10, _logService); queuedMessage?.DeleteAfter(10, _logService);
if (mp.IsStopped) if (mp.IsStopped)
{ {
var msg = await ReplyPendingLocalizedAsync(strs.queue_stopped(Format.Code(Prefix + "play"))); var msg = await ReplyPendingLocalizedAsync(strs.queue_stopped(Format.Code(prefix + "play")));
msg.DeleteAfter(10, _logService); msg.DeleteAfter(10, _logService);
} }
} }
@@ -281,7 +281,7 @@ public sealed partial class Music : NadekoModule<IMusicService>
var repeatType = mp.Repeat; var repeatType = mp.Repeat;
var add = string.Empty; var add = string.Empty;
if (mp.IsStopped) if (mp.IsStopped)
add += Format.Bold(GetText(strs.queue_stopped(Format.Code(Prefix + "play")))) + "\n"; add += Format.Bold(GetText(strs.queue_stopped(Format.Code(prefix + "play")))) + "\n";
// var mps = mp.MaxPlaytimeSeconds; // var mps = mp.MaxPlaytimeSeconds;
// if (mps > 0) // if (mps > 0)
// add += Format.Bold(GetText(strs.song_skips_after(TimeSpan.FromSeconds(mps).ToString("HH\\:mm\\:ss")))) + "\n"; // add += Format.Bold(GetText(strs.song_skips_after(TimeSpan.FromSeconds(mps).ToString("HH\\:mm\\:ss")))) + "\n";

View File

@@ -108,7 +108,7 @@ public partial class Permissions : NadekoModule<PermissionService>
.Select(p => .Select(p =>
{ {
var str = var str =
$"`{p.Index + 1}.` {Format.Bold(p.GetCommand(Prefix, (SocketGuild)ctx.Guild))}"; $"`{p.Index + 1}.` {Format.Bold(p.GetCommand(prefix, (SocketGuild)ctx.Guild))}";
if (p.Index == 0) if (p.Index == 0)
str += $" [{GetText(strs.uneditable)}]"; str += $" [{GetText(strs.uneditable)}]";
return str; return str;
@@ -139,7 +139,7 @@ public partial class Permissions : NadekoModule<PermissionService>
} }
await ReplyConfirmLocalizedAsync(strs.removed(index + 1, await ReplyConfirmLocalizedAsync(strs.removed(index + 1,
Format.Code(p.GetCommand(Prefix, (SocketGuild)ctx.Guild)))); Format.Code(p.GetCommand(prefix, (SocketGuild)ctx.Guild))));
} }
catch (IndexOutOfRangeException) catch (IndexOutOfRangeException)
{ {
@@ -186,7 +186,7 @@ public partial class Permissions : NadekoModule<PermissionService>
} }
await ReplyConfirmLocalizedAsync(strs.moved_permission( await ReplyConfirmLocalizedAsync(strs.moved_permission(
Format.Code(fromPerm.GetCommand(Prefix, (SocketGuild)ctx.Guild)), Format.Code(fromPerm.GetCommand(prefix, (SocketGuild)ctx.Guild)),
++from, ++from,
++to)); ++to));

View File

@@ -22,7 +22,7 @@ public partial class Searches
[Cmd] [Cmd]
public async partial Task Placelist() public async partial Task Placelist()
=> await SendConfirmAsync(GetText(strs.list_of_place_tags(Prefix)), _typesStr); => await SendConfirmAsync(GetText(strs.list_of_place_tags(prefix)), _typesStr);
[Cmd] [Cmd]
public async partial Task Place(PlaceType placeType, uint width = 0, uint height = 0) public async partial Task Place(PlaceType placeType, uint width = 0, uint height = 0)

View File

@@ -42,7 +42,7 @@ public partial class Utility
.DistinctBy(x => x.Name) .DistinctBy(x => x.Name)
.Select(x => x.Name) .Select(x => x.Name)
.Except(new[] { "ToString", "Equals", "GetHashCode", "GetType" }); .Except(new[] { "ToString", "Equals", "GetHashCode", "GetType" });
await SendConfirmAsync(GetText(strs.calcops(Prefix)), string.Join(", ", selection)); await SendConfirmAsync(GetText(strs.calcops(prefix)), string.Join(", ", selection));
} }
} }
} }

View File

@@ -471,6 +471,7 @@ join:
trackremove: trackremove:
- songremove - songremove
- srm - srm
- trackremove
movesong: movesong:
- movesong - movesong
- ms - ms
@@ -980,7 +981,7 @@ globalpermlist:
- listglobalperms - listglobalperms
resetglobalperms: resetglobalperms:
- resetglobalperms - resetglobalperms
prefixcommand: prefix:
- prefix - prefix
defprefix: defprefix:
- defprefix - defprefix

View File

@@ -1,4 +1,4 @@
help: h:
desc: "Either shows a help for a single command, or DMs you help link if no parameters are specified." desc: "Either shows a help for a single command, or DMs you help link if no parameters are specified."
args: args:
- "{0}cmds" - "{0}cmds"
@@ -124,7 +124,7 @@ repeat:
- "1h5m Hello @erryone" - "1h5m Hello @erryone"
- "10:00 Daily have a nice day! This will execute once every 24h." - "10:00 Daily have a nice day! This will execute once every 24h."
- "21:00 30m Starting at 21 and every 30 minutes after that i will send this message!" - "21:00 30m Starting at 21 and every 30 minutes after that i will send this message!"
repeatredun: repeatredundant:
desc: "Specify repeater's index (use `{0}repli` to find it) to toggle whether that repeater's message should be reposted if the last message in the channel is the same repeater's message. This is useful if you want to remind everyone to be nice in the channel every so often, but don't want to have the bot spam the channel. This is NOT useful if you want to periodically ping someone." desc: "Specify repeater's index (use `{0}repli` to find it) to toggle whether that repeater's message should be reposted if the last message in the channel is the same repeater's message. This is useful if you want to remind everyone to be nice in the channel every so often, but don't want to have the bot spam the channel. This is NOT useful if you want to periodically ping someone."
args: args:
- "1" - "1"
@@ -192,11 +192,11 @@ iamnot:
desc: "Removes a specified role from you. Role must be on a list of self-assignable roles." desc: "Removes a specified role from you. Role must be on a list of self-assignable roles."
args: args:
- "Gamer" - "Gamer"
addcustreact: expradd:
desc: "Add a custom reaction with a trigger and a response. Running this command in server requires the Administration permission. Running this command in DM is Bot Owner only and adds a new global custom reaction. Guide here: <http://nadekobot.readthedocs.io/en/latest/custom-reactions/>" desc: "Add a custom reaction with a trigger and a response. Running this command in server requires the Administration permission. Running this command in DM is Bot Owner only and adds a new global custom reaction. Guide here: <http://nadekobot.readthedocs.io/en/latest/custom-reactions/>"
args: args:
- "\"hello\" Hi there %user.mention%" - "\"hello\" Hi there %user.mention%"
listcustreact: exprlist:
desc: |- desc: |-
Lists global or server custom reactions (20 commands per page). Lists global or server custom reactions (20 commands per page).
Running the command in DM will list global custom reactions, while running it in a server will list server custom reactions. Running the command in DM will list global custom reactions, while running it in a server will list server custom reactions.
@@ -208,19 +208,15 @@ listcustreact:
args: args:
- "1" - "1"
- "all" - "all"
listcustreactg: exprshow:
desc: "Lists global or server custom reactions (20 commands per page) grouped by trigger, and show a number of responses for each. Running the command in DM will list global custom reactions, while running it in server will list that server's custom reactions."
args:
- "1"
showcustreact:
desc: "Shows a custom reaction's response on a given ID." desc: "Shows a custom reaction's response on a given ID."
args: args:
- "1" - "1"
delcustreact: exprdelete:
desc: "Deletes a custom reaction on a specific index. If ran in DM, it is bot owner only and deletes a global custom reaction. If ran in a server, it requires Administration privileges and removes server custom reaction." desc: "Deletes a custom reaction on a specific index. If ran in DM, it is bot owner only and deletes a global custom reaction. If ran in a server, it requires Administration privileges and removes server custom reaction."
args: args:
- "5" - "5"
crclear: exprclear:
desc: "Deletes all custom reactions on this server." desc: "Deletes all custom reactions on this server."
args: args:
- "" - ""
@@ -847,7 +843,7 @@ join:
desc: "Makes the bot join your voice channel." desc: "Makes the bot join your voice channel."
args: args:
- "" - ""
songremove: trackremove:
desc: "Remove a song by its # in the queue, or 'all' (or provide no parameter) to remove all songs from the queue." desc: "Remove a song by its # in the queue, or 'all' (or provide no parameter) to remove all songs from the queue."
args: args:
- "5" - "5"
@@ -916,11 +912,11 @@ streamoffline:
desc: "Toggles whether the bot will also notify when added streams go offline." desc: "Toggles whether the bot will also notify when added streams go offline."
args: args:
- "" - ""
streammsg: streammessage:
desc: "Sets the message which will show when the stream on the specified index comes online. You can use %user% and %platform% placeholders." desc: "Sets the message which will show when the stream on the specified index comes online. You can use %user% and %platform% placeholders."
args: args:
- "1 Hey @erryone %user% is back online on %platform%!1!!" - "1 Hey @erryone %user% is back online on %platform%!1!!"
streammsgall: streammessageall:
desc: "Sets the message which will show when any of the currently followed streams comes online. This does not apply to the streams which get added afterwards. You can use %user% and %platform% placeholders." desc: "Sets the message which will show when any of the currently followed streams comes online. This does not apply to the streams which get added afterwards. You can use %user% and %platform% placeholders."
args: args:
- "Hey @erryone %user% is back online!1!!" - "Hey @erryone %user% is back online!1!!"
@@ -1167,7 +1163,7 @@ cash:
args: args:
- "" - ""
- "@Someone" - "@Someone"
curtrs: currencytransactions:
desc: "Shows your currency transactions on the specified page. Bot owner can see other people's transactions too." desc: "Shows your currency transactions on the specified page. Bot owner can see other people's transactions too."
args: args:
- "2" - "2"
@@ -1522,7 +1518,7 @@ timezone:
args: args:
- "" - ""
- "GMT Standard Time" - "GMT Standard Time"
langsetdefault: languagesetdefault:
desc: "Sets the bot's default response language. All servers which use a default locale will use this one. Setting to `default` will use the host's current culture. Provide no parameters to see currently set language." desc: "Sets the bot's default response language. All servers which use a default locale will use this one. Setting to `default` will use the host's current culture. Provide no parameters to see currently set language."
args: args:
- "en-US" - "en-US"
@@ -1540,37 +1536,37 @@ rategirl:
desc: "Use the universal hot-crazy wife zone matrix to determine the girl's worth. It is everything young men need to know about women. At any moment in time, any woman you have previously located on this chart can vanish from that location and appear anywhere else on the chart." desc: "Use the universal hot-crazy wife zone matrix to determine the girl's worth. It is everything young men need to know about women. At any moment in time, any woman you have previously located on this chart can vanish from that location and appear anywhere else on the chart."
args: args:
- "@SomeGurl" - "@SomeGurl"
crreact: exprreact:
desc: "Sets or resets reactions (up to 3) which will be added to the response message of the CustomReaction with the specified ID. Provide no emojis to reset." desc: "Sets or resets reactions (up to 3) which will be added to the response message of the CustomReaction with the specified ID. Provide no emojis to reset."
args: args:
- "59 \U0001F44D \U0001F44E " - "59 \U0001F44D \U0001F44E "
- "59 <a:nFlower:408963839191941120>" - "59 <a:nFlower:408963839191941120>"
- "59" - "59"
crad: exprad:
desc: "Toggles whether the message triggering the custom reaction will be automatically deleted." desc: "Toggles whether the message triggering the custom reaction will be automatically deleted."
args: args:
- "59" - "59"
crat: exprat:
desc: "Toggles whether the custom reaction will allow extra input after the trigger. For example, with this feature enabled, custom reaction with trigger 'hi' will also be invoked when a user types 'hi there'. This feature is automatically enabled on custom reactions which have '%target%' in their response." desc: "Toggles whether the custom reaction will allow extra input after the trigger. For example, with this feature enabled, custom reaction with trigger 'hi' will also be invoked when a user types 'hi there'. This feature is automatically enabled on custom reactions which have '%target%' in their response."
args: args:
- "59" - "59"
crdm: exprdm:
desc: "Toggles whether the response message of the custom reaction will be sent as a direct message." desc: "Toggles whether the response message of the custom reaction will be sent as a direct message."
args: args:
- "44" - "44"
crca: exprca:
desc: "Toggles whether the custom reaction will trigger if the triggering message contains the keyword (instead of only starting with it)." desc: "Toggles whether the custom reaction will trigger if the triggering message contains the keyword (instead of only starting with it)."
args: args:
- "44" - "44"
crsreload: exprsreload:
desc: "Reloads all custom reactions on all shards. Use this if you've made changes to the database while the bot is running, or used `{0}deleteunusedcrnq`" desc: "Reloads all custom reactions on all shards. Use this if you've made changes to the database while the bot is running, or used `{0}deleteunusedcrnq`"
args: args:
- "" - ""
crsimport: exprsimport:
desc: "Upload the file or send the raw .yml data with this command to import all custom reactions from the specified string or file into the current server (or as global custom reactions in dm)" desc: "Upload the file or send the raw .yml data with this command to import all custom reactions from the specified string or file into the current server (or as global custom reactions in dm)"
args: args:
- "<upload .yml file>" - "<upload .yml file>"
crsexport: exprsexport:
desc: "Exports custom reactions from the current server (or global custom reactions in DMs) into a .yml file" desc: "Exports custom reactions from the current server (or global custom reactions in DMs) into a .yml file"
args: args:
- "" - ""
@@ -1608,31 +1604,31 @@ warn:
args: args:
- "@Someone Very rude person" - "@Someone Very rude person"
- "3 @Someone Very rude person" - "3 @Someone Very rude person"
scadd: startupcommandadd:
desc: "Adds a command to the list of commands which will be executed automatically in the current channel, in the order they were added in, by the bot when it startups up." desc: "Adds a command to the list of commands which will be executed automatically in the current channel, in the order they were added in, by the bot when it startups up."
args: args:
- "{0}stats" - "{0}stats"
acadd: autocommandadd:
desc: "Adds a command to the list of commands which will be executed automatically every X seconds." desc: "Adds a command to the list of commands which will be executed automatically every X seconds."
args: args:
- "60 {0}prune 1000" - "60 {0}prune 1000"
scrm: startupcommandremove:
desc: "Removes a startup command on the specified index." desc: "Removes a startup command on the specified index."
args: args:
- "3" - "3"
acrm: autocommandremove:
desc: "Removes an auto command on the specified index." desc: "Removes an auto command on the specified index."
args: args:
- "3" - "3"
scclear: startupcommandsclear:
desc: "Removes all startup commands." desc: "Removes all startup commands."
args: args:
- "" - ""
sclist: startupcommandslist:
desc: "Lists all startup commands in the order they will be executed in." desc: "Lists all startup commands in the order they will be executed in."
args: args:
- "" - ""
aclist: autocommandslist:
desc: "Lists all auto commands and the intervals in which they execute." desc: "Lists all auto commands and the intervals in which they execute."
args: args:
- "" - ""
@@ -1646,7 +1642,7 @@ banmessage:
args: args:
- "%ban.user%, you've been banned from %server.name%. Reason: %ban.reason%" - "%ban.user%, you've been banned from %server.name%. Reason: %ban.reason%"
- "{{ \"description\": \"%ban.user% you have been banned from %server.name% by %ban.mod%\" }}" - "{{ \"description\": \"%ban.user% you have been banned from %server.name% by %ban.mod%\" }}"
banmsgtest: banmessagetest:
desc: "If ban message is not disabled, bot will send you the message as if you were banned by yourself. Used for testing the ban message." desc: "If ban message is not disabled, bot will send you the message as if you were banned by yourself. Used for testing the ban message."
args: args:
- "No reason" - "No reason"
@@ -1791,7 +1787,7 @@ configreload:
args: args:
- "bot" - "bot"
- "gambling" - "gambling"
nsfwtagbl: nsfwtagblacklist:
desc: "Toggles whether the tag is blacklisted or not in nsfw searches. Provide no parameters to see the list of blacklisted tags." desc: "Toggles whether the tag is blacklisted or not in nsfw searches. Provide no parameters to see the list of blacklisted tags."
args: args:
- "poop" - "poop"
@@ -1800,7 +1796,7 @@ experience:
args: args:
- "" - ""
- "@someguy" - "@someguy"
xptempreload: xptemplatereload:
desc: "Reloads the xp template file. Xp template file allows you to customize the position and color of elements on the `{0}xp` card." desc: "Reloads the xp template file. Xp template file allows you to customize the position and color of elements on the `{0}xp` card."
args: args:
- "" - ""
@@ -1818,7 +1814,7 @@ xpnotify:
args: args:
- "global dm" - "global dm"
- "server channel" - "server channel"
xplvluprewards: xpleveluprewards:
desc: "Shows currently set level up rewards." desc: "Shows currently set level up rewards."
args: args:
- "" - ""
@@ -1835,7 +1831,7 @@ xprolereward:
- "3 add Social" - "3 add Social"
- "5 add Member" - "5 add Member"
- "5" - "5"
xpcurreward: xpcurrencyreward:
desc: "Sets a currency reward on a specified level. Provide no amount in order to remove the reward." desc: "Sets a currency reward on a specified level. Provide no amount in order to remove the reward."
args: args:
- "3 50" - "3 50"
@@ -1843,7 +1839,7 @@ xpleaderboard:
desc: "Shows current server's xp leaderboard." desc: "Shows current server's xp leaderboard."
args: args:
- "" - ""
xpgleaderboard: xpgloballeaderboard:
desc: "Shows the global xp leaderboard." desc: "Shows the global xp leaderboard."
args: args:
- "" - ""
@@ -1859,7 +1855,7 @@ clubtransfer:
desc: "Transfers the ownership of the club to another member of the club." desc: "Transfers the ownership of the club to another member of the club."
args: args:
- "@Someone" - "@Someone"
clubinfo: clubinformation:
desc: "Shows information about the club." desc: "Shows information about the club."
args: args:
- "My Brand New Club#23" - "My Brand New Club#23"
@@ -1895,7 +1891,7 @@ clublevelreq:
desc: "Sets the club required level to apply to join the club. You must be club owner. You can't set this number below 5." desc: "Sets the club required level to apply to join the club. You must be club owner. You can't set this number below 5."
args: args:
- "7" - "7"
clubdesc: clubdescription:
desc: "Sets the club description. Maximum 150 characters. Club owner only." desc: "Sets the club description. Maximum 150 characters. Club owner only."
args: args:
- "This is the best club please join." - "This is the best club please join."
@@ -1911,7 +1907,7 @@ clubbans:
desc: "Shows the list of users who have banned from your club. Paginated. You must be club owner to use this command." desc: "Shows the list of users who have banned from your club. Paginated. You must be club owner to use this command."
args: args:
- "2" - "2"
clublb: clubleaderboard:
desc: "Shows club rankings on the specified page." desc: "Shows club rankings on the specified page."
args: args:
- "2" - "2"
@@ -1952,7 +1948,7 @@ feedlist:
desc: "Shows the list of feeds you've subscribed to on this server." desc: "Shows the list of feeds you've subscribed to on this server."
args: args:
- "" - ""
editcustreact: expredit:
desc: "Edits the custom reaction's response given its ID." desc: "Edits the custom reaction's response given its ID."
args: args:
- "123 I'm a magical girl" - "123 I'm a magical girl"
@@ -1989,16 +1985,16 @@ deletexp:
desc: "Deletes everything from UserXpStats, Clubs and sets users' TotalXP to 0." desc: "Deletes everything from UserXpStats, Clubs and sets users' TotalXP to 0."
args: args:
- "" - ""
dpo: discordpermoverride:
desc: "Overrides required user permissions that the command has with the specified ones. You can only use server-level permissions. This action will make the bot ignore user permission requirements which command has by default. Provide no permissions to reset to default." desc: "Overrides required user permissions that the command has with the specified ones. You can only use server-level permissions. This action will make the bot ignore user permission requirements which command has by default. Provide no permissions to reset to default."
args: args:
- "{0}prune ManageMessages BanMembers" - "{0}prune ManageMessages BanMembers"
- "{0}prune" - "{0}prune"
dpol: discordpermoverridelist:
desc: "Lists all discord permission overrides on this server." desc: "Lists all discord permission overrides on this server."
args: args:
- "" - ""
dpor: discordpermoverridereset:
desc: "Resets ALL currently set discord permission overrides on this server. This will make all commands have default discord permission requirements." desc: "Resets ALL currently set discord permission overrides on this server. This will make all commands have default discord permission requirements."
args: args:
- "" - ""