dm foward commands cleaned up and localized
This commit is contained in:
parent
45fb8b925d
commit
a89ca8d185
@ -4,10 +4,9 @@ using Discord.WebSocket;
|
|||||||
using NadekoBot.Attributes;
|
using NadekoBot.Attributes;
|
||||||
using NadekoBot.Extensions;
|
using NadekoBot.Extensions;
|
||||||
using NadekoBot.Services;
|
using NadekoBot.Services;
|
||||||
using NLog;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace NadekoBot.Modules.Administration
|
namespace NadekoBot.Modules.Administration
|
||||||
@ -15,19 +14,21 @@ namespace NadekoBot.Modules.Administration
|
|||||||
public partial class Administration
|
public partial class Administration
|
||||||
{
|
{
|
||||||
[Group]
|
[Group]
|
||||||
public class DMForwardCommands : NadekoSubmodule
|
public class DmForwardCommands : NadekoSubmodule
|
||||||
{
|
{
|
||||||
private static bool ForwardDMs { get; set; }
|
private static volatile bool _forwardDMs;
|
||||||
private static bool ForwardDMsToAllOwners { get; set; }
|
private static volatile bool _forwardDMsToAllOwners;
|
||||||
|
|
||||||
static DMForwardCommands()
|
private static readonly object _locker = new object();
|
||||||
|
|
||||||
|
static DmForwardCommands()
|
||||||
{
|
{
|
||||||
|
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
var config = uow.BotConfig.GetOrCreate();
|
var config = uow.BotConfig.GetOrCreate();
|
||||||
ForwardDMs = config.ForwardMessages;
|
_forwardDMs = config.ForwardMessages;
|
||||||
ForwardDMsToAllOwners = config.ForwardToAllOwners;
|
_forwardDMsToAllOwners = config.ForwardToAllOwners;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,13 +39,14 @@ namespace NadekoBot.Modules.Administration
|
|||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
var config = uow.BotConfig.GetOrCreate();
|
var config = uow.BotConfig.GetOrCreate();
|
||||||
ForwardDMs = config.ForwardMessages = !config.ForwardMessages;
|
lock(_locker)
|
||||||
|
_forwardDMs = config.ForwardMessages = !config.ForwardMessages;
|
||||||
uow.Complete();
|
uow.Complete();
|
||||||
}
|
}
|
||||||
if (ForwardDMs)
|
if (_forwardDMs)
|
||||||
await Context.Channel.SendConfirmAsync("✅ **I will forward DMs from now on.**").ConfigureAwait(false);
|
await ReplyConfirmLocalized("fwdm_start").ConfigureAwait(false);
|
||||||
else
|
else
|
||||||
await Context.Channel.SendConfirmAsync("🆗 **I will stop forwarding DMs from now on.**").ConfigureAwait(false);
|
await ReplyConfirmLocalized("fwdm_stop").ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
[NadekoCommand, Usage, Description, Aliases]
|
[NadekoCommand, Usage, Description, Aliases]
|
||||||
@ -54,22 +56,25 @@ namespace NadekoBot.Modules.Administration
|
|||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
var config = uow.BotConfig.GetOrCreate();
|
var config = uow.BotConfig.GetOrCreate();
|
||||||
ForwardDMsToAllOwners = config.ForwardToAllOwners = !config.ForwardToAllOwners;
|
lock(_locker)
|
||||||
|
_forwardDMsToAllOwners = config.ForwardToAllOwners = !config.ForwardToAllOwners;
|
||||||
uow.Complete();
|
uow.Complete();
|
||||||
}
|
}
|
||||||
if (ForwardDMsToAllOwners)
|
if (_forwardDMsToAllOwners)
|
||||||
await Context.Channel.SendConfirmAsync("ℹ️ **I will forward DMs to all owners.**").ConfigureAwait(false);
|
await ReplyConfirmLocalized("fwall_start").ConfigureAwait(false);
|
||||||
else
|
else
|
||||||
await Context.Channel.SendConfirmAsync("ℹ️ **I will forward DMs only to the first owner.**").ConfigureAwait(false);
|
await ReplyConfirmLocalized("fwall_stop").ConfigureAwait(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task HandleDMForwarding(SocketMessage msg, List<IDMChannel> ownerChannels)
|
public static async Task HandleDmForwarding(SocketMessage msg, List<IDMChannel> ownerChannels)
|
||||||
{
|
{
|
||||||
if (ForwardDMs && ownerChannels.Any())
|
if (_forwardDMs && ownerChannels.Any())
|
||||||
{
|
{
|
||||||
var title = $"DM from [{msg.Author}]({msg.Author.Id})";
|
var title =
|
||||||
if (ForwardDMsToAllOwners)
|
GetTextStatic("dm_from", NadekoBot.Localization.DefaultCultureInfo,
|
||||||
|
typeof(Administration).Name.ToLowerInvariant()) + $" [{msg.Author}]({msg.Author.Id})";
|
||||||
|
if (_forwardDMsToAllOwners)
|
||||||
{
|
{
|
||||||
await Task.WhenAll(ownerChannels.Where(ch => ch.Recipient.Id != msg.Author.Id)
|
await Task.WhenAll(ownerChannels.Where(ch => ch.Recipient.Id != msg.Author.Id)
|
||||||
.Select(ch => ch.SendConfirmAsync(title, msg.Content))).ConfigureAwait(false);
|
.Select(ch => ch.SendConfirmAsync(title, msg.Content))).ConfigureAwait(false);
|
||||||
@ -78,7 +83,11 @@ namespace NadekoBot.Modules.Administration
|
|||||||
{
|
{
|
||||||
var firstOwnerChannel = ownerChannels.First();
|
var firstOwnerChannel = ownerChannels.First();
|
||||||
if (firstOwnerChannel.Recipient.Id != msg.Author.Id)
|
if (firstOwnerChannel.Recipient.Id != msg.Author.Id)
|
||||||
try { await firstOwnerChannel.SendConfirmAsync(title, msg.Content).ConfigureAwait(false); } catch { }
|
try { await firstOwnerChannel.SendConfirmAsync(title, msg.Content).ConfigureAwait(false); }
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// ignored
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
45
src/NadekoBot/Resources/ResponseStrings.Designer.cs
generated
45
src/NadekoBot/Resources/ResponseStrings.Designer.cs
generated
@ -77,6 +77,51 @@ namespace NadekoBot.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to DM from.
|
||||||
|
/// </summary>
|
||||||
|
public static string administration_dm_from {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("administration_dm_from", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to I will forward DMs to all owners..
|
||||||
|
/// </summary>
|
||||||
|
public static string administration_fwall_start {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("administration_fwall_start", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to I will forward DMs only to the first owner..
|
||||||
|
/// </summary>
|
||||||
|
public static string administration_fwall_stop {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("administration_fwall_stop", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to I will forward DMs from now on..
|
||||||
|
/// </summary>
|
||||||
|
public static string administration_fwdm_start {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("administration_fwdm_start", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to I will stop forwarding DMs from now on..
|
||||||
|
/// </summary>
|
||||||
|
public static string administration_fwdm_stop {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("administration_fwdm_stop", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to I don't have the permission necessary for that most likely..
|
/// Looks up a localized string similar to I don't have the permission necessary for that most likely..
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -273,7 +273,7 @@ namespace NadekoBot.Services
|
|||||||
|
|
||||||
await msg.Channel.SendMessageAsync(Help.DMHelpString).ConfigureAwait(false);
|
await msg.Channel.SendMessageAsync(Help.DMHelpString).ConfigureAwait(false);
|
||||||
|
|
||||||
await DMForwardCommands.HandleDMForwarding(msg, ownerChannels).ConfigureAwait(false);
|
await DmForwardCommands.HandleDmForwarding(msg, ownerChannels).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user