mirror of
https://gitlab.com/Kwoth/nadekobot.git
synced 2025-09-10 09:18:27 -04:00
Added .filterlist command
This commit is contained in:
@@ -2,6 +2,12 @@
|
|||||||
|
|
||||||
Experimental changelog. Mostly based on [keepachangelog](https://keepachangelog.com/en/1.0.0/) except date format. a-c-f-r-o
|
Experimental changelog. Mostly based on [keepachangelog](https://keepachangelog.com/en/1.0.0/) except date format. a-c-f-r-o
|
||||||
|
|
||||||
|
## Unreleased
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- `.filterlist` / `.fl` command which lists link and invite filtering channels and status
|
||||||
|
|
||||||
## [4.3.9] - 12.10.2022
|
## [4.3.9] - 12.10.2022
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
@@ -25,6 +25,47 @@ public partial class Permissions
|
|||||||
await ReplyConfirmLocalizedAsync(strs.fw_cleared);
|
await ReplyConfirmLocalizedAsync(strs.fw_cleared);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Cmd]
|
||||||
|
[RequireContext(ContextType.Guild)]
|
||||||
|
public async Task FilterList()
|
||||||
|
{
|
||||||
|
var embed = _eb.Create(ctx)
|
||||||
|
.WithOkColor()
|
||||||
|
.WithTitle("Server filter settings");
|
||||||
|
|
||||||
|
var config = await _service.GetFilterSettings(ctx.Guild.Id);
|
||||||
|
|
||||||
|
string GetEnabledEmoji(bool value)
|
||||||
|
=> value ? "\\🟢" : "\\🔴";
|
||||||
|
|
||||||
|
async Task<string> GetChannelListAsync(IReadOnlyCollection<ulong> channels)
|
||||||
|
{
|
||||||
|
var toReturn = (await channels
|
||||||
|
.Select(async cid =>
|
||||||
|
{
|
||||||
|
var ch = await ctx.Guild.GetChannelAsync(cid);
|
||||||
|
return ch is null
|
||||||
|
? $"{cid} *missing*"
|
||||||
|
: $"<#{cid}>";
|
||||||
|
})
|
||||||
|
.WhenAll())
|
||||||
|
.Join('\n');
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(toReturn))
|
||||||
|
return GetText(strs.no_channel_found);
|
||||||
|
|
||||||
|
return toReturn;
|
||||||
|
}
|
||||||
|
|
||||||
|
embed.AddField($"{GetEnabledEmoji(config.FilterLinksEnabled)} Filter Links",
|
||||||
|
await GetChannelListAsync(config.FilterLinksChannels));
|
||||||
|
|
||||||
|
embed.AddField($"{GetEnabledEmoji(config.FilterInvitesEnabled)} Filter Invites",
|
||||||
|
await GetChannelListAsync(config.FilterInvitesChannels));
|
||||||
|
|
||||||
|
await ctx.Channel.EmbedAsync(embed);
|
||||||
|
}
|
||||||
|
|
||||||
[Cmd]
|
[Cmd]
|
||||||
[RequireContext(ContextType.Guild)]
|
[RequireContext(ContextType.Guild)]
|
||||||
public async Task SrvrFilterInv()
|
public async Task SrvrFilterInv()
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#nullable disable
|
#nullable disable
|
||||||
|
using AngleSharp.Dom;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using NadekoBot.Common.ModuleBehaviors;
|
using NadekoBot.Common.ModuleBehaviors;
|
||||||
using NadekoBot.Db;
|
using NadekoBot.Db;
|
||||||
@@ -222,4 +223,20 @@ public sealed class FilterService : IExecOnMessage
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<ServerFilterSettings> GetFilterSettings(ulong guildId)
|
||||||
|
{
|
||||||
|
await using var uow = _db.GetDbContext();
|
||||||
|
var gc = uow.GuildConfigsForId(guildId, set => set
|
||||||
|
.Include(x => x.FilterInvitesChannelIds)
|
||||||
|
.Include(x => x.FilterLinksChannelIds));
|
||||||
|
|
||||||
|
return new()
|
||||||
|
{
|
||||||
|
FilterInvitesChannels = gc.FilterInvitesChannelIds.Map(x => x.ChannelId),
|
||||||
|
FilterLinksChannels = gc.FilterLinksChannelIds.Map(x => x.ChannelId),
|
||||||
|
FilterInvitesEnabled = gc.FilterInvites,
|
||||||
|
FilterLinksEnabled = gc.FilterLinks,
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
@@ -0,0 +1,10 @@
|
|||||||
|
#nullable disable
|
||||||
|
namespace NadekoBot.Modules.Permissions.Services;
|
||||||
|
|
||||||
|
public readonly struct ServerFilterSettings
|
||||||
|
{
|
||||||
|
public bool FilterInvitesEnabled { get; init; }
|
||||||
|
public bool FilterLinksEnabled { get; init; }
|
||||||
|
public IReadOnlyCollection<ulong> FilterInvitesChannels { get; init; }
|
||||||
|
public IReadOnlyCollection<ulong> FilterLinksChannels { get; init; }
|
||||||
|
}
|
@@ -246,6 +246,9 @@ roles:
|
|||||||
channeltopic:
|
channeltopic:
|
||||||
- channeltopic
|
- channeltopic
|
||||||
- ct
|
- ct
|
||||||
|
filterlist:
|
||||||
|
- filterlist
|
||||||
|
- fl
|
||||||
chnlfilterinv:
|
chnlfilterinv:
|
||||||
- chnlfilterinv
|
- chnlfilterinv
|
||||||
- cfi
|
- cfi
|
||||||
|
@@ -236,6 +236,10 @@ fwclear:
|
|||||||
desc: "Deletes all filtered words on this server."
|
desc: "Deletes all filtered words on this server."
|
||||||
args:
|
args:
|
||||||
- ""
|
- ""
|
||||||
|
filterlist:
|
||||||
|
desc: "Lists invite and link filter channels and status."
|
||||||
|
args:
|
||||||
|
- ""
|
||||||
aliasesclear:
|
aliasesclear:
|
||||||
desc: "Deletes all aliases on this server."
|
desc: "Deletes all aliases on this server."
|
||||||
args:
|
args:
|
||||||
|
Reference in New Issue
Block a user