mirror of
https://gitlab.com/Kwoth/nadekobot.git
synced 2025-09-10 17:28:27 -04:00
.remindl and .remindrm commands now supports optional 'server' parameter for Administrators which allows them to delete any reminder created on the server
This commit is contained in:
@@ -4,6 +4,9 @@ Experimental changelog. Mostly based on [keepachangelog](https://keepachangelog.
|
|||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- `.remindl` and `.remindrm` commands now supports optional 'server' parameter for Administrators which allows them to delete any reminder created on the server
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- `.crypto` now supports top 5000 coins
|
- `.crypto` now supports top 5000 coins
|
||||||
|
|
||||||
|
@@ -18,5 +18,12 @@ namespace NadekoBot.Db
|
|||||||
.OrderBy(x => x.DateAdded)
|
.OrderBy(x => x.DateAdded)
|
||||||
.Skip(page * 10)
|
.Skip(page * 10)
|
||||||
.Take(10);
|
.Take(10);
|
||||||
|
|
||||||
|
public static IEnumerable<Reminder> RemindersForServer(this DbSet<Reminder> reminders, ulong serverId, int page)
|
||||||
|
=> reminders.AsQueryable()
|
||||||
|
.Where(x => x.ServerId == serverId)
|
||||||
|
.OrderBy(x => x.DateAdded)
|
||||||
|
.Skip(page * 10)
|
||||||
|
.Take(10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -80,22 +80,51 @@ namespace NadekoBot.Modules.Utility
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum Server
|
||||||
|
{
|
||||||
|
Server = int.MinValue,
|
||||||
|
Srvr = int.MinValue,
|
||||||
|
Serv = int.MinValue,
|
||||||
|
S = int.MinValue,
|
||||||
|
}
|
||||||
|
|
||||||
[NadekoCommand, Aliases]
|
[NadekoCommand, Aliases]
|
||||||
public async Task RemindList(int page = 1)
|
[RequireContext(ContextType.Guild)]
|
||||||
|
[RequireUserPermission(GuildPermission.Administrator)]
|
||||||
|
[Priority(0)]
|
||||||
|
public Task RemindList(Server _, int page = 1)
|
||||||
|
=> RemindList(page, true);
|
||||||
|
|
||||||
|
[NadekoCommand, Aliases]
|
||||||
|
[Priority(1)]
|
||||||
|
public Task RemindList(int page = 1)
|
||||||
|
=> RemindList(page, false);
|
||||||
|
|
||||||
|
private async Task RemindList(int page, bool isServer)
|
||||||
{
|
{
|
||||||
if (--page < 0)
|
if (--page < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var embed = _eb.Create()
|
var embed = _eb.Create()
|
||||||
.WithOkColor()
|
.WithOkColor()
|
||||||
.WithTitle(GetText(strs.reminder_list));
|
.WithTitle(GetText(isServer ? strs.reminder_server_list : strs.reminder_list));
|
||||||
|
|
||||||
List<Reminder> rems;
|
List<Reminder> rems;
|
||||||
using (var uow = _db.GetDbContext())
|
using (var uow = _db.GetDbContext())
|
||||||
{
|
{
|
||||||
rems = uow.Reminders.RemindersFor(ctx.User.Id, page)
|
if (isServer)
|
||||||
|
{
|
||||||
|
rems = uow.Reminders
|
||||||
|
.RemindersForServer(ctx.Guild.Id, page)
|
||||||
.ToList();
|
.ToList();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rems = uow.Reminders
|
||||||
|
.RemindersFor(ctx.User.Id, page)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (rems.Any())
|
if (rems.Any())
|
||||||
{
|
{
|
||||||
@@ -121,17 +150,63 @@ namespace NadekoBot.Modules.Utility
|
|||||||
}
|
}
|
||||||
|
|
||||||
[NadekoCommand, Aliases]
|
[NadekoCommand, Aliases]
|
||||||
public async Task RemindDelete(int index)
|
[RequireContext(ContextType.Guild)]
|
||||||
|
[RequireUserPermission(GuildPermission.Administrator)]
|
||||||
|
[Priority(0)]
|
||||||
|
public Task RemindDelete(Server _, int index)
|
||||||
|
=> RemindDelete(index, true);
|
||||||
|
|
||||||
|
[NadekoCommand, Aliases]
|
||||||
|
[Priority(1)]
|
||||||
|
public Task RemindDelete(int index)
|
||||||
|
=> RemindDelete(index, false);
|
||||||
|
|
||||||
|
private async Task RemindDelete(int index, bool isServer)
|
||||||
{
|
{
|
||||||
if (--index < 0)
|
if (--index < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var embed = _eb.Create();
|
Reminder rem = null;
|
||||||
|
using (var uow = _db.GetDbContext())
|
||||||
|
{
|
||||||
|
var rems = isServer
|
||||||
|
? uow.Reminders
|
||||||
|
.RemindersForServer(ctx.Guild.Id, index / 10)
|
||||||
|
.ToList()
|
||||||
|
: uow.Reminders
|
||||||
|
.RemindersFor(ctx.User.Id, index / 10)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
var pageIndex = index % 10;
|
||||||
|
if (rems.Count > pageIndex)
|
||||||
|
{
|
||||||
|
rem = rems[pageIndex];
|
||||||
|
uow.Reminders.Remove(rem);
|
||||||
|
uow.SaveChanges();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rem is null)
|
||||||
|
{
|
||||||
|
await ReplyErrorLocalizedAsync(strs.reminder_not_exist).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
await ReplyConfirmLocalizedAsync(strs.reminder_deleted(index + 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[NadekoCommand, Aliases]
|
||||||
|
public async Task ServerRemindDelete(int index)
|
||||||
|
{
|
||||||
|
if (--index < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
Reminder rem = null;
|
Reminder rem = null;
|
||||||
using (var uow = _db.GetDbContext())
|
using (var uow = _db.GetDbContext())
|
||||||
{
|
{
|
||||||
var rems = uow.Reminders.RemindersFor(ctx.User.Id, index / 10)
|
var rems = uow.Reminders
|
||||||
|
.RemindersForServer(ctx.Guild.Id, index / 10)
|
||||||
.ToList();
|
.ToList();
|
||||||
var pageIndex = index % 10;
|
var pageIndex = index % 10;
|
||||||
if (rems.Count > pageIndex)
|
if (rems.Count > pageIndex)
|
||||||
|
@@ -406,13 +406,15 @@ remind:
|
|||||||
- "me 1d5h Do something"
|
- "me 1d5h Do something"
|
||||||
- "#general 1m Start now!"
|
- "#general 1m Start now!"
|
||||||
reminddelete:
|
reminddelete:
|
||||||
desc: "Deletes a reminder on the specified index."
|
desc: "Deletes a reminder on the specified index. You can specify 'server' option if you're an Administrator, and you want to delete a reminder on this server created by someone else. "
|
||||||
args:
|
args:
|
||||||
- "3"
|
- "3"
|
||||||
|
- "server 2"
|
||||||
remindlist:
|
remindlist:
|
||||||
desc: "Lists all reminders you created. Paginated."
|
desc: "Lists all reminders you created. You can specify 'server' option if you're an Administrator to list all reminders created on this server. Paginated."
|
||||||
args:
|
args:
|
||||||
- "1"
|
- "1"
|
||||||
|
- "server 2"
|
||||||
serverinfo:
|
serverinfo:
|
||||||
desc: "Shows info about the server the bot is on. If no server is supplied, it defaults to current one."
|
desc: "Shows info about the server the bot is on. If no server is supplied, it defaults to current one."
|
||||||
args:
|
args:
|
||||||
|
@@ -919,6 +919,7 @@
|
|||||||
"reaction_role_removed": "Removed ReactionRole message #{0}",
|
"reaction_role_removed": "Removed ReactionRole message #{0}",
|
||||||
"reaction_roles_full": "You've reached the limit on ReactionRole messages. You have to delete some.",
|
"reaction_roles_full": "You've reached the limit on ReactionRole messages. You have to delete some.",
|
||||||
"reminder_list": "List of reminders",
|
"reminder_list": "List of reminders",
|
||||||
|
"reminder_server_list": "List of server reminders",
|
||||||
"reminder_deleted": "Reminder #{0} was deleted.",
|
"reminder_deleted": "Reminder #{0} was deleted.",
|
||||||
"reminder_not_exist": "Reminder at that index does not exist.",
|
"reminder_not_exist": "Reminder at that index does not exist.",
|
||||||
"reminders_none": "No reminder on this page.",
|
"reminders_none": "No reminder on this page.",
|
||||||
|
Reference in New Issue
Block a user