Skip to content

Commit 34e41d0

Browse files
Fix permissions on /clear and properly apply D#+ permissions changes
1 parent 57f6a37 commit 34e41d0

File tree

4 files changed

+11
-11
lines changed

4 files changed

+11
-11
lines changed

Commands/InteractionCommands/ClearInteractions.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ public class ClearInteractions : ApplicationCommandModule
55
public static Dictionary<ulong, List<DiscordMessage>> MessagesToClear = new();
66

77
[SlashCommand("clear", "Delete many messages from the current channel.", defaultPermission: false)]
8-
[HomeServer, SlashRequireHomeserverPerm(ServerPermLevel.TrialModerator), RequireBotPermissions(permissions: [DiscordPermission.ManageMessages, DiscordPermission.ModerateMembers])]
8+
[HomeServer, SlashRequireHomeserverPerm(ServerPermLevel.TrialModerator), RequireBotPermissions(permissions: DiscordPermission.ManageMessages), SlashCommandPermissions(permissions: DiscordPermission.ModerateMembers)]
99
public async Task ClearSlashCommand(InteractionContext ctx,
1010
[Option("count", "The number of messages to consider for deletion. Required if you don't use the 'up_to' argument.")] long count = 0,
1111
[Option("up_to", "Optionally delete messages up to (not including) this one. Accepts IDs and links.")] string upTo = "",

Events/InteractionEvents.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -185,8 +185,8 @@ await LogChannelHelper.LogDeletedMessagesAsync(
185185
var newMockOverwrite = new MockUserOverwrite
186186
{
187187
Id = mockOverwrite.Id,
188-
Allowed = newOverwrite.Allowed | existingOverwrite.Allowed,
189-
Denied = newOverwrite.Denied | existingOverwrite.Denied
188+
Allowed = newOverwrite.Allowed.Add(existingOverwrite.Allowed.EnumeratePermissions().ToArray()),
189+
Denied = newOverwrite.Denied.Add(existingOverwrite.Denied.EnumeratePermissions().ToArray())
190190
};
191191

192192
// Cursed conversion again

Events/VoiceEvents.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ public static async Task UserLeft(DiscordClient client, VoiceStateUpdatedEventAr
187187
// User has other overrides set, so we should only remove the Send Messages override
188188
if (overwrite.Allowed.HasPermission(DiscordPermission.SendMessages))
189189
{
190-
await e.Before.Channel.AddOverwriteAsync(member, (DiscordPermissions)(overwrite.Allowed - DiscordPermission.SendMessages), overwrite.Denied, "User left voice channel.");
190+
await e.Before.Channel.AddOverwriteAsync(member, overwrite.Allowed.Remove(DiscordPermission.SendMessages), overwrite.Denied, "User left voice channel.");
191191
}
192192
else
193193
{

Helpers/LockdownHelpers.cs

+7-7
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ public static async Task<bool> LockChannelAsync(DiscordUser user, DiscordChannel
3636

3737
if (overwrite.Allowed.HasPermission(DiscordPermission.SendMessages))
3838
{
39-
await channel.AddOverwriteAsync(await overwrite.GetRoleAsync(), (DiscordPermissions)(overwrite.Allowed - DiscordPermission.SendMessages), DiscordPermission.SendMessages | overwrite.Denied, "Reinstating existing overrides for lockdown.");
39+
await channel.AddOverwriteAsync(await overwrite.GetRoleAsync(), overwrite.Allowed.Remove(DiscordPermission.SendMessages), overwrite.Denied.Add(DiscordPermission.SendMessages), "Reinstating existing overrides for lockdown.");
4040
}
4141
else
4242
{
43-
await channel.AddOverwriteAsync(await overwrite.GetRoleAsync(), overwrite.Allowed, DiscordPermission.SendMessages | overwrite.Denied, "Reinstating existing overrides for lockdown.");
43+
await channel.AddOverwriteAsync(await overwrite.GetRoleAsync(), overwrite.Allowed, overwrite.Denied.Add(DiscordPermission.SendMessages), "Reinstating existing overrides for lockdown.");
4444
}
4545
}
4646
else
@@ -56,11 +56,11 @@ public static async Task<bool> LockChannelAsync(DiscordUser user, DiscordChannel
5656

5757
if (overwrite.Allowed.HasPermission(DiscordPermission.SendMessages))
5858
{
59-
await channel.AddOverwriteAsync(await overwrite.GetRoleAsync(), (DiscordPermissions)(overwrite.Allowed - DiscordPermission.SendMessages), DiscordPermission.SendMessages | overwrite.Denied, "Reinstating existing overrides for lockdown.");
59+
await channel.AddOverwriteAsync(await overwrite.GetRoleAsync(), overwrite.Allowed.Remove(DiscordPermission.SendMessages), overwrite.Denied.Add(DiscordPermission.SendMessages), "Reinstating existing overrides for lockdown.");
6060
}
6161
else
6262
{
63-
await channel.AddOverwriteAsync(await overwrite.GetRoleAsync(), overwrite.Allowed, DiscordPermission.SendMessages | overwrite.Denied, "Reinstating existing overrides for lockdown.");
63+
await channel.AddOverwriteAsync(await overwrite.GetRoleAsync(), overwrite.Allowed, overwrite.Denied.Add(DiscordPermission.SendMessages), "Reinstating existing overrides for lockdown.");
6464
}
6565
}
6666

@@ -133,15 +133,15 @@ public static async Task<bool> UnlockChannel(DiscordChannel discordChannel, Disc
133133
newOverwrite = new(discordChannel.Guild.EveryoneRole)
134134
{
135135
Allowed = permission.Allowed,
136-
Denied = permission.Denied - DiscordPermission.SendMessages - DiscordPermission.SendThreadMessages
136+
Denied = permission.Denied.Remove([DiscordPermission.SendMessages, DiscordPermission.SendThreadMessages])
137137
};
138138
}
139139
else
140140
{
141141
newOverwrite = new(discordChannel.Guild.EveryoneRole)
142142
{
143143
Allowed = permission.Allowed,
144-
Denied = (DiscordPermissions)(permission.Denied - DiscordPermission.SendMessages)
144+
Denied = permission.Denied.Remove(DiscordPermission.SendMessages)
145145
};
146146
}
147147

@@ -161,7 +161,7 @@ public static async Task<bool> UnlockChannel(DiscordChannel discordChannel, Disc
161161
if (role == await discordChannel.Guild.GetRoleAsync(Program.cfgjson.ModRole)
162162
&& permission.Allowed == new DiscordPermissions([DiscordPermission.SendMessages, DiscordPermission.ViewChannel]))
163163
{
164-
await discordChannel.AddOverwriteAsync(await discordChannel.Guild.GetRoleAsync(Program.cfgjson.ModRole), (DiscordPermissions)(permission.Allowed - DiscordPermission.SendMessages), DiscordPermissions.None);
164+
await discordChannel.AddOverwriteAsync(await discordChannel.Guild.GetRoleAsync(Program.cfgjson.ModRole), permission.Allowed.Remove(DiscordPermission.SendMessages), DiscordPermissions.None);
165165
}
166166

167167
}

0 commit comments

Comments
 (0)