Greatly improved incidents. you can now list unread incidents with .lin, and get .txt of all incidents with .lain
command
This commit is contained in:
parent
29092206e5
commit
a6d35aa6c2
@ -103,6 +103,14 @@ namespace NadekoBot.Classes
|
||||
}
|
||||
}
|
||||
|
||||
internal void UpdateAll<T>(IEnumerable<T> objs) where T : IDataModel
|
||||
{
|
||||
using (var conn = new SQLiteConnection(FilePath))
|
||||
{
|
||||
conn.UpdateAll(objs);
|
||||
}
|
||||
}
|
||||
|
||||
internal HashSet<T> GetAllRows<T>() where T : IDataModel, new()
|
||||
{
|
||||
using (var conn = new SQLiteConnection(FilePath))
|
||||
|
@ -1,18 +1,25 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using NadekoBot.DataModels;
|
||||
using System;
|
||||
|
||||
namespace NadekoBot.Classes
|
||||
{
|
||||
internal static class IncidentsHandler
|
||||
{
|
||||
public static void Add(ulong serverId, string text)
|
||||
public static void Add(ulong serverId, ulong channelId, string text)
|
||||
{
|
||||
Directory.CreateDirectory("data/incidents");
|
||||
File.AppendAllText($"data/incidents/{serverId}.txt", text + "\n--------------------------\n");
|
||||
var def = Console.ForegroundColor;
|
||||
Console.ForegroundColor = ConsoleColor.Red;
|
||||
Console.WriteLine($"INCIDENT: {text}");
|
||||
Console.ForegroundColor = def;
|
||||
var incident = new Incident
|
||||
{
|
||||
ChannelId = (long)channelId,
|
||||
ServerId = (long)serverId,
|
||||
Text = text,
|
||||
Read = false
|
||||
};
|
||||
|
||||
DbHandler.Instance.InsertData<Incident>(incident);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -27,6 +27,7 @@ namespace NadekoBot.Modules.Administration
|
||||
commands.Add(new CustomReactionsCommands(this));
|
||||
commands.Add(new AutoAssignRole(this));
|
||||
commands.Add(new SelfCommands(this));
|
||||
commands.Add(new IncidentsCommands(this));
|
||||
|
||||
NadekoBot.Client.GetService<CommandService>().CommandExecuted += DeleteCommandMessage;
|
||||
}
|
||||
|
@ -0,0 +1,47 @@
|
||||
using Discord.Commands;
|
||||
using NadekoBot.Classes;
|
||||
using NadekoBot.DataModels;
|
||||
using NadekoBot.Modules.Permissions.Classes;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
||||
namespace NadekoBot.Modules.Administration.Commands
|
||||
{
|
||||
internal class IncidentsCommands : DiscordCommand
|
||||
{
|
||||
public IncidentsCommands(DiscordModule module) : base(module) { }
|
||||
internal override void Init(CommandGroupBuilder cgb)
|
||||
{
|
||||
cgb.CreateCommand(Module.Prefix + "listincidents")
|
||||
.Alias(Prefix + "lin")
|
||||
.Description("List all UNREAD incidents and flags them as read.")
|
||||
.AddCheck(SimpleCheckers.ManageServer())
|
||||
.Do(async e =>
|
||||
{
|
||||
var sid = (long)e.Server.Id;
|
||||
var incs = DbHandler.Instance.FindAll<Incident>(i => i.ServerId == sid && i.Read == false);
|
||||
DbHandler.Instance.UpdateAll<Incident>(incs.Select(i => { i.Read = true; return i; }));
|
||||
|
||||
await e.User.SendMessage(string.Join("\n----------------------", incs.Select(i => i.Text)));
|
||||
});
|
||||
|
||||
cgb.CreateCommand(Module.Prefix + "listallincidents")
|
||||
.Alias(Prefix + "lain")
|
||||
.Description("Sends you a file containing all incidents and flags them as read.")
|
||||
.AddCheck(SimpleCheckers.ManageServer())
|
||||
.Do(async e =>
|
||||
{
|
||||
var sid = (long)e.Server.Id;
|
||||
var incs = DbHandler.Instance.FindAll<Incident>(i => i.ServerId == sid);
|
||||
DbHandler.Instance.UpdateAll<Incident>(incs.Select(i => { i.Read = true; return i; }));
|
||||
var data = string.Join("\n----------------------\n", incs.Select(i => i.Text));
|
||||
MemoryStream ms = new MemoryStream();
|
||||
var sw = new StreamWriter(ms);
|
||||
sw.WriteLine(data);
|
||||
sw.Flush();
|
||||
sw.BaseStream.Position = 0;
|
||||
await e.User.SendFile("incidents.txt", sw.BaseStream);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
@ -25,9 +25,9 @@ namespace NadekoBot.Modules.Permissions.Commands
|
||||
if (filterRegex.IsMatch(args.Message.RawText))
|
||||
{
|
||||
await args.Message.Delete().ConfigureAwait(false);
|
||||
IncidentsHandler.Add(args.Server.Id, $"User [{args.User.Name}/{args.User.Id}] posted " +
|
||||
$"INVITE LINK in [{args.Channel.Name}/{args.Channel.Id}] channel. " +
|
||||
$"Full message: [[{args.Message.Text}]]");
|
||||
IncidentsHandler.Add(args.Server.Id, args.Channel.Id, $"User [{args.User.Name}/{args.User.Id}] posted " +
|
||||
$"INVITE LINK in [{args.Channel.Name}/{args.Channel.Id}] channel.\n" +
|
||||
$"`Full message:` {args.Message.Text}");
|
||||
if (serverPerms.Verbose)
|
||||
await args.Channel.SendMessage($"{args.User.Mention} Invite links are not " +
|
||||
$"allowed on this channel.")
|
||||
|
@ -23,9 +23,9 @@ namespace NadekoBot.Modules.Permissions.Commands
|
||||
if (serverPerms.Words.Any(w => wordsInMessage.Contains(w)))
|
||||
{
|
||||
await args.Message.Delete().ConfigureAwait(false);
|
||||
IncidentsHandler.Add(args.Server.Id, $"User [{args.User.Name}/{args.User.Id}] posted " +
|
||||
$"BANNED WORD in [{args.Channel.Name}/{args.Channel.Id}] channel. " +
|
||||
$"Full message: [[{args.Message.Text}]]");
|
||||
IncidentsHandler.Add(args.Server.Id, args.Channel.Id, $"User [{args.User.Name}/{args.User.Id}] posted " +
|
||||
$"BANNED WORD in [{args.Channel.Name}/{args.Channel.Id}] channel.\n" +
|
||||
$"`Full message:` {args.Message.Text}");
|
||||
if (serverPerms.Verbose)
|
||||
await args.Channel.SendMessage($"{args.User.Mention} One or more of the words you used " +
|
||||
$"in that sentence are not allowed here.")
|
||||
|
@ -136,6 +136,7 @@
|
||||
<ItemGroup>
|
||||
<Compile Include="Modules\Administration\Commands\AutoAssignRole.cs" />
|
||||
<Compile Include="Modules\Administration\Commands\CustomReactionsCommands.cs" />
|
||||
<Compile Include="Modules\Administration\Commands\SelfAssignedRolesCommand - Copy.cs" />
|
||||
<Compile Include="Modules\Administration\Commands\SelfCommands.cs" />
|
||||
<Compile Include="Modules\ClashOfClans\ClashOfClans.cs" />
|
||||
<Compile Include="Classes\DBHandler.cs" />
|
||||
@ -192,7 +193,7 @@
|
||||
<Compile Include="Modules\Administration\Commands\CrossServerTextChannel.cs" />
|
||||
<Compile Include="Modules\Utility\Commands\InfoCommands.cs" />
|
||||
<Compile Include="Modules\Utility\Commands\Remind.cs" />
|
||||
<Compile Include="Modules\Administration\Commands\SelfAssignedRolesCommand.cs" />
|
||||
<Compile Include="Modules\Administration\Commands\IncidentsCommands.cs" />
|
||||
<Compile Include="Modules\ClashOfClans\ClashOfClansModule.cs" />
|
||||
<Compile Include="Modules\Permissions\Commands\FilterWordsCommand.cs" />
|
||||
<Compile Include="Modules\Permissions\Commands\FilterInvitesCommand.cs" />
|
||||
|
@ -1,13 +1,10 @@
|
||||
using System;
|
||||
|
||||
namespace NadekoBot.DataModels
|
||||
namespace NadekoBot.DataModels
|
||||
{
|
||||
class Incident : IDataModel
|
||||
{
|
||||
public long ServerId { get; set; }
|
||||
public long ChannelId { get; set; }
|
||||
public string Text { get; set; }
|
||||
public DateTime When { get; set; }
|
||||
public bool Read { get; set; } = false;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user