Make errorhandler and languagehandler async, await all database actions
This commit is contained in:
parent
926a632641
commit
95618b1f8b
46 changed files with 181 additions and 137 deletions
|
@ -51,7 +51,7 @@ namespace Geekbot.net.Commands.User
|
|||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_errorHandler.HandleCommandException(e, Context);
|
||||
await _errorHandler.HandleCommandException(e, Context);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,8 +30,8 @@ namespace Geekbot.net.Commands.User
|
|||
{
|
||||
try
|
||||
{
|
||||
var transDict = _translation.GetDict(Context);
|
||||
var actor = GetUser(Context.User.Id);
|
||||
var transDict = await _translation.GetDict(Context);
|
||||
var actor = await GetUser(Context.User.Id);
|
||||
if (user.Id == Context.User.Id)
|
||||
{
|
||||
await ReplyAsync(string.Format(transDict["CannotChangeOwn"], Context.User.Username));
|
||||
|
@ -43,7 +43,7 @@ namespace Geekbot.net.Commands.User
|
|||
}
|
||||
else
|
||||
{
|
||||
var target = GetUser(user.Id);
|
||||
var target = await GetUser(user.Id);
|
||||
target.Karma = target.Karma + 1;
|
||||
SetUser(target);
|
||||
|
||||
|
@ -77,8 +77,8 @@ namespace Geekbot.net.Commands.User
|
|||
{
|
||||
try
|
||||
{
|
||||
var transDict = _translation.GetDict(Context);
|
||||
var actor = GetUser(Context.User.Id);
|
||||
var transDict = await _translation.GetDict(Context);
|
||||
var actor = await GetUser(Context.User.Id);
|
||||
if (user.Id == Context.User.Id)
|
||||
{
|
||||
await ReplyAsync(string.Format(transDict["CannotChangeOwn"], Context.User.Username));
|
||||
|
@ -90,7 +90,7 @@ namespace Geekbot.net.Commands.User
|
|||
}
|
||||
else
|
||||
{
|
||||
var target = GetUser(user.Id);
|
||||
var target = await GetUser(user.Id);
|
||||
target.Karma = target.Karma - 1;
|
||||
SetUser(target);
|
||||
|
||||
|
@ -129,19 +129,18 @@ namespace Geekbot.net.Commands.User
|
|||
return $"{dt.Minutes} Minutes and {dt.Seconds} Seconds";
|
||||
}
|
||||
|
||||
private KarmaModel GetUser(ulong userId)
|
||||
private async Task<KarmaModel> GetUser(ulong userId)
|
||||
{
|
||||
var user = _database.Karma.FirstOrDefault(u =>u.GuildId.Equals(Context.Guild.Id.AsLong()) && u.UserId.Equals(userId.AsLong())) ?? CreateNewRow(userId);
|
||||
var user = _database.Karma.FirstOrDefault(u =>u.GuildId.Equals(Context.Guild.Id.AsLong()) && u.UserId.Equals(userId.AsLong())) ?? await CreateNewRow(userId);
|
||||
return user;
|
||||
}
|
||||
|
||||
private bool SetUser(KarmaModel user)
|
||||
private void SetUser(KarmaModel user)
|
||||
{
|
||||
_database.Karma.Update(user);
|
||||
return true;
|
||||
}
|
||||
|
||||
private KarmaModel CreateNewRow(ulong userId)
|
||||
private async Task<KarmaModel> CreateNewRow(ulong userId)
|
||||
{
|
||||
var user = new KarmaModel()
|
||||
{
|
||||
|
@ -151,7 +150,7 @@ namespace Geekbot.net.Commands.User
|
|||
TimeOut = DateTimeOffset.MinValue
|
||||
};
|
||||
var newUser = _database.Karma.Add(user).Entity;
|
||||
_database.SaveChanges();
|
||||
await _database.SaveChangesAsync();
|
||||
return newUser;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -81,6 +81,15 @@ namespace Geekbot.net.Commands.User.Ranking
|
|||
return;
|
||||
}
|
||||
|
||||
int guildMessages = 0;
|
||||
if (type == RankType.messages)
|
||||
{
|
||||
guildMessages = _database.Messages
|
||||
.Where(e => e.GuildId.Equals(Context.Guild.Id.AsLong()))
|
||||
.Select(e => e.MessageCount)
|
||||
.Sum();
|
||||
}
|
||||
|
||||
var highscoreUsers = new Dictionary<RankUserDto, int>();
|
||||
var failedToRetrieveUser = false;
|
||||
foreach (var user in list)
|
||||
|
@ -112,7 +121,7 @@ namespace Geekbot.net.Commands.User.Ranking
|
|||
}
|
||||
|
||||
if (failedToRetrieveUser) replyBuilder.AppendLine(":warning: Couldn't get all userdata\n");
|
||||
replyBuilder.AppendLine($":bar_chart: **{type} Highscore for {Context.Guild.Name}**");
|
||||
replyBuilder.AppendLine($":bar_chart: **{type.ToString().CapitalizeFirst()} Highscore for {Context.Guild.Name}**");
|
||||
var highscorePlace = 1;
|
||||
foreach (var user in highscoreUsers)
|
||||
{
|
||||
|
@ -123,8 +132,10 @@ namespace Geekbot.net.Commands.User.Ranking
|
|||
replyBuilder.Append(user.Key.Username != null
|
||||
? $"**{user.Key.Username}#{user.Key.Discriminator}**"
|
||||
: $"**{user.Key.Id}**");
|
||||
|
||||
replyBuilder.Append($" - {user.Value} {type}\n");
|
||||
|
||||
replyBuilder.Append(type == RankType.messages
|
||||
? $" - {user.Value} {type} - {Math.Round((double) (100 * user.Value) / guildMessages, digits: 2)}%\n"
|
||||
: $" - {user.Value} {type}\n");
|
||||
|
||||
highscorePlace++;
|
||||
}
|
||||
|
@ -133,12 +144,17 @@ namespace Geekbot.net.Commands.User.Ranking
|
|||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_errorHandler.HandleCommandException(e, Context);
|
||||
await _errorHandler.HandleCommandException(e, Context);
|
||||
}
|
||||
}
|
||||
|
||||
private Dictionary<ulong, int> GetMessageList(int amount)
|
||||
{
|
||||
// return _database.Messages
|
||||
// .Where(k => k.GuildId.Equals(Context.Guild.Id.AsLong()))
|
||||
// .OrderByDescending(o => o.MessageCount)
|
||||
// .Take(amount)
|
||||
// .ToDictionary(key => key.UserId.AsUlong(), key => key.MessageCount);
|
||||
return _redis.Db
|
||||
.HashGetAll($"{Context.Guild.Id}:Messages").ToDictionary().Take(amount + 1)
|
||||
.Where(user => !user.Key.Equals(0))
|
||||
|
|
|
@ -39,11 +39,18 @@ namespace Geekbot.net.Commands.User
|
|||
var age = Math.Floor((DateTime.Now - createdAt).TotalDays);
|
||||
var joinedDayAgo = Math.Floor((DateTime.Now - joinedAt).TotalDays);
|
||||
|
||||
var messages = (int) _redis.Db.HashGet($"{Context.Guild.Id}:Messages", userInfo.Id.ToString());
|
||||
var guildMessages = (int) _redis.Db.HashGet($"{Context.Guild.Id}:Messages", 0.ToString());
|
||||
var messages = _database.Messages.FirstOrDefault(e =>
|
||||
e.GuildId.Equals(Context.Guild.Id.AsLong()) &&
|
||||
e.UserId.Equals(userInfo.Id.AsLong()))?.MessageCount;
|
||||
|
||||
var guildMessages = _database.Messages
|
||||
.Where(e => e.GuildId.Equals(Context.Guild.Id.AsLong()))
|
||||
.Select(e => e.MessageCount)
|
||||
.Sum();
|
||||
|
||||
var level = _levelCalc.GetLevel(messages);
|
||||
|
||||
var percent = Math.Round((double) (100 * messages) / guildMessages, 2);
|
||||
var percent = Math.Round((double) (100 * messages) / guildMessages, digits: 2);
|
||||
|
||||
var eb = new EmbedBuilder();
|
||||
eb.WithAuthor(new EmbedAuthorBuilder()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue