Add ClearChatOnConnect option and improve channel cleaning
Introduces a new Discord config option 'ClearChatOnConnect' to control whether channels are cleaned on connect. Refactors channel cleaning logic to handle bulk and individual message deletion based on message age, and updates permission modification calls for clarity and maintainability.
This commit is contained in:
parent
7a04f2c520
commit
5d464edd4d
3 changed files with 63 additions and 39 deletions
|
|
@ -58,6 +58,7 @@ ENV basic_Username='' \
|
|||
discord_ClientToken='' \
|
||||
discord_AllowDiscordCommands='false' \
|
||||
discord_hideChatterName='false' \
|
||||
discord_ClearChatOnConnect='true' \
|
||||
events_Enabled='false' \
|
||||
events_GroupMemberJoins='false' \
|
||||
events_GroupMemberLeaves='false' \
|
||||
|
|
|
|||
|
|
@ -18,9 +18,15 @@ namespace SecondBotEvents.Config
|
|||
settings.Add("InteractionHttpTarget");
|
||||
settings.Add("InteractionChannelNumber");
|
||||
settings.Add("hideChatterName");
|
||||
settings.Add("ClearChatOnConnect");
|
||||
settings.Add("HideStatusOutput");
|
||||
}
|
||||
|
||||
public bool GetClearChatOnConnect()
|
||||
{
|
||||
return ReadSettingAsBool("ClearChatOnConnect", true);
|
||||
}
|
||||
|
||||
public bool GetEnabled()
|
||||
{
|
||||
return ReadSettingAsBool("Enabled");
|
||||
|
|
|
|||
|
|
@ -726,10 +726,14 @@ namespace SecondBotEvents.Services
|
|||
{
|
||||
continue;
|
||||
}
|
||||
if(channel.Name != "commands")
|
||||
if(myConfig.GetClearChatOnConnect() == true)
|
||||
{
|
||||
if (channel.Name != "commands")
|
||||
{
|
||||
CleanChannel(channel);
|
||||
}
|
||||
}
|
||||
|
||||
WantedTextChannels.Remove(channel.Name);
|
||||
if (ChannelMap.ContainsKey(channel.Name) == true)
|
||||
{
|
||||
|
|
@ -1024,15 +1028,28 @@ namespace SecondBotEvents.Services
|
|||
}
|
||||
}
|
||||
|
||||
protected async void CleanChannel(ITextChannel channel)
|
||||
protected void CleanChannel(ITextChannel channel)
|
||||
{
|
||||
Task.Run(async() =>
|
||||
{
|
||||
IEnumerable<IMessage> messages = await channel.GetMessagesAsync(100, CacheMode.AllowDownload).FlattenAsync();
|
||||
IEnumerable<IMessage> filtered = messages.Where(x => (DateTimeOffset.UtcNow - x.Timestamp).TotalDays <= 14);
|
||||
if(filtered.Count() == 0)
|
||||
|
||||
// Bulk delete messages newer than 14 days
|
||||
var bulkDeletable = messages.Where(x => (DateTimeOffset.UtcNow - x.Timestamp).TotalDays <= 14).ToList();
|
||||
if (bulkDeletable.Count > 0)
|
||||
{
|
||||
return;
|
||||
await channel.DeleteMessagesAsync(bulkDeletable);
|
||||
}
|
||||
await channel.DeleteMessagesAsync(filtered);
|
||||
|
||||
// Individually delete messages older than 14 days
|
||||
messages = messages.Where(x => (DateTimeOffset.UtcNow - x.Timestamp).TotalDays > 14).ToList();
|
||||
foreach (var msg in messages)
|
||||
{
|
||||
await msg.DeleteAsync();
|
||||
// Optionally, add a small delay to avoid rate limits
|
||||
await Task.Delay(500);
|
||||
}
|
||||
}).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
protected string StatusPrefill()
|
||||
|
|
@ -1174,94 +1191,94 @@ namespace SecondBotEvents.Services
|
|||
switch (flag)
|
||||
{
|
||||
case "CreateInstantInvite":
|
||||
NewPerms = NewPerms.Modify(flagValue);
|
||||
NewPerms = NewPerms.Modify(createInstantInvite: flagValue);
|
||||
break;
|
||||
case "KickMembers":
|
||||
NewPerms = NewPerms.Modify(null, flagValue);
|
||||
NewPerms = NewPerms.Modify(kickMembers: flagValue);
|
||||
break;
|
||||
case "BanMembers":
|
||||
NewPerms = NewPerms.Modify(null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(banMembers: flagValue);
|
||||
break;
|
||||
case "Administrator":
|
||||
NewPerms = NewPerms.Modify(null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(administrator: flagValue);
|
||||
break;
|
||||
case "ManageChannels":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(manageChannels: flagValue);
|
||||
break;
|
||||
case "ManageGuild":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(manageGuild: flagValue);
|
||||
break;
|
||||
case "AddReactions":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(addReactions: flagValue);
|
||||
break;
|
||||
case "ViewAuditLog":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(viewAuditLog: flagValue);
|
||||
break;
|
||||
case "SendTTSMessages":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(sendTTSMessages: flagValue);
|
||||
break;
|
||||
case "AttachFiles":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(attachFiles: flagValue);
|
||||
break;
|
||||
case "ReadMessageHistory":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(readMessageHistory: flagValue);
|
||||
break;
|
||||
case "MentionEveryone":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(mentionEveryone: flagValue);
|
||||
break;
|
||||
case "UseExternalEmojis":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(useExternalEmojis: flagValue);
|
||||
break;
|
||||
case "Connect":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(connect: flagValue);
|
||||
break;
|
||||
case "Speak":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(speak: flagValue);
|
||||
break;
|
||||
case "MuteMembers":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(muteMembers: flagValue);
|
||||
break;
|
||||
case "UseVAD":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(useVoiceActivation: flagValue);
|
||||
break;
|
||||
case "MoveMembers":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(moveMembers: flagValue);
|
||||
break;
|
||||
case "EmbedLinks":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(embedLinks: flagValue);
|
||||
break;
|
||||
case "PrioritySpeaker":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(prioritySpeaker: flagValue);
|
||||
break;
|
||||
case "Stream":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(stream: flagValue);
|
||||
break;
|
||||
case "ChangeNickname":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(changeNickname: flagValue);
|
||||
break;
|
||||
case "ManageNicknames":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(manageNicknames: flagValue);
|
||||
break;
|
||||
case "ManageRoles":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(manageRoles: flagValue);
|
||||
break;
|
||||
case "DeafenMembers":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(deafenMembers: flagValue);
|
||||
break;
|
||||
case "ManageMessages":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(manageMessages: flagValue);
|
||||
break;
|
||||
case "ViewChannel":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(viewChannel: flagValue);
|
||||
break;
|
||||
case "SendMessages":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(sendMessages: flagValue);
|
||||
break;
|
||||
case "ManageWebhooks":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(manageWebhooks: flagValue);
|
||||
break;
|
||||
case "ManageEmojisAndStickers":
|
||||
NewPerms = NewPerms.Modify(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, flagValue);
|
||||
NewPerms = NewPerms.Modify(manageEmojisAndStickers: flagValue);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in a new issue