Removed custom DM notification on common kick/ban
This commit is contained in:
parent
77b6aa891b
commit
9c334f2e48
2 changed files with 15 additions and 17 deletions
|
@ -1,4 +1,5 @@
|
||||||
using System.Threading.Tasks;
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Discord.Net;
|
using Discord.Net;
|
||||||
using Discord.WebSocket;
|
using Discord.WebSocket;
|
||||||
using static Kerobot.Kerobot;
|
using static Kerobot.Kerobot;
|
||||||
|
@ -22,15 +23,11 @@ namespace Kerobot.Services.CommonFunctions
|
||||||
/// Common processing for kicks and bans. Called by DoKickAsync and DoBanAsync.
|
/// Common processing for kicks and bans. Called by DoKickAsync and DoBanAsync.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="logReason">The reason to insert into the Audit Log.</param>
|
/// <param name="logReason">The reason to insert into the Audit Log.</param>
|
||||||
/// <param name="dmTemplate">
|
|
||||||
/// The message to send out to the target. Leave null to not perform this action.
|
|
||||||
/// Instances of "%r" within it are replaced with <paramref name="logReason"/> and instances of "%g"
|
|
||||||
/// are replaced with the server name.
|
|
||||||
/// </param>
|
|
||||||
internal async Task<BanKickResult> BanOrKickAsync(
|
internal async Task<BanKickResult> BanOrKickAsync(
|
||||||
RemovalType t, SocketGuild guild, string source, ulong target, int banPurgeDays,
|
RemovalType t, SocketGuild guild, string source, ulong target, int banPurgeDays,
|
||||||
string logReason, string dmTemplate)
|
string logReason, bool sendDmToTarget)
|
||||||
{
|
{
|
||||||
|
if (t == RemovalType.None) throw new ArgumentException("Removal type must be 'ban' or 'kick'.");
|
||||||
if (string.IsNullOrWhiteSpace(logReason)) logReason = "Reason not specified.";
|
if (string.IsNullOrWhiteSpace(logReason)) logReason = "Reason not specified.";
|
||||||
var dmSuccess = true;
|
var dmSuccess = true;
|
||||||
|
|
||||||
|
@ -45,9 +42,9 @@ namespace Kerobot.Services.CommonFunctions
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Send DM notification
|
// Send DM notification
|
||||||
if (dmTemplate != null)
|
if (sendDmToTarget)
|
||||||
{
|
{
|
||||||
if (utarget != null) dmSuccess = await BanKickSendNotificationAsync(utarget, dmTemplate, logReason);
|
if (utarget != null) dmSuccess = await BanKickSendNotificationAsync(utarget, t, logReason);
|
||||||
else dmSuccess = false;
|
else dmSuccess = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,22 +56,23 @@ namespace Kerobot.Services.CommonFunctions
|
||||||
#else
|
#else
|
||||||
if (t == RemovalType.Ban) await guild.AddBanAsync(target, banPurgeDays);
|
if (t == RemovalType.Ban) await guild.AddBanAsync(target, banPurgeDays);
|
||||||
else await utarget.KickAsync(logReason);
|
else await utarget.KickAsync(logReason);
|
||||||
|
// TODO !! Insert ban reason! For kick also: Figure out a way to specify invoker.
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
catch (HttpException ex)
|
catch (HttpException ex)
|
||||||
{
|
{
|
||||||
return new BanKickResult(ex, false, false);
|
return new BanKickResult(ex, dmSuccess, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new BanKickResult(null, dmSuccess, false);
|
return new BanKickResult(null, dmSuccess, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<bool> BanKickSendNotificationAsync(SocketGuildUser target, string dmTemplate, string reason)
|
private async Task<bool> BanKickSendNotificationAsync(SocketGuildUser target, Kerobot.RemovalType action, string reason)
|
||||||
{
|
{
|
||||||
if (dmTemplate == null) return true;
|
const string DMTemplate = "You have been {0} from {1} for the following reason:\n{2}";
|
||||||
|
|
||||||
var dch = await target.GetOrCreateDMChannelAsync();
|
var dch = await target.GetOrCreateDMChannelAsync(); // TODO can this throw an exception?
|
||||||
string output = dmTemplate.Replace("%r", reason).Replace("%s", target.Guild.Name);
|
var output = string.Format(DMTemplate, action == RemovalType.Ban ? "banned" : "kicked", target.Guild.Name, reason);
|
||||||
|
|
||||||
try { await dch.SendMessageAsync(output); }
|
try { await dch.SendMessageAsync(output); }
|
||||||
catch (HttpException) { return false; }
|
catch (HttpException) { return false; }
|
||||||
|
|
|
@ -8,14 +8,14 @@ namespace Kerobot
|
||||||
{
|
{
|
||||||
private CommonFunctionsService _svcCommonFunctions;
|
private CommonFunctionsService _svcCommonFunctions;
|
||||||
|
|
||||||
public enum RemovalType { Ban, Kick }
|
public enum RemovalType { None, Ban, Kick }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// See <see cref="ModuleBase.BanAsync(SocketGuild, string, ulong, int, string, string)"/>
|
/// See <see cref="ModuleBase.BanAsync(SocketGuild, string, ulong, int, string, string)"/>
|
||||||
/// and related methods.
|
/// and related methods.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Task<BanKickResult> BanOrKickAsync(RemovalType t, SocketGuild guild, string source,
|
public Task<BanKickResult> BanOrKickAsync(RemovalType t, SocketGuild guild, string source,
|
||||||
ulong target, int banPurgeDays, string logReason, string dmTemplate)
|
ulong target, int banPurgeDays, string logReason, bool sendDMToTarget)
|
||||||
=> _svcCommonFunctions.BanOrKickAsync(t, guild, source, target, banPurgeDays, logReason, dmTemplate);
|
=> _svcCommonFunctions.BanOrKickAsync(t, guild, source, target, banPurgeDays, logReason, sendDMToTarget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue