Greet commands now function without delay?

This commit is contained in:
Kwoth 2016-08-25 16:41:06 +02:00
parent f552e03e24
commit 612eb22154

View File

@ -26,83 +26,85 @@ namespace NadekoBot.Modules.Administration
_log = LogManager.GetCurrentClassLogger(); _log = LogManager.GetCurrentClassLogger();
} }
private async Task UserLeft(IGuildUser user) private Task UserLeft(IGuildUser user)
{ {
_log.Info("Left: User Left"); var leftTask = Task.Run(async () =>
GuildConfig conf;
using (var uow = DbHandler.UnitOfWork())
{ {
conf = uow.GuildConfigs.For(user.Guild.Id); GuildConfig conf;
} using (var uow = DbHandler.UnitOfWork())
_log.Info("Left: Got unit of work"); {
conf = uow.GuildConfigs.For(user.Guild.Id);
}
if (!conf.SendChannelByeMessage) return; if (!conf.SendChannelByeMessage) return;
var channel = (await user.Guild.GetTextChannelsAsync()).SingleOrDefault(c => c.Id == conf.ByeMessageChannelId); var channel = (await user.Guild.GetTextChannelsAsync()).SingleOrDefault(c => c.Id == conf.ByeMessageChannelId);
_log.Info("Left: Found channel");
if (channel == null) //maybe warn the server owner that the channel is missing
return;
var msg = conf.ChannelByeMessageText.Replace("%user%", "**" + user.Username + "**"); if (channel == null) //maybe warn the server owner that the channel is missing
if (string.IsNullOrWhiteSpace(msg)) return;
return;
_log.Info("Left: Sending"); var msg = conf.ChannelByeMessageText.Replace("%user%", "**" + user.Username + "**");
var toDelete = await channel.SendMessageAsync(msg).ConfigureAwait(false); if (string.IsNullOrWhiteSpace(msg))
if (conf.AutoDeleteByeMessages) return;
{
_log.Info("Left: Sent, waiting for delete"); var toDelete = await channel.SendMessageAsync(msg).ConfigureAwait(false);
await Task.Delay(conf.AutoDeleteGreetMessagesTimer * 1000).ConfigureAwait(false); // 5 minutes if (conf.AutoDeleteByeMessages)
_log.Info("Left: Deleted"); {
await toDelete.DeleteAsync().ConfigureAwait(false); var t = Task.Run(async () =>
} {
await Task.Delay(conf.AutoDeleteGreetMessagesTimer * 1000).ConfigureAwait(false); // 5 minutes
await toDelete.DeleteAsync().ConfigureAwait(false);
});
}
});
return Task.CompletedTask;
} }
private async Task UserJoined(IGuildUser user) private Task UserJoined(IGuildUser user)
{ {
_log.Info("Joined: User joined"); var joinedTask = Task.Run(async () =>
GuildConfig conf;
using (var uow = DbHandler.UnitOfWork())
{ {
conf = uow.GuildConfigs.For(user.Guild.Id); GuildConfig conf;
} using (var uow = DbHandler.UnitOfWork())
_log.Info("Joined: Got unit of work");
if (conf.SendChannelGreetMessage)
{
var channel = (await user.Guild.GetTextChannelsAsync()).SingleOrDefault(c => c.Id == conf.GreetMessageChannelId);
_log.Info("Joined: Found required channel");
if (channel != null) //maybe warn the server owner that the channel is missing
{ {
var msg = conf.ChannelGreetMessageText.Replace("%user%", "**" + user.Username + "**"); conf = uow.GuildConfigs.For(user.Guild.Id);
if (!string.IsNullOrWhiteSpace(msg)) }
if (conf.SendChannelGreetMessage)
{
var channel = (await user.Guild.GetTextChannelsAsync()).SingleOrDefault(c => c.Id == conf.GreetMessageChannelId);
if (channel != null) //maybe warn the server owner that the channel is missing
{ {
_log.Info("Joined: Sending message"); var msg = conf.ChannelGreetMessageText.Replace("%user%", user.Username).Replace("%server%", user.Guild.Name);
var toDelete = await channel.SendMessageAsync(msg).ConfigureAwait(false); if (!string.IsNullOrWhiteSpace(msg))
_log.Info("Joined: Message sent");
if (conf.AutoDeleteGreetMessages)
{ {
_log.Info("Joined: Waiting to delete"); var toDelete = await channel.SendMessageAsync(msg).ConfigureAwait(false);
await Task.Delay(conf.AutoDeleteGreetMessagesTimer * 1000).ConfigureAwait(false); // 5 minutes if (conf.AutoDeleteGreetMessages)
await toDelete.DeleteAsync().ConfigureAwait(false); {
_log.Info("Joined: Deleted"); var t = Task.Run(async () =>
{
await Task.Delay(conf.AutoDeleteGreetMessagesTimer * 1000).ConfigureAwait(false); // 5 minutes
await toDelete.DeleteAsync().ConfigureAwait(false);
});
}
} }
} }
} }
}
if (conf.SendDmGreetMessage) if (conf.SendDmGreetMessage)
{
var channel = await user.CreateDMChannelAsync();
if (channel != null)
{ {
var msg = conf.DmGreetMessageText.Replace("%user%", "**" + user.Username + "**"); var channel = await user.CreateDMChannelAsync();
if (!string.IsNullOrWhiteSpace(msg))
if (channel != null)
{ {
var toDelete = await channel.SendMessageAsync(msg).ConfigureAwait(false); var msg = conf.DmGreetMessageText.Replace("%user%", user.Username).Replace("%server%", user.Guild.Name);
if (!string.IsNullOrWhiteSpace(msg))
{
await channel.SendMessageAsync(msg).ConfigureAwait(false);
}
} }
} }
} });
return Task.CompletedTask;
} }
[LocalizedCommand, LocalizedDescription, LocalizedSummary] [LocalizedCommand, LocalizedDescription, LocalizedSummary]
@ -227,7 +229,7 @@ namespace NadekoBot.Modules.Administration
} }
await channel.SendMessageAsync("New DM greet message set.").ConfigureAwait(false); await channel.SendMessageAsync("New DM greet message set.").ConfigureAwait(false);
if (!conf.SendDmGreetMessage) if (!conf.SendDmGreetMessage)
await channel.SendMessageAsync("Enable DM greet messsages by typing `.greet`").ConfigureAwait(false); await channel.SendMessageAsync("Enable DM greet messsages by typing `.greetdm`").ConfigureAwait(false);
} }
[LocalizedCommand, LocalizedDescription, LocalizedSummary] [LocalizedCommand, LocalizedDescription, LocalizedSummary]