- Removed NadekoCommand and Aliases attribute from all commands

- All commands must be marked as partial
- Added [Cmd] Attribute to all commands
- Cmd Attribute comes from the source generator which adds [NadekoCommand] and [Aliases] Attribute to each command
- Should be updated in the future probably to be more performant and maybe add extra data to the commands
- Started reorganizing modules and submodules
This commit is contained in:
Kwoth
2021-12-31 16:04:12 +01:00
parent 6eee161b6b
commit 25eeffa163
107 changed files with 1620 additions and 3236 deletions

View File

@@ -37,12 +37,11 @@ public partial class Administration : NadekoModule<AdministrationService>
public Administration(ImageOnlyChannelService imageOnly)
=> _imageOnly = imageOnly;
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[BotPerm(GuildPerm.Administrator)]
public async Task ImageOnlyChannel(StoopidTime time = null)
[BotPerm(GuildPerm.ManageGuild)]
public async partial Task ImageOnlyChannel(StoopidTime time = null)
{
var newValue = _imageOnly.ToggleImageOnlyChannel(ctx.Guild.Id, ctx.Channel.Id);
if (newValue)
@@ -51,18 +50,16 @@ public partial class Administration : NadekoModule<AdministrationService>
await ReplyPendingLocalizedAsync(strs.imageonly_disable);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(ChannelPerm.ManageChannels)]
[BotPerm(ChannelPerm.ManageChannels)]
public async Task Slowmode(StoopidTime time = null)
public async partial Task Slowmode(StoopidTime time = null)
{
var seconds = (int?)time?.Time.TotalSeconds ?? 0;
if (time is not null && (time.Time < TimeSpan.FromSeconds(0) || time.Time > TimeSpan.FromHours(6)))
return;
await ((ITextChannel)ctx.Channel).ModifyAsync(tcp =>
{
tcp.SlowModeInterval = seconds;
@@ -71,13 +68,12 @@ public partial class Administration : NadekoModule<AdministrationService>
await ctx.OkAsync();
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[BotPerm(GuildPerm.ManageMessages)]
[Priority(2)]
public async Task Delmsgoncmd(List _)
public async partial Task Delmsgoncmd(List _)
{
var guild = (SocketGuild)ctx.Guild;
var (enabled, channels) = _service.GetDelMsgOnCmdData(ctx.Guild.Id);
@@ -103,13 +99,12 @@ public partial class Administration : NadekoModule<AdministrationService>
await ctx.Channel.EmbedAsync(embed);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[BotPerm(GuildPerm.ManageMessages)]
[Priority(1)]
public async Task Delmsgoncmd(Server _ = Server.Server)
public async partial Task Delmsgoncmd(Server _ = Server.Server)
{
if (_service.ToggleDeleteMessageOnCommand(ctx.Guild.Id))
{
@@ -123,22 +118,20 @@ public partial class Administration : NadekoModule<AdministrationService>
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[BotPerm(GuildPerm.ManageMessages)]
[Priority(0)]
public Task Delmsgoncmd(Channel _, State s, ITextChannel ch)
public partial Task Delmsgoncmd(Channel _, State s, ITextChannel ch)
=> Delmsgoncmd(_, s, ch.Id);
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[BotPerm(GuildPerm.ManageMessages)]
[Priority(1)]
public async Task Delmsgoncmd(Channel _, State s, ulong? chId = null)
public async partial Task Delmsgoncmd(Channel _, State s, ulong? chId = null)
{
var actualChId = chId ?? ctx.Channel.Id;
await _service.SetDelMsgOnCmdState(ctx.Guild.Id, actualChId, s);
@@ -151,78 +144,71 @@ public partial class Administration : NadekoModule<AdministrationService>
await ReplyConfirmLocalizedAsync(strs.delmsg_channel_inherit);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.DeafenMembers)]
[BotPerm(GuildPerm.DeafenMembers)]
public async Task Deafen(params IGuildUser[] users)
public async partial Task Deafen(params IGuildUser[] users)
{
await _service.DeafenUsers(true, users);
await ReplyConfirmLocalizedAsync(strs.deafen);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.DeafenMembers)]
[BotPerm(GuildPerm.DeafenMembers)]
public async Task UnDeafen(params IGuildUser[] users)
public async partial Task UnDeafen(params IGuildUser[] users)
{
await _service.DeafenUsers(false, users);
await ReplyConfirmLocalizedAsync(strs.undeafen);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageChannels)]
[BotPerm(GuildPerm.ManageChannels)]
public async Task DelVoiChanl([Leftover] IVoiceChannel voiceChannel)
public async partial Task DelVoiChanl([Leftover] IVoiceChannel voiceChannel)
{
await voiceChannel.DeleteAsync();
await ReplyConfirmLocalizedAsync(strs.delvoich(Format.Bold(voiceChannel.Name)));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageChannels)]
[BotPerm(GuildPerm.ManageChannels)]
public async Task CreatVoiChanl([Leftover] string channelName)
public async partial Task CreatVoiChanl([Leftover] string channelName)
{
var ch = await ctx.Guild.CreateVoiceChannelAsync(channelName);
await ReplyConfirmLocalizedAsync(strs.createvoich(Format.Bold(ch.Name)));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageChannels)]
[BotPerm(GuildPerm.ManageChannels)]
public async Task DelTxtChanl([Leftover] ITextChannel toDelete)
public async partial Task DelTxtChanl([Leftover] ITextChannel toDelete)
{
await toDelete.DeleteAsync();
await ReplyConfirmLocalizedAsync(strs.deltextchan(Format.Bold(toDelete.Name)));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageChannels)]
[BotPerm(GuildPerm.ManageChannels)]
public async Task CreaTxtChanl([Leftover] string channelName)
public async partial Task CreaTxtChanl([Leftover] string channelName)
{
var txtCh = await ctx.Guild.CreateTextChannelAsync(channelName);
await ReplyConfirmLocalizedAsync(strs.createtextchan(Format.Bold(txtCh.Name)));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageChannels)]
[BotPerm(GuildPerm.ManageChannels)]
public async Task SetTopic([Leftover] string topic = null)
public async partial Task SetTopic([Leftover] string topic = null)
{
var channel = (ITextChannel)ctx.Channel;
topic ??= "";
@@ -230,24 +216,22 @@ public partial class Administration : NadekoModule<AdministrationService>
await ReplyConfirmLocalizedAsync(strs.set_topic);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageChannels)]
[BotPerm(GuildPerm.ManageChannels)]
public async Task SetChanlName([Leftover] string name)
public async partial Task SetChanlName([Leftover] string name)
{
var channel = (ITextChannel)ctx.Channel;
await channel.ModifyAsync(c => c.Name = name);
await ReplyConfirmLocalizedAsync(strs.set_channel_name);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageChannels)]
[BotPerm(GuildPerm.ManageChannels)]
public async Task NsfwToggle()
public async partial Task NsfwToggle()
{
var channel = (ITextChannel)ctx.Channel;
var isEnabled = channel.IsNsfw;
@@ -260,19 +244,17 @@ public partial class Administration : NadekoModule<AdministrationService>
await ReplyConfirmLocalizedAsync(strs.nsfw_set_true);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(ChannelPerm.ManageMessages)]
[Priority(0)]
public Task Edit(ulong messageId, [Leftover] string text)
public partial Task Edit(ulong messageId, [Leftover] string text)
=> Edit((ITextChannel)ctx.Channel, messageId, text);
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[Priority(1)]
public async Task Edit(ITextChannel channel, ulong messageId, [Leftover] string text)
public async partial Task Edit(ITextChannel channel, ulong messageId, [Leftover] string text)
{
var userPerms = ((SocketGuildUser)ctx.User).GetPermissions(channel);
var botPerms = ((SocketGuild)ctx.Guild).CurrentUser.GetPermissions(channel);
@@ -291,18 +273,16 @@ public partial class Administration : NadekoModule<AdministrationService>
await _service.EditMessage(ctx, channel, messageId, text);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(ChannelPerm.ManageMessages)]
[BotPerm(ChannelPerm.ManageMessages)]
public Task Delete(ulong messageId, StoopidTime time = null)
public partial Task Delete(ulong messageId, StoopidTime time = null)
=> Delete((ITextChannel)ctx.Channel, messageId, time);
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
public async Task Delete(ITextChannel channel, ulong messageId, StoopidTime time = null)
public async partial Task Delete(ITextChannel channel, ulong messageId, StoopidTime time = null)
=> await InternalMessageAction(channel, messageId, time, msg => msg.DeleteAsync());
private async Task InternalMessageAction(

View File

@@ -6,14 +6,13 @@ namespace NadekoBot.Modules.Administration;
public partial class Administration
{
[Group]
public class AutoAssignRoleCommands : NadekoSubmodule<AutoAssignRoleService>
public partial class AutoAssignRoleCommands : NadekoSubmodule<AutoAssignRoleService>
{
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
public async Task AutoAssignRole([Leftover] IRole role)
public async partial Task AutoAssignRole([Leftover] IRole role)
{
var guser = (IGuildUser)ctx.User;
if (role.Id == ctx.Guild.EveryoneRole.Id)
@@ -35,12 +34,11 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.aar_role_removed(Format.Bold(role.ToString())));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
public async Task AutoAssignRole()
public async partial Task AutoAssignRole()
{
if (!_service.TryGetRoles(ctx.Guild.Id, out var roles))
{

View File

@@ -8,7 +8,7 @@ namespace NadekoBot.Modules.Administration
{
[Group]
[OwnerOnly]
public class DangerousCommands : NadekoSubmodule<DangerousCommandsService>
public partial class DangerousCommands : NadekoSubmodule<DangerousCommandsService>
{
private async Task InternalExecSql(string sql, params object[] reps)
{
@@ -31,10 +31,9 @@ namespace NadekoBot.Modules.Administration
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public Task SqlSelect([Leftover] string sql)
public partial Task SqlSelect([Leftover] string sql)
{
var result = _service.SelectSql(sql);
@@ -56,52 +55,44 @@ namespace NadekoBot.Modules.Administration
20);
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public Task SqlExec([Leftover] string sql)
public partial Task SqlExec([Leftover] string sql)
=> InternalExecSql(sql);
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public Task DeleteWaifus()
public partial Task DeleteWaifus()
=> SqlExec(DangerousCommandsService.WaifusDeleteSql);
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public Task DeleteWaifu(IUser user)
public partial Task DeleteWaifu(IUser user)
=> DeleteWaifu(user.Id);
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public Task DeleteWaifu(ulong userId)
public partial Task DeleteWaifu(ulong userId)
=> InternalExecSql(DangerousCommandsService.WaifuDeleteSql, userId);
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public Task DeleteCurrency()
public partial Task DeleteCurrency()
=> SqlExec(DangerousCommandsService.CurrencyDeleteSql);
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public Task DeletePlaylists()
public partial Task DeletePlaylists()
=> SqlExec(DangerousCommandsService.MusicPlaylistDeleteSql);
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public Task DeleteXp()
public partial Task DeleteXp()
=> SqlExec(DangerousCommandsService.XpDeleteSql);
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task PurgeUser(ulong userId)
public async partial Task PurgeUser(ulong userId)
{
var embed = _eb.Create()
.WithDescription(GetText(strs.purge_user_confirm(Format.Bold(userId.ToString()))));
@@ -112,14 +103,13 @@ namespace NadekoBot.Modules.Administration
await ctx.OkAsync();
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public Task PurgeUser([Leftover] IUser user)
public partial Task PurgeUser([Leftover] IUser user)
=> PurgeUser(user.Id);
//[NadekoCommand, Usage, Description, Aliases]
//[OwnerOnly]
//public Task DeleteUnusedCrnQ() =>
//public partial Task DeleteUnusedCrnQ() =>
// SqlExec(DangerousCommandsService.DeleteUnusedCustomReactionsAndQuotes);
}
}

View File

@@ -6,14 +6,13 @@ namespace NadekoBot.Modules.Administration;
public partial class Administration
{
[Group]
public class GameChannelCommands : NadekoSubmodule<GameVoiceChannelService>
public partial class GameVoiceChannelCommands : NadekoSubmodule<GameVoiceChannelService>
{
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[BotPerm(GuildPerm.MoveMembers)]
public async Task GameVoiceChannel()
public async partial Task GameVoiceChannel()
{
var vch = ((IGuildUser)ctx.User).VoiceChannel;

View File

@@ -3,13 +3,12 @@ namespace NadekoBot.Modules.Administration;
public partial class Administration
{
[Group]
public class ServerGreetCommands : NadekoSubmodule<GreetSettingsService>
public partial class GreetCommands : NadekoSubmodule<GreetService>
{
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageGuild)]
public async Task Boost()
public async partial Task Boost()
{
var enabled = await _service.ToggleBoost(ctx.Guild.Id, ctx.Channel.Id);
@@ -19,11 +18,10 @@ public partial class Administration
await ReplyPendingLocalizedAsync(strs.boost_off);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageGuild)]
public async Task BoostDel(int timer = 30)
public async partial Task BoostDel(int timer = 30)
{
if (timer is < 0 or > 600)
return;
@@ -36,11 +34,10 @@ public partial class Administration
await ReplyPendingLocalizedAsync(strs.boostdel_off);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageGuild)]
public async Task BoostMsg([Leftover] string? text = null)
public async partial Task BoostMsg([Leftover] string? text = null)
{
if (string.IsNullOrWhiteSpace(text))
{
@@ -56,11 +53,10 @@ public partial class Administration
await ReplyPendingLocalizedAsync(strs.boostmsg_enable($"`{Prefix}boost`"));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageGuild)]
public async Task GreetDel(int timer = 30)
public async partial Task GreetDel(int timer = 30)
{
if (timer is < 0 or > 600)
return;
@@ -73,11 +69,10 @@ public partial class Administration
await ReplyPendingLocalizedAsync(strs.greetdel_off);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageGuild)]
public async Task Greet()
public async partial Task Greet()
{
var enabled = await _service.SetGreet(ctx.Guild.Id, ctx.Channel.Id);
@@ -87,11 +82,10 @@ public partial class Administration
await ReplyPendingLocalizedAsync(strs.greet_off);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageGuild)]
public async Task GreetMsg([Leftover] string? text = null)
public async partial Task GreetMsg([Leftover] string? text = null)
{
if (string.IsNullOrWhiteSpace(text))
{
@@ -108,11 +102,10 @@ public partial class Administration
await ReplyPendingLocalizedAsync(strs.greetmsg_enable($"`{Prefix}greet`"));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageGuild)]
public async Task GreetDm()
public async partial Task GreetDm()
{
var enabled = await _service.SetGreetDm(ctx.Guild.Id);
@@ -122,11 +115,10 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.greetdm_off);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageGuild)]
public async Task GreetDmMsg([Leftover] string? text = null)
public async partial Task GreetDmMsg([Leftover] string? text = null)
{
if (string.IsNullOrWhiteSpace(text))
{
@@ -142,11 +134,10 @@ public partial class Administration
await ReplyPendingLocalizedAsync(strs.greetdmmsg_enable($"`{Prefix}greetdm`"));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageGuild)]
public async Task Bye()
public async partial Task Bye()
{
var enabled = await _service.SetBye(ctx.Guild.Id, ctx.Channel.Id);
@@ -156,11 +147,10 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.bye_off);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageGuild)]
public async Task ByeMsg([Leftover] string? text = null)
public async partial Task ByeMsg([Leftover] string? text = null)
{
if (string.IsNullOrWhiteSpace(text))
{
@@ -176,11 +166,10 @@ public partial class Administration
await ReplyPendingLocalizedAsync(strs.byemsg_enable($"`{Prefix}bye`"));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageGuild)]
public async Task ByeDel(int timer = 30)
public async partial Task ByeDel(int timer = 30)
{
await _service.SetByeDel(ctx.Guild.Id, timer);
@@ -191,12 +180,11 @@ public partial class Administration
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageGuild)]
[Ratelimit(5)]
public async Task ByeTest([Leftover] IGuildUser? user = null)
public async partial Task ByeTest([Leftover] IGuildUser? user = null)
{
user ??= (IGuildUser)ctx.User;
@@ -205,12 +193,11 @@ public partial class Administration
if (!enabled) await ReplyPendingLocalizedAsync(strs.byemsg_enable($"`{Prefix}bye`"));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageGuild)]
[Ratelimit(5)]
public async Task GreetTest([Leftover] IGuildUser? user = null)
public async partial Task GreetTest([Leftover] IGuildUser? user = null)
{
user ??= (IGuildUser)ctx.User;
@@ -219,12 +206,11 @@ public partial class Administration
if (!enabled) await ReplyPendingLocalizedAsync(strs.greetmsg_enable($"`{Prefix}greet`"));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageGuild)]
[Ratelimit(5)]
public async Task GreetDmTest([Leftover] IGuildUser? user = null)
public async partial Task GreetDmTest([Leftover] IGuildUser? user = null)
{
user ??= (IGuildUser)ctx.User;

View File

@@ -3,7 +3,7 @@ using NadekoBot.Services.Database.Models;
namespace NadekoBot.Services;
public class GreetSettingsService : INService
public class GreetService : INService
{
public bool GroupGreets
=> _bss.Data.GroupGreets;
@@ -17,7 +17,7 @@ public class GreetSettingsService : INService
private readonly GreetGrouper<IUser> _byes = new();
private readonly BotConfigService _bss;
public GreetSettingsService(
public GreetService(
DiscordSocketClient client,
Bot bot,
DbService db,

View File

@@ -6,7 +6,7 @@ namespace NadekoBot.Modules.Administration;
public partial class Administration
{
[Group]
public class LocalizationCommands : NadekoSubmodule
public partial class LocalizationCommands : NadekoSubmodule
{
private static readonly IReadOnlyDictionary<string, string> supportedLocales = new Dictionary<string, string>
{
@@ -38,20 +38,18 @@ public partial class Administration
{ "uk-UA", "Українська, Україна" }
};
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[Priority(0)]
public async Task LanguageSet()
public async partial Task LanguageSet()
=> await ReplyConfirmLocalizedAsync(strs.lang_set_show(Format.Bold(Culture.ToString()),
Format.Bold(Culture.NativeName)));
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[Priority(1)]
public async Task LanguageSet(string name)
public async partial Task LanguageSet(string name)
{
try
{
@@ -75,18 +73,16 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
public async Task LanguageSetDefault()
[Cmd]
public async partial Task LanguageSetDefault()
{
var cul = Localization.DefaultCultureInfo;
await ReplyErrorLocalizedAsync(strs.lang_set_bot_show(cul, cul.NativeName));
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task LanguageSetDefault(string name)
public async partial Task LanguageSetDefault(string name)
{
try
{
@@ -111,9 +107,8 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
public async Task LanguagesList()
[Cmd]
public async partial Task LanguagesList()
=> await ctx.Channel.EmbedAsync(_eb.Create()
.WithOkColor()
.WithTitle(GetText(strs.lang_list))

View File

@@ -1,167 +0,0 @@
#nullable disable
using NadekoBot.Common.TypeReaders.Models;
using NadekoBot.Modules.Administration.Services;
using NadekoBot.Services.Database.Models;
namespace NadekoBot.Modules.Administration;
public partial class Administration
{
[Group]
[NoPublicBot]
public class LogCommands : NadekoSubmodule<ILogCommandService>
{
[NadekoCommand]
[Aliases]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[OwnerOnly]
public async Task LogServer(PermissionAction action)
{
await _service.LogServer(ctx.Guild.Id, ctx.Channel.Id, action.Value);
if (action.Value)
await ReplyConfirmLocalizedAsync(strs.log_all);
else
await ReplyConfirmLocalizedAsync(strs.log_disabled);
}
[NadekoCommand]
[Aliases]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[OwnerOnly]
public async Task LogIgnore()
{
var settings = _service.GetGuildLogSettings(ctx.Guild.Id);
var chs = settings?.LogIgnores.Where(x => x.ItemType == IgnoredItemType.Channel).ToList()
?? new List<IgnoredLogItem>();
var usrs = settings?.LogIgnores.Where(x => x.ItemType == IgnoredItemType.User).ToList()
?? new List<IgnoredLogItem>();
var eb = _eb.Create(ctx)
.WithOkColor()
.AddField(GetText(strs.log_ignored_channels),
chs.Count == 0
? "-"
: string.Join('\n', chs.Select(x => $"{x.LogItemId} | <#{x.LogItemId}>")))
.AddField(GetText(strs.log_ignored_users),
usrs.Count == 0
? "-"
: string.Join('\n', usrs.Select(x => $"{x.LogItemId} | <@{x.LogItemId}>")));
await ctx.Channel.EmbedAsync(eb);
}
[NadekoCommand]
[Aliases]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[OwnerOnly]
public async Task LogIgnore([Leftover] ITextChannel target)
{
target ??= (ITextChannel)ctx.Channel;
var removed = _service.LogIgnore(ctx.Guild.Id, target.Id, IgnoredItemType.Channel);
if (!removed)
await ReplyConfirmLocalizedAsync(
strs.log_ignore_chan(Format.Bold(target.Mention + "(" + target.Id + ")")));
else
await ReplyConfirmLocalizedAsync(
strs.log_not_ignore_chan(Format.Bold(target.Mention + "(" + target.Id + ")")));
}
[NadekoCommand]
[Aliases]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[OwnerOnly]
public async Task LogIgnore([Leftover] IUser target)
{
var removed = _service.LogIgnore(ctx.Guild.Id, target.Id, IgnoredItemType.User);
if (!removed)
await ReplyConfirmLocalizedAsync(
strs.log_ignore_user(Format.Bold(target.Mention + "(" + target.Id + ")")));
else
await ReplyConfirmLocalizedAsync(
strs.log_not_ignore_user(Format.Bold(target.Mention + "(" + target.Id + ")")));
}
[NadekoCommand]
[Aliases]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[OwnerOnly]
public async Task LogEvents()
{
var logSetting = _service.GetGuildLogSettings(ctx.Guild.Id);
var str = string.Join("\n",
Enum.GetNames(typeof(LogType))
.Select(x =>
{
var val = logSetting is null ? null : GetLogProperty(logSetting, Enum.Parse<LogType>(x));
if (val != null)
return $"{Format.Bold(x)} <#{val}>";
return Format.Bold(x);
}));
await SendConfirmAsync(Format.Bold(GetText(strs.log_events)) + "\n" + str);
}
private static ulong? GetLogProperty(LogSetting l, LogType type)
{
switch (type)
{
case LogType.Other:
return l.LogOtherId;
case LogType.MessageUpdated:
return l.MessageUpdatedId;
case LogType.MessageDeleted:
return l.MessageDeletedId;
case LogType.UserJoined:
return l.UserJoinedId;
case LogType.UserLeft:
return l.UserLeftId;
case LogType.UserBanned:
return l.UserBannedId;
case LogType.UserUnbanned:
return l.UserUnbannedId;
case LogType.UserUpdated:
return l.UserUpdatedId;
case LogType.ChannelCreated:
return l.ChannelCreatedId;
case LogType.ChannelDestroyed:
return l.ChannelDestroyedId;
case LogType.ChannelUpdated:
return l.ChannelUpdatedId;
case LogType.UserPresence:
return l.LogUserPresenceId;
case LogType.VoicePresence:
return l.LogVoicePresenceId;
case LogType.VoicePresenceTTS:
return l.LogVoicePresenceTTSId;
case LogType.UserMuted:
return l.UserMutedId;
default:
return null;
}
}
[NadekoCommand]
[Aliases]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[OwnerOnly]
public async Task Log(LogType type)
{
var val = _service.Log(ctx.Guild.Id, ctx.Channel.Id, type);
if (val)
await ReplyConfirmLocalizedAsync(strs.log(Format.Bold(type.ToString())));
else
await ReplyConfirmLocalizedAsync(strs.log_stop(Format.Bold(type.ToString())));
}
}
}

View File

@@ -7,7 +7,7 @@ namespace NadekoBot.Modules.Administration;
public partial class Administration
{
[Group]
public class MuteCommands : NadekoSubmodule<MuteService>
public partial class MuteCommands : NadekoSubmodule<MuteService>
{
private async Task<bool> VerifyMutePermissions(IGuildUser runnerUser, IGuildUser targetUser)
{
@@ -23,11 +23,10 @@ public partial class Administration
return true;
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles)]
public async Task MuteRole([Leftover] IRole role = null)
public async partial Task MuteRole([Leftover] IRole role = null)
{
if (role is null)
{
@@ -48,12 +47,11 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.mute_role_set);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles | GuildPerm.MuteMembers)]
[Priority(0)]
public async Task Mute(IGuildUser target, [Leftover] string reason = "")
public async partial Task Mute(IGuildUser target, [Leftover] string reason = "")
{
try
{
@@ -70,12 +68,11 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles | GuildPerm.MuteMembers)]
[Priority(1)]
public async Task Mute(StoopidTime time, IGuildUser user, [Leftover] string reason = "")
public async partial Task Mute(StoopidTime time, IGuildUser user, [Leftover] string reason = "")
{
if (time.Time < TimeSpan.FromMinutes(1) || time.Time > TimeSpan.FromDays(49))
return;
@@ -95,11 +92,10 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles | GuildPerm.MuteMembers)]
public async Task Unmute(IGuildUser user, [Leftover] string reason = "")
public async partial Task Unmute(IGuildUser user, [Leftover] string reason = "")
{
try
{
@@ -112,12 +108,11 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles)]
[Priority(0)]
public async Task ChatMute(IGuildUser user, [Leftover] string reason = "")
public async partial Task ChatMute(IGuildUser user, [Leftover] string reason = "")
{
try
{
@@ -134,12 +129,11 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles)]
[Priority(1)]
public async Task ChatMute(StoopidTime time, IGuildUser user, [Leftover] string reason = "")
public async partial Task ChatMute(StoopidTime time, IGuildUser user, [Leftover] string reason = "")
{
if (time.Time < TimeSpan.FromMinutes(1) || time.Time > TimeSpan.FromDays(49))
return;
@@ -159,11 +153,10 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles)]
public async Task ChatUnmute(IGuildUser user, [Leftover] string reason = "")
public async partial Task ChatUnmute(IGuildUser user, [Leftover] string reason = "")
{
try
{
@@ -176,12 +169,11 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.MuteMembers)]
[Priority(0)]
public async Task VoiceMute(IGuildUser user, [Leftover] string reason = "")
public async partial Task VoiceMute(IGuildUser user, [Leftover] string reason = "")
{
try
{
@@ -197,12 +189,11 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.MuteMembers)]
[Priority(1)]
public async Task VoiceMute(StoopidTime time, IGuildUser user, [Leftover] string reason = "")
public async partial Task VoiceMute(StoopidTime time, IGuildUser user, [Leftover] string reason = "")
{
if (time.Time < TimeSpan.FromMinutes(1) || time.Time > TimeSpan.FromDays(49))
return;
@@ -221,11 +212,10 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.MuteMembers)]
public async Task VoiceUnmute(IGuildUser user, [Leftover] string reason = "")
public async partial Task VoiceUnmute(IGuildUser user, [Leftover] string reason = "")
{
try
{

View File

@@ -7,15 +7,14 @@ namespace NadekoBot.Modules.Administration;
public partial class Administration
{
[Group]
public class DiscordPermOverrideCommands : NadekoSubmodule<DiscordPermOverrideService>
public partial class DiscordPermOverrideCommands : NadekoSubmodule<DiscordPermOverrideService>
{
// override stats, it should require that the user has managessages guild permission
// .po 'stats' add user guild managemessages
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
public async Task DiscordPermOverride(CommandOrCrInfo cmd, params GuildPerm[] perms)
public async partial Task DiscordPermOverride(CommandOrCrInfo cmd, params GuildPerm[] perms)
{
if (perms is null || perms.Length == 0)
{
@@ -31,11 +30,10 @@ public partial class Administration
Format.Code(cmd.Name)));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
public async Task DiscordPermOverrideReset()
public async partial Task DiscordPermOverrideReset()
{
var result = await PromptUserConfirmAsync(_eb.Create()
.WithOkColor()
@@ -48,11 +46,10 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.perm_override_all);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
public async Task DiscordPermOverrideList(int page = 1)
public async partial Task DiscordPermOverrideList(int page = 1)
{
if (--page < 0)
return;

View File

@@ -6,12 +6,11 @@ namespace NadekoBot.Modules.Administration;
public partial class Administration
{
[Group]
public class PlayingRotateCommands : NadekoSubmodule<PlayingRotateService>
public partial class PlayingRotateCommands : NadekoSubmodule<PlayingRotateService>
{
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task RotatePlaying()
public async partial Task RotatePlaying()
{
if (_service.ToggleRotatePlaying())
await ReplyConfirmLocalizedAsync(strs.ropl_enabled);
@@ -19,20 +18,18 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.ropl_disabled);
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task AddPlaying(ActivityType t, [Leftover] string status)
public async partial Task AddPlaying(ActivityType t, [Leftover] string status)
{
await _service.AddPlaying(t, status);
await ReplyConfirmLocalizedAsync(strs.ropl_added);
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task ListPlaying()
public async partial Task ListPlaying()
{
var statuses = _service.GetRotatingStatuses();
@@ -48,10 +45,9 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task RemovePlaying(int index)
public async partial Task RemovePlaying(int index)
{
index -= 1;

View File

@@ -4,33 +4,30 @@ namespace NadekoBot.Modules.Administration;
public partial class Administration
{
[Group]
public class PrefixCommands : NadekoSubmodule
public partial class PrefixCommands : NadekoSubmodule
{
public enum Set
{
Set
}
[NadekoCommand]
[Aliases]
[Cmd]
[Priority(1)]
public async Task PrefixCommand()
public async partial Task PrefixCommand()
=> await ReplyConfirmLocalizedAsync(strs.prefix_current(Format.Code(CmdHandler.GetPrefix(ctx.Guild))));
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[Priority(0)]
public Task PrefixCommand(Set _, [Leftover] string prefix)
public partial Task PrefixCommand(Set _, [Leftover] string prefix)
=> PrefixCommand(prefix);
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[Priority(0)]
public async Task PrefixCommand([Leftover] string prefix)
public async partial Task PrefixCommand([Leftover] string prefix)
{
if (string.IsNullOrWhiteSpace(prefix))
return;
@@ -41,10 +38,9 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.prefix_new(Format.Code(oldPrefix), Format.Code(newPrefix)));
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task DefPrefix([Leftover] string prefix = null)
public async partial Task DefPrefix([Leftover] string prefix = null)
{
if (string.IsNullOrWhiteSpace(prefix))
{

View File

@@ -9,13 +9,12 @@ namespace NadekoBot.Modules.Administration;
public partial class Administration
{
[Group]
public class ProtectionCommands : NadekoSubmodule<ProtectionService>
public partial class ProtectionCommands : NadekoSubmodule<ProtectionService>
{
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
public async Task AntiAlt()
public async partial Task AntiAlt()
{
if (await _service.TryStopAntiAlt(ctx.Guild.Id))
{
@@ -26,11 +25,10 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.protection_not_running("Anti-Alt"));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
public async Task AntiAlt(StoopidTime minAge, PunishmentAction action, [Leftover] StoopidTime punishTime = null)
public async partial Task AntiAlt(StoopidTime minAge, PunishmentAction action, [Leftover] StoopidTime punishTime = null)
{
var minAgeMinutes = (int)minAge.Time.TotalMinutes;
var punishTimeMinutes = (int?)punishTime?.Time.TotalMinutes ?? 0;
@@ -46,11 +44,10 @@ public partial class Administration
await ctx.OkAsync();
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
public async Task AntiAlt(StoopidTime minAge, PunishmentAction action, [Leftover] IRole role)
public async partial Task AntiAlt(StoopidTime minAge, PunishmentAction action, [Leftover] IRole role)
{
var minAgeMinutes = (int)minAge.Time.TotalMinutes;
@@ -62,35 +59,32 @@ public partial class Administration
await ctx.OkAsync();
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
public Task AntiRaid()
public partial Task AntiRaid()
{
if (_service.TryStopAntiRaid(ctx.Guild.Id))
return ReplyConfirmLocalizedAsync(strs.prot_disable("Anti-Raid"));
return ReplyPendingLocalizedAsync(strs.protection_not_running("Anti-Raid"));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[Priority(1)]
public Task AntiRaid(
public partial Task AntiRaid(
int userThreshold,
int seconds,
PunishmentAction action,
[Leftover] StoopidTime punishTime)
=> InternalAntiRaid(userThreshold, seconds, action, punishTime);
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[Priority(2)]
public Task AntiRaid(int userThreshold, int seconds, PunishmentAction action)
public partial Task AntiRaid(int userThreshold, int seconds, PunishmentAction action)
=> InternalAntiRaid(userThreshold, seconds, action);
private async Task InternalAntiRaid(
@@ -133,23 +127,21 @@ public partial class Administration
$"{ctx.User.Mention} {GetAntiRaidString(stats)}");
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
public Task AntiSpam()
public partial Task AntiSpam()
{
if (_service.TryStopAntiSpam(ctx.Guild.Id))
return ReplyConfirmLocalizedAsync(strs.prot_disable("Anti-Spam"));
return ReplyPendingLocalizedAsync(strs.protection_not_running("Anti-Spam"));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[Priority(0)]
public Task AntiSpam(int messageCount, PunishmentAction action, [Leftover] IRole role)
public partial Task AntiSpam(int messageCount, PunishmentAction action, [Leftover] IRole role)
{
if (action != PunishmentAction.AddRole)
return Task.CompletedTask;
@@ -157,23 +149,21 @@ public partial class Administration
return InternalAntiSpam(messageCount, action, null, role);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[Priority(1)]
public Task AntiSpam(int messageCount, PunishmentAction action, [Leftover] StoopidTime punishTime)
public partial Task AntiSpam(int messageCount, PunishmentAction action, [Leftover] StoopidTime punishTime)
=> InternalAntiSpam(messageCount, action, punishTime);
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[Priority(2)]
public Task AntiSpam(int messageCount, PunishmentAction action)
public partial Task AntiSpam(int messageCount, PunishmentAction action)
=> InternalAntiSpam(messageCount, action);
public async Task InternalAntiSpam(
private async Task InternalAntiSpam(
int messageCount,
PunishmentAction action,
StoopidTime timeData = null,
@@ -196,11 +186,10 @@ public partial class Administration
$"{ctx.User.Mention} {GetAntiSpamString(stats)}");
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
public async Task AntispamIgnore()
public async partial Task AntispamIgnore()
{
var added = await _service.AntiSpamIgnoreAsync(ctx.Guild.Id, ctx.Channel.Id);
@@ -216,10 +205,9 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.spam_not_ignore("Anti-Spam"));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
public async Task AntiList()
public async partial Task AntiList()
{
var (spam, raid, alt) = _service.GetAntiStats(ctx.Guild.Id);

View File

@@ -6,15 +6,14 @@ namespace NadekoBot.Modules.Administration;
public partial class Administration
{
[Group]
public class PruneCommands : NadekoSubmodule<PruneService>
public partial class PruneCommands : NadekoSubmodule<PruneService>
{
private static readonly TimeSpan twoWeeks = TimeSpan.FromDays(14);
//delets her own messages, no perm required
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
public async Task Prune(string parameter = null)
public async partial Task Prune(string parameter = null)
{
var user = await ctx.Guild.GetCurrentUserAsync();
@@ -26,13 +25,12 @@ public partial class Administration
}
// prune x
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(ChannelPerm.ManageMessages)]
[BotPerm(ChannelPerm.ManageMessages)]
[Priority(1)]
public async Task Prune(int count, string parameter = null)
public async partial Task Prune(int count, string parameter = null)
{
count++;
if (count < 1)
@@ -47,23 +45,21 @@ public partial class Administration
}
//prune @user [x]
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(ChannelPerm.ManageMessages)]
[BotPerm(ChannelPerm.ManageMessages)]
[Priority(0)]
public Task Prune(IGuildUser user, int count = 100, string parameter = null)
public partial Task Prune(IGuildUser user, int count = 100, string parameter = null)
=> Prune(user.Id, count, parameter);
//prune userid [x]
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(ChannelPerm.ManageMessages)]
[BotPerm(ChannelPerm.ManageMessages)]
[Priority(0)]
public async Task Prune(ulong userId, int count = 100, string parameter = null)
public async partial Task Prune(ulong userId, int count = 100, string parameter = null)
{
if (userId == ctx.User.Id)
count++;

View File

@@ -9,7 +9,7 @@ namespace NadekoBot.Modules.Administration;
public partial class Administration
{
public class RoleCommands : NadekoSubmodule<RoleCommandsService>
public partial class RoleCommands : NadekoSubmodule<RoleCommandsService>
{
public enum Exclude { Excl }
@@ -88,52 +88,47 @@ public partial class Administration
await ReplyErrorLocalizedAsync(strs.reaction_roles_full);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[NoPublicBot]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
[Priority(0)]
public Task ReactionRoles(ulong messageId, params string[] input)
public partial Task ReactionRoles(ulong messageId, params string[] input)
=> InternalReactionRoles(false, messageId, input);
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[NoPublicBot]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
[Priority(1)]
public Task ReactionRoles(ulong messageId, Exclude _, params string[] input)
public partial Task ReactionRoles(ulong messageId, Exclude _, params string[] input)
=> InternalReactionRoles(true, messageId, input);
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[NoPublicBot]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
[Priority(0)]
public Task ReactionRoles(params string[] input)
public partial Task ReactionRoles(params string[] input)
=> InternalReactionRoles(false, null, input);
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[NoPublicBot]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
[Priority(1)]
public Task ReactionRoles(Exclude _, params string[] input)
public partial Task ReactionRoles(Exclude _, params string[] input)
=> InternalReactionRoles(true, null, input);
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[NoPublicBot]
[UserPerm(GuildPerm.ManageRoles)]
public async Task ReactionRolesList()
public async partial Task ReactionRolesList()
{
var embed = _eb.Create().WithOkColor();
if (!_service.Get(ctx.Guild.Id, out var rrs) || !rrs.Any())
@@ -157,12 +152,11 @@ public partial class Administration
await ctx.Channel.EmbedAsync(embed);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[NoPublicBot]
[UserPerm(GuildPerm.ManageRoles)]
public async Task ReactionRolesRemove(int index)
public async partial Task ReactionRolesRemove(int index)
{
if (index < 1 || !_service.Get(ctx.Guild.Id, out var rrs) || !rrs.Any() || rrs.Count < index)
return;
@@ -172,12 +166,11 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.reaction_role_removed(index + 1));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
public async Task SetRole(IGuildUser targetUser, [Leftover] IRole roleToAdd)
public async partial Task SetRole(IGuildUser targetUser, [Leftover] IRole roleToAdd)
{
var runnerUser = (IGuildUser)ctx.User;
var runnerMaxRolePosition = runnerUser.GetRoles().Max(x => x.Position);
@@ -197,12 +190,11 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
public async Task RemoveRole(IGuildUser targetUser, [Leftover] IRole roleToRemove)
public async partial Task RemoveRole(IGuildUser targetUser, [Leftover] IRole roleToRemove)
{
var runnerUser = (IGuildUser)ctx.User;
if (ctx.User.Id != runnerUser.Guild.OwnerId
@@ -220,12 +212,11 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
public async Task RenameRole(IRole roleToEdit, [Leftover] string newname)
public async partial Task RenameRole(IRole roleToEdit, [Leftover] string newname)
{
var guser = (IGuildUser)ctx.User;
if (ctx.User.Id != guser.Guild.OwnerId && guser.GetRoles().Max(x => x.Position) <= roleToEdit.Position)
@@ -247,12 +238,11 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
public async Task RemoveAllRoles([Leftover] IGuildUser user)
public async partial Task RemoveAllRoles([Leftover] IGuildUser user)
{
var guser = (IGuildUser)ctx.User;
@@ -273,12 +263,11 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
public async Task CreateRole([Leftover] string roleName = null)
public async partial Task CreateRole([Leftover] string roleName = null)
{
if (string.IsNullOrWhiteSpace(roleName))
return;
@@ -287,12 +276,11 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.cr(Format.Bold(r.Name)));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
public async Task DeleteRole([Leftover] IRole role)
public async partial Task DeleteRole([Leftover] IRole role)
{
var guser = (IGuildUser)ctx.User;
if (ctx.User.Id != guser.Guild.OwnerId && guser.GetRoles().Max(x => x.Position) <= role.Position)
@@ -302,12 +290,11 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.dr(Format.Bold(role.Name)));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
public async Task RoleHoist(IRole role)
public async partial Task RoleHoist(IRole role)
{
var newHoisted = !role.IsHoisted;
await role.ModifyAsync(r => r.Hoist = newHoisted);
@@ -317,20 +304,18 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.rolehoist_disabled(Format.Bold(role.Name)));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[Priority(1)]
public async Task RoleColor([Leftover] IRole role)
public async partial Task RoleColor([Leftover] IRole role)
=> await SendConfirmAsync("Role Color", role.Color.RawValue.ToString("x6"));
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
[Priority(0)]
public async Task RoleColor(Color color, [Leftover] IRole role)
public async partial Task RoleColor(Color color, [Leftover] IRole role)
{
try
{

View File

@@ -7,7 +7,7 @@ namespace NadekoBot.Modules.Administration;
public partial class Administration
{
[Group]
public class SelfCommands : NadekoSubmodule<SelfService>
public partial class SelfCommands : NadekoSubmodule<SelfService>
{
public enum SettableUserStatus
{
@@ -28,12 +28,11 @@ public partial class Administration
_coord = coord;
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[OwnerOnly]
public async Task StartupCommandAdd([Leftover] string cmdText)
public async partial Task StartupCommandAdd([Leftover] string cmdText)
{
if (cmdText.StartsWith(Prefix + "die", StringComparison.InvariantCulture))
return;
@@ -62,12 +61,11 @@ public partial class Administration
.AddField(GetText(strs.command_text), cmdText));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[OwnerOnly]
public async Task AutoCommandAdd(int interval, [Leftover] string cmdText)
public async partial Task AutoCommandAdd(int interval, [Leftover] string cmdText)
{
if (cmdText.StartsWith(Prefix + "die", StringComparison.InvariantCulture))
return;
@@ -92,11 +90,10 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.autocmd_add(Format.Code(Format.Sanitize(cmdText)), cmd.Interval));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[OwnerOnly]
public async Task StartupCommandsList(int page = 1)
public async partial Task StartupCommandsList(int page = 1)
{
if (page-- < 1)
return;
@@ -121,11 +118,10 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[OwnerOnly]
public async Task AutoCommandsList(int page = 1)
public async partial Task AutoCommandsList(int page = 1)
{
if (page-- < 1)
return;
@@ -153,10 +149,9 @@ public partial class Administration
private string GetIntervalText(int interval)
=> $"[{GetText(strs.interval)}]: {interval}";
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task Wait(int miliseconds)
public async partial Task Wait(int miliseconds)
{
if (miliseconds <= 0)
return;
@@ -171,12 +166,11 @@ public partial class Administration
await Task.Delay(miliseconds);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[OwnerOnly]
public async Task AutoCommandRemove([Leftover] int index)
public async partial Task AutoCommandRemove([Leftover] int index)
{
if (!_service.RemoveAutoCommand(--index, out _))
{
@@ -187,11 +181,10 @@ public partial class Administration
await ctx.OkAsync();
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[OwnerOnly]
public async Task StartupCommandRemove([Leftover] int index)
public async partial Task StartupCommandRemove([Leftover] int index)
{
if (!_service.RemoveStartupCommand(--index, out _))
await ReplyErrorLocalizedAsync(strs.scrm_fail);
@@ -199,22 +192,20 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.scrm);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[OwnerOnly]
public async Task StartupCommandsClear()
public async partial Task StartupCommandsClear()
{
_service.ClearStartupCommands();
await ReplyConfirmLocalizedAsync(strs.startcmds_cleared);
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task ForwardMessages()
public async partial Task ForwardMessages()
{
var enabled = _service.ForwardMessages();
@@ -224,10 +215,9 @@ public partial class Administration
await ReplyPendingLocalizedAsync(strs.fwdm_stop);
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task ForwardToAll()
public async partial Task ForwardToAll()
{
var enabled = _service.ForwardToAll();
@@ -237,9 +227,8 @@ public partial class Administration
await ReplyPendingLocalizedAsync(strs.fwall_stop);
}
[NadekoCommand]
[Aliases]
public async Task ShardStats(int page = 1)
[Cmd]
public async partial Task ShardStats(int page = 1)
{
if (--page < 0)
return;
@@ -290,10 +279,9 @@ public partial class Administration
};
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task RestartShard(int shardId)
public async partial Task RestartShard(int shardId)
{
var success = _coord.RestartShard(shardId);
if (success)
@@ -302,17 +290,15 @@ public partial class Administration
await ReplyErrorLocalizedAsync(strs.no_shard_id);
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public Task Leave([Leftover] string guildStr)
public partial Task Leave([Leftover] string guildStr)
=> _service.LeaveGuild(guildStr);
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task Die(bool graceful = false)
public async partial Task Die(bool graceful = false)
{
try
{
@@ -327,10 +313,9 @@ public partial class Administration
_coord.Die(graceful);
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task Restart()
public async partial Task Restart()
{
var success = _coord.RestartBot();
if (!success)
@@ -343,10 +328,9 @@ public partial class Administration
catch { }
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task SetName([Leftover] string newName)
public async partial Task SetName([Leftover] string newName)
{
if (string.IsNullOrWhiteSpace(newName))
return;
@@ -363,12 +347,11 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.bot_name(Format.Bold(newName)));
}
[NadekoCommand]
[Aliases]
[Cmd]
[UserPerm(GuildPerm.ManageNicknames)]
[BotPerm(GuildPerm.ChangeNickname)]
[Priority(0)]
public async Task SetNick([Leftover] string newNick = null)
public async partial Task SetNick([Leftover] string newNick = null)
{
if (string.IsNullOrWhiteSpace(newNick))
return;
@@ -378,12 +361,11 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.bot_nick(Format.Bold(newNick) ?? "-"));
}
[NadekoCommand]
[Aliases]
[Cmd]
[BotPerm(GuildPerm.ManageNicknames)]
[UserPerm(GuildPerm.ManageNicknames)]
[Priority(1)]
public async Task SetNick(IGuildUser gu, [Leftover] string newNick = null)
public async partial Task SetNick(IGuildUser gu, [Leftover] string newNick = null)
{
var sg = (SocketGuild)ctx.Guild;
if (sg.OwnerId == gu.Id
@@ -398,30 +380,27 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.user_nick(Format.Bold(gu.ToString()), Format.Bold(newNick) ?? "-"));
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task SetStatus([Leftover] SettableUserStatus status)
public async partial Task SetStatus([Leftover] SettableUserStatus status)
{
await _client.SetStatusAsync(SettableUserStatusToUserStatus(status));
await ReplyConfirmLocalizedAsync(strs.bot_status(Format.Bold(status.ToString())));
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task SetAvatar([Leftover] string img = null)
public async partial Task SetAvatar([Leftover] string img = null)
{
var success = await _service.SetAvatar(img);
if (success) await ReplyConfirmLocalizedAsync(strs.set_avatar);
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task SetGame(ActivityType type, [Leftover] string game = null)
public async partial Task SetGame(ActivityType type, [Leftover] string game = null)
{
var rep = new ReplacementBuilder().WithDefault(Context).Build();
@@ -430,10 +409,9 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.set_game);
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task SetStream(string url, [Leftover] string name = null)
public async partial Task SetStream(string url, [Leftover] string name = null)
{
name ??= "";
@@ -442,10 +420,9 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.set_stream);
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task Send(string where, [Leftover] SmartText text = null)
public async partial Task Send(string where, [Leftover] SmartText text = null)
{
var ids = where.Split('|');
if (ids.Length != 2)
@@ -489,28 +466,25 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.message_sent);
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task ImagesReload()
public async partial Task ImagesReload()
{
await _service.ReloadImagesAsync();
await ReplyConfirmLocalizedAsync(strs.images_loading);
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task StringsReload()
public async partial Task StringsReload()
{
_strings.Reload();
await ReplyConfirmLocalizedAsync(strs.bot_strings_reloaded);
}
[NadekoCommand]
[Aliases]
[Cmd]
[OwnerOnly]
public async Task CoordReload()
public async partial Task CoordReload()
{
await _coord.Reload();
await ctx.OkAsync();

View File

@@ -7,14 +7,13 @@ namespace NadekoBot.Modules.Administration;
public partial class Administration
{
[Group]
public class SelfAssignedRolesCommands : NadekoSubmodule<SelfAssignedRolesService>
public partial class SelfAssignedRolesCommands : NadekoSubmodule<SelfAssignedRolesService>
{
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageMessages)]
[BotPerm(GuildPerm.ManageMessages)]
public async Task AdSarm()
public async partial Task AdSarm()
{
var newVal = _service.ToggleAdSarm(ctx.Guild.Id);
@@ -24,22 +23,20 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.adsarm_disable(Prefix));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
[Priority(1)]
public Task Asar([Leftover] IRole role)
public partial Task Asar([Leftover] IRole role)
=> Asar(0, role);
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
[Priority(0)]
public async Task Asar(int group, [Leftover] IRole role)
public async partial Task Asar(int group, [Leftover] IRole role)
{
var guser = (IGuildUser)ctx.User;
if (ctx.User.Id != guser.Guild.OwnerId && guser.GetRoles().Max(x => x.Position) <= role.Position)
@@ -54,13 +51,12 @@ public partial class Administration
await ReplyErrorLocalizedAsync(strs.role_in_list(Format.Bold(role.Name)));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
[Priority(0)]
public async Task Sargn(int group, [Leftover] string name = null)
public async partial Task Sargn(int group, [Leftover] string name = null)
{
var guser = (IGuildUser)ctx.User;
@@ -73,11 +69,10 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.group_name_removed(Format.Bold(group.ToString())));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles)]
public async Task Rsar([Leftover] IRole role)
public async partial Task Rsar([Leftover] IRole role)
{
var guser = (IGuildUser)ctx.User;
if (ctx.User.Id != guser.Guild.OwnerId && guser.GetRoles().Max(x => x.Position) <= role.Position)
@@ -90,10 +85,9 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.self_assign_rem(Format.Bold(role.Name)));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
public async Task Lsar(int page = 1)
public async partial Task Lsar(int page = 1)
{
if (--page < 0)
return;
@@ -147,12 +141,11 @@ public partial class Administration
20);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
public async Task Togglexclsar()
public async partial Task Togglexclsar()
{
var areExclusive = _service.ToggleEsar(ctx.Guild.Id);
if (areExclusive)
@@ -161,12 +154,11 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.self_assign_no_excl);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
public async Task RoleLevelReq(int level, [Leftover] IRole role)
public async partial Task RoleLevelReq(int level, [Leftover] IRole role)
{
if (level < 0)
return;
@@ -183,23 +175,22 @@ public partial class Administration
Format.Bold(level.ToString())));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
public async Task Iam([Leftover] IRole role)
public async partial Task Iam([Leftover] IRole role)
{
var guildUser = (IGuildUser)ctx.User;
var (result, autoDelete, extra) = await _service.Assign(guildUser, role);
IUserMessage msg;
if (result == SelfAssignedRolesService.AssignResult.Err_Not_Assignable)
if (result == SelfAssignedRolesService.AssignResult.ErrNotAssignable)
msg = await ReplyErrorLocalizedAsync(strs.self_assign_not);
else if (result == SelfAssignedRolesService.AssignResult.Err_Lvl_Req)
else if (result == SelfAssignedRolesService.AssignResult.ErrLvlReq)
msg = await ReplyErrorLocalizedAsync(strs.self_assign_not_level(Format.Bold(extra.ToString())));
else if (result == SelfAssignedRolesService.AssignResult.Err_Already_Have)
else if (result == SelfAssignedRolesService.AssignResult.ErrAlreadyHave)
msg = await ReplyErrorLocalizedAsync(strs.self_assign_already(Format.Bold(role.Name)));
else if (result == SelfAssignedRolesService.AssignResult.Err_Not_Perms)
else if (result == SelfAssignedRolesService.AssignResult.ErrNotPerms)
msg = await ReplyErrorLocalizedAsync(strs.self_assign_perms);
else
msg = await ReplyConfirmLocalizedAsync(strs.self_assign_success(Format.Bold(role.Name)));
@@ -211,21 +202,20 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
public async Task Iamnot([Leftover] IRole role)
public async partial Task Iamnot([Leftover] IRole role)
{
var guildUser = (IGuildUser)ctx.User;
var (result, autoDelete) = await _service.Remove(guildUser, role);
IUserMessage msg;
if (result == SelfAssignedRolesService.RemoveResult.Err_Not_Assignable)
if (result == SelfAssignedRolesService.RemoveResult.ErrNotAssignable)
msg = await ReplyErrorLocalizedAsync(strs.self_assign_not);
else if (result == SelfAssignedRolesService.RemoveResult.Err_Not_Have)
else if (result == SelfAssignedRolesService.RemoveResult.ErrNotHave)
msg = await ReplyErrorLocalizedAsync(strs.self_assign_not_have(Format.Bold(role.Name)));
else if (result == SelfAssignedRolesService.RemoveResult.Err_Not_Perms)
else if (result == SelfAssignedRolesService.RemoveResult.ErrNotPerms)
msg = await ReplyErrorLocalizedAsync(strs.self_assign_perms);
else
msg = await ReplyConfirmLocalizedAsync(strs.self_assign_remove(Format.Bold(role.Name)));

View File

@@ -11,18 +11,18 @@ public class SelfAssignedRolesService : INService
public enum AssignResult
{
Assigned, // successfully removed
Err_Not_Assignable, // not assignable (error)
Err_Already_Have, // you already have that role (error)
Err_Not_Perms, // bot doesn't have perms (error)
Err_Lvl_Req // you are not required level (error)
ErrNotAssignable, // not assignable (error)
ErrAlreadyHave, // you already have that role (error)
ErrNotPerms, // bot doesn't have perms (error)
ErrLvlReq // you are not required level (error)
}
public enum RemoveResult
{
Removed, // successfully removed
Err_Not_Assignable, // not assignable (error)
Err_Not_Have, // you don't have a role you want to remove (error)
Err_Not_Perms // bot doesn't have perms (error)
ErrNotAssignable, // not assignable (error)
ErrNotHave, // you don't have a role you want to remove (error)
ErrNotPerms // bot doesn't have perms (error)
}
private readonly DbService _db;
@@ -64,10 +64,10 @@ public class SelfAssignedRolesService : INService
var theRoleYouWant = roles.FirstOrDefault(r => r.RoleId == role.Id);
if (theRoleYouWant is null)
return (AssignResult.Err_Not_Assignable, autoDelete, null);
return (AssignResult.ErrNotAssignable, autoDelete, null);
if (theRoleYouWant.LevelRequirement > userLevelData.Level)
return (AssignResult.Err_Lvl_Req, autoDelete, theRoleYouWant.LevelRequirement);
if (guildUser.RoleIds.Contains(role.Id)) return (AssignResult.Err_Already_Have, autoDelete, null);
return (AssignResult.ErrLvlReq, autoDelete, theRoleYouWant.LevelRequirement);
if (guildUser.RoleIds.Contains(role.Id)) return (AssignResult.ErrAlreadyHave, autoDelete, null);
var roleIds = roles.Where(x => x.Group == theRoleYouWant.Group).Select(x => x.RoleId).ToArray();
if (exclusive)
@@ -96,7 +96,7 @@ public class SelfAssignedRolesService : INService
}
catch (Exception ex)
{
return (AssignResult.Err_Not_Perms, autoDelete, ex);
return (AssignResult.ErrNotPerms, autoDelete, ex);
}
return (AssignResult.Assigned, autoDelete, null);
@@ -135,15 +135,15 @@ public class SelfAssignedRolesService : INService
var (autoDelete, _, roles) = GetAdAndRoles(guildUser.Guild.Id);
if (roles.FirstOrDefault(r => r.RoleId == role.Id) is null)
return (RemoveResult.Err_Not_Assignable, autoDelete);
if (!guildUser.RoleIds.Contains(role.Id)) return (RemoveResult.Err_Not_Have, autoDelete);
return (RemoveResult.ErrNotAssignable, autoDelete);
if (!guildUser.RoleIds.Contains(role.Id)) return (RemoveResult.ErrNotHave, autoDelete);
try
{
await guildUser.RemoveRoleAsync(role);
}
catch (Exception)
{
return (RemoveResult.Err_Not_Perms, autoDelete);
return (RemoveResult.ErrNotPerms, autoDelete);
}
return (RemoveResult.Removed, autoDelete);

View File

@@ -118,11 +118,9 @@ public sealed class ImageOnlyChannelService : IEarlyBehavior
if (user.GetRoles().Max(x => x.Position) >= botUser.GetRoles().Max(x => x.Position))
return false;
// can't modify channel perms if not admin apparently
if (!botUser.GuildPermissions.ManageGuild)
if (!botUser.GetPermissions(tch).ManageChannel)
{
ToggleImageOnlyChannel(tch.GuildId, tch.Id, true);
;
return false;
}
@@ -142,7 +140,7 @@ public sealed class ImageOnlyChannelService : IEarlyBehavior
}
catch (Exception ex)
{
Log.Error(ex, "Error deleting message {MessageId} in image-only channel {ChannelId}.", msg.Id, tch.Id);
Log.Error(ex, "Error deleting message {MessageId} in image-only channel {ChannelId}", msg.Id, tch.Id);
}
return true;

View File

@@ -6,12 +6,11 @@ namespace NadekoBot.Modules.Administration;
public partial class Administration
{
[Group]
public class TimeZoneCommands : NadekoSubmodule<GuildTimezoneService>
public partial class TimeZoneCommands : NadekoSubmodule<GuildTimezoneService>
{
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
public async Task Timezones(int page = 1)
public async partial Task Timezones(int page = 1)
{
page--;
@@ -47,17 +46,15 @@ public partial class Administration
timezonesPerPage);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
public async Task Timezone()
public async partial Task Timezone()
=> await ReplyConfirmLocalizedAsync(strs.timezone_guild(_service.GetTimeZoneOrUtc(ctx.Guild.Id)));
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
public async Task Timezone([Leftover] string id)
public async partial Task Timezone([Leftover] string id)
{
TimeZoneInfo tz;
try { tz = TimeZoneInfo.FindSystemTimeZoneById(id); }

View File

@@ -11,7 +11,7 @@ namespace NadekoBot.Modules.Administration;
public partial class Administration
{
[Group]
public class UserPunishCommands : NadekoSubmodule<UserPunishService>
public partial class UserPunishCommands : NadekoSubmodule<UserPunishService>
{
public enum AddRole
{
@@ -48,18 +48,16 @@ public partial class Administration
return true;
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
public Task Warn(IGuildUser user, [Leftover] string reason = null)
public partial Task Warn(IGuildUser user, [Leftover] string reason = null)
=> Warn(1, user, reason);
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
public async Task Warn(int weight, IGuildUser user, [Leftover] string reason = null)
public async partial Task Warn(int weight, IGuildUser user, [Leftover] string reason = null)
{
if (weight <= 0)
return;
@@ -109,13 +107,12 @@ public partial class Administration
await ctx.Channel.EmbedAsync(embed);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[NadekoOptions(typeof(WarnExpireOptions))]
[Priority(1)]
public async Task WarnExpire()
public async partial Task WarnExpire()
{
var expireDays = await _service.GetWarnExpire(ctx.Guild.Id);
@@ -125,13 +122,12 @@ public partial class Administration
await ReplyErrorLocalizedAsync(strs.warns_expire_in(expireDays));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.Administrator)]
[NadekoOptions(typeof(WarnExpireOptions))]
[Priority(2)]
public async Task WarnExpire(int days, params string[] args)
public async partial Task WarnExpire(int days, params string[] args)
{
if (days is < 0 or > 366)
return;
@@ -153,23 +149,21 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.warn_expire_set_clear(Format.Bold(days.ToString())));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
[Priority(2)]
public Task Warnlog(int page, [Leftover] IGuildUser user = null)
public partial Task Warnlog(int page, [Leftover] IGuildUser user = null)
{
user ??= (IGuildUser)ctx.User;
return Warnlog(page, user.Id);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[Priority(3)]
public Task Warnlog(IGuildUser user = null)
public partial Task Warnlog(IGuildUser user = null)
{
user ??= (IGuildUser)ctx.User;
@@ -178,20 +172,18 @@ public partial class Administration
: Task.CompletedTask;
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
[Priority(0)]
public Task Warnlog(int page, ulong userId)
public partial Task Warnlog(int page, ulong userId)
=> InternalWarnlog(userId, page - 1);
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
[Priority(1)]
public Task Warnlog(ulong userId)
public partial Task Warnlog(ulong userId)
=> InternalWarnlog(userId, 0);
private async Task InternalWarnlog(ulong userId, int inputPage)
@@ -244,11 +236,10 @@ public partial class Administration
9);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
public async Task WarnlogAll(int page = 1)
public async partial Task WarnlogAll(int page = 1)
{
if (--page < 0)
return;
@@ -279,18 +270,16 @@ public partial class Administration
15);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
public Task Warnclear(IGuildUser user, int index = 0)
public partial Task Warnclear(IGuildUser user, int index = 0)
=> Warnclear(user.Id, index);
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
public async Task Warnclear(ulong userId, int index = 0)
public async partial Task Warnclear(ulong userId, int index = 0)
{
if (index < 0)
return;
@@ -309,12 +298,11 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
[Priority(1)]
public async Task WarnPunish(
public async partial Task WarnPunish(
int number,
AddRole _,
IRole role,
@@ -343,11 +331,10 @@ public partial class Administration
Format.Bold(time.Input)));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
public async Task WarnPunish(int number, PunishmentAction punish, StoopidTime time = null)
public async partial Task WarnPunish(int number, PunishmentAction punish, StoopidTime time = null)
{
// this should never happen. Addrole has its own method with higher priority
if (punish == PunishmentAction.AddRole)
@@ -367,21 +354,19 @@ public partial class Administration
Format.Bold(time.Input)));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
public async Task WarnPunish(int number)
public async partial Task WarnPunish(int number)
{
if (!_service.WarnPunishRemove(ctx.Guild.Id, number)) return;
await ReplyConfirmLocalizedAsync(strs.warn_punish_rem(Format.Bold(number.ToString())));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
public async Task WarnPunishList()
public async partial Task WarnPunishList()
{
var ps = _service.WarnPunishList(ctx.Guild.Id);
@@ -395,13 +380,12 @@ public partial class Administration
await SendConfirmAsync(GetText(strs.warn_punish_list), list);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
[BotPerm(GuildPerm.BanMembers)]
[Priority(1)]
public async Task Ban(StoopidTime time, IUser user, [Leftover] string msg = null)
public async partial Task Ban(StoopidTime time, IUser user, [Leftover] string msg = null)
{
if (time.Time > TimeSpan.FromDays(49))
return;
@@ -440,13 +424,12 @@ public partial class Administration
await ctx.Channel.EmbedAsync(toSend);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
[BotPerm(GuildPerm.BanMembers)]
[Priority(0)]
public async Task Ban(ulong userId, [Leftover] string msg = null)
public async partial Task Ban(ulong userId, [Leftover] string msg = null)
{
var user = await ((DiscordSocketClient)Context.Client).Rest.GetGuildUserAsync(ctx.Guild.Id, userId);
if (user is null)
@@ -464,13 +447,12 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
[BotPerm(GuildPerm.BanMembers)]
[Priority(2)]
public async Task Ban(IGuildUser user, [Leftover] string msg = null)
public async partial Task Ban(IGuildUser user, [Leftover] string msg = null)
{
if (!await CheckRoleHierarchy(user))
return;
@@ -501,12 +483,11 @@ public partial class Administration
await ctx.Channel.EmbedAsync(toSend);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
[BotPerm(GuildPerm.BanMembers)]
public async Task BanMessage([Leftover] string message = null)
public async partial Task BanMessage([Leftover] string message = null)
{
if (message is null)
{
@@ -525,33 +506,30 @@ public partial class Administration
await ctx.OkAsync();
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
[BotPerm(GuildPerm.BanMembers)]
public async Task BanMsgReset()
public async partial Task BanMsgReset()
{
_service.SetBanTemplate(ctx.Guild.Id, null);
await ctx.OkAsync();
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
[BotPerm(GuildPerm.BanMembers)]
[Priority(0)]
public Task BanMessageTest([Leftover] string reason = null)
public partial Task BanMessageTest([Leftover] string reason = null)
=> InternalBanMessageTest(reason, null);
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
[BotPerm(GuildPerm.BanMembers)]
[Priority(1)]
public Task BanMessageTest(StoopidTime duration, [Leftover] string reason = null)
public partial Task BanMessageTest(StoopidTime duration, [Leftover] string reason = null)
=> InternalBanMessageTest(reason, duration.Time);
private async Task InternalBanMessageTest(string reason, TimeSpan? duration)
@@ -579,12 +557,11 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
[BotPerm(GuildPerm.BanMembers)]
public async Task Unban([Leftover] string user)
public async partial Task Unban([Leftover] string user)
{
var bans = await ctx.Guild.GetBansAsync();
@@ -599,12 +576,11 @@ public partial class Administration
await UnbanInternal(bun.User);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
[BotPerm(GuildPerm.BanMembers)]
public async Task Unban(ulong userId)
public async partial Task Unban(ulong userId)
{
var bans = await ctx.Guild.GetBansAsync();
@@ -626,20 +602,18 @@ public partial class Administration
await ReplyConfirmLocalizedAsync(strs.unbanned_user(Format.Bold(user.ToString())));
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.KickMembers | GuildPerm.ManageMessages)]
[BotPerm(GuildPerm.BanMembers)]
public Task Softban(IGuildUser user, [Leftover] string msg = null)
public partial Task Softban(IGuildUser user, [Leftover] string msg = null)
=> SoftbanInternal(user, msg);
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.KickMembers | GuildPerm.ManageMessages)]
[BotPerm(GuildPerm.BanMembers)]
public async Task Softban(ulong userId, [Leftover] string msg = null)
public async partial Task Softban(ulong userId, [Leftover] string msg = null)
{
var user = await ((DiscordSocketClient)Context.Client).Rest.GetGuildUserAsync(ctx.Guild.Id, userId);
if (user is null)
@@ -679,22 +653,20 @@ public partial class Administration
await ctx.Channel.EmbedAsync(toSend);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.KickMembers)]
[BotPerm(GuildPerm.KickMembers)]
[Priority(1)]
public Task Kick(IGuildUser user, [Leftover] string msg = null)
public partial Task Kick(IGuildUser user, [Leftover] string msg = null)
=> KickInternal(user, msg);
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.KickMembers)]
[BotPerm(GuildPerm.KickMembers)]
[Priority(0)]
public async Task Kick(ulong userId, [Leftover] string msg = null)
public async partial Task Kick(ulong userId, [Leftover] string msg = null)
{
var user = await ((DiscordSocketClient)Context.Client).Rest.GetGuildUserAsync(ctx.Guild.Id, userId);
if (user is null)
@@ -703,7 +675,7 @@ public partial class Administration
await KickInternal(user, msg);
}
public async Task KickInternal(IGuildUser user, string msg = null)
private async Task KickInternal(IGuildUser user, string msg = null)
{
if (!await CheckRoleHierarchy(user))
return;
@@ -732,13 +704,12 @@ public partial class Administration
await ctx.Channel.EmbedAsync(toSend);
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
[BotPerm(GuildPerm.BanMembers)]
[Ratelimit(30)]
public async Task MassBan(params string[] userStrings)
public async partial Task MassBan(params string[] userStrings)
{
if (userStrings.Length == 0)
return;
@@ -806,13 +777,12 @@ public partial class Administration
.Build());
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
[UserPerm(GuildPerm.BanMembers)]
[BotPerm(GuildPerm.BanMembers)]
[OwnerOnly]
public async Task MassKill([Leftover] string people)
public async partial Task MassKill([Leftover] string people)
{
if (string.IsNullOrWhiteSpace(people))
return;

View File

@@ -6,14 +6,13 @@ namespace NadekoBot.Modules.Administration;
public partial class Administration
{
[Group]
public class VcRoleCommands : NadekoSubmodule<VcRoleService>
public partial class VcRoleCommands : NadekoSubmodule<VcRoleService>
{
[NadekoCommand]
[Aliases]
[Cmd]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
[RequireContext(ContextType.Guild)]
public async Task VcRoleRm(ulong vcId)
public async partial Task VcRoleRm(ulong vcId)
{
if (_service.RemoveVcRole(ctx.Guild.Id, vcId))
await ReplyConfirmLocalizedAsync(strs.vcrole_removed(Format.Bold(vcId.ToString())));
@@ -21,12 +20,11 @@ public partial class Administration
await ReplyErrorLocalizedAsync(strs.vcrole_not_found);
}
[NadekoCommand]
[Aliases]
[Cmd]
[UserPerm(GuildPerm.ManageRoles)]
[BotPerm(GuildPerm.ManageRoles)]
[RequireContext(ContextType.Guild)]
public async Task VcRole([Leftover] IRole role = null)
public async partial Task VcRole([Leftover] IRole role = null)
{
var user = (IGuildUser)ctx.User;
@@ -50,10 +48,9 @@ public partial class Administration
}
}
[NadekoCommand]
[Aliases]
[Cmd]
[RequireContext(ContextType.Guild)]
public async Task VcRoleList()
public async partial Task VcRoleList()
{
var guild = (SocketGuild)ctx.Guild;
string text;