fix nullref in chatterbot and mapping issue in protectionservice
This commit is contained in:
parent
8fa6b0c999
commit
ba1f5afa01
2 changed files with 82 additions and 74 deletions
src/EllieBot/Modules
|
@ -27,6 +27,7 @@ public class ProtectionService : IReadyExecutor, IEService
|
||||||
private readonly UserPunishService _punishService;
|
private readonly UserPunishService _punishService;
|
||||||
private readonly INotifySubscriber _notifySub;
|
private readonly INotifySubscriber _notifySub;
|
||||||
private readonly ShardData _shardData;
|
private readonly ShardData _shardData;
|
||||||
|
|
||||||
private readonly Channel<PunishQueueItem> _punishUserQueue =
|
private readonly Channel<PunishQueueItem> _punishUserQueue =
|
||||||
Channel.CreateUnbounded<PunishQueueItem>(new()
|
Channel.CreateUnbounded<PunishQueueItem>(new()
|
||||||
{
|
{
|
||||||
|
@ -275,23 +276,25 @@ public class ProtectionService : IReadyExecutor, IEService
|
||||||
await using var uow = _db.GetDbContext();
|
await using var uow = _db.GetDbContext();
|
||||||
|
|
||||||
await uow.GetTable<AntiRaidSetting>()
|
await uow.GetTable<AntiRaidSetting>()
|
||||||
.InsertOrUpdateAsync(() => new()
|
.InsertOrUpdateAsync(() => new()
|
||||||
{
|
{
|
||||||
GuildId = guildId,
|
GuildId = guildId,
|
||||||
Action = action,
|
Action = action,
|
||||||
Seconds = seconds,
|
Seconds = seconds,
|
||||||
UserThreshold = userThreshold,
|
UserThreshold = userThreshold,
|
||||||
PunishDuration = minutesDuration
|
PunishDuration = minutesDuration
|
||||||
}, _ => new()
|
},
|
||||||
{
|
_ => new()
|
||||||
Action = action,
|
{
|
||||||
Seconds = seconds,
|
Action = action,
|
||||||
UserThreshold = userThreshold,
|
Seconds = seconds,
|
||||||
PunishDuration = minutesDuration
|
UserThreshold = userThreshold,
|
||||||
}, () => new()
|
PunishDuration = minutesDuration
|
||||||
{
|
},
|
||||||
GuildId = guildId
|
() => new()
|
||||||
});
|
{
|
||||||
|
GuildId = guildId
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
return stats;
|
return stats;
|
||||||
|
@ -362,23 +365,25 @@ public class ProtectionService : IReadyExecutor, IEService
|
||||||
await using var uow = _db.GetDbContext();
|
await using var uow = _db.GetDbContext();
|
||||||
await uow.GetTable<AntiSpamSetting>()
|
await uow.GetTable<AntiSpamSetting>()
|
||||||
.InsertOrUpdateAsync(() => new()
|
.InsertOrUpdateAsync(() => new()
|
||||||
{
|
{
|
||||||
GuildId = guildId,
|
GuildId = guildId,
|
||||||
Action = stats.AntiSpamSettings.Action,
|
Action = stats.AntiSpamSettings.Action,
|
||||||
MessageThreshold = stats.AntiSpamSettings.MessageThreshold,
|
MessageThreshold = stats.AntiSpamSettings.MessageThreshold,
|
||||||
MuteTime = stats.AntiSpamSettings.MuteTime,
|
MuteTime = stats.AntiSpamSettings.MuteTime,
|
||||||
RoleId = stats.AntiSpamSettings.RoleId
|
RoleId = stats.AntiSpamSettings.RoleId
|
||||||
}, (old) => new()
|
},
|
||||||
{
|
(old) => new()
|
||||||
GuildId = guildId,
|
{
|
||||||
Action = stats.AntiSpamSettings.Action,
|
GuildId = guildId,
|
||||||
MessageThreshold = stats.AntiSpamSettings.MessageThreshold,
|
Action = stats.AntiSpamSettings.Action,
|
||||||
MuteTime = stats.AntiSpamSettings.MuteTime,
|
MessageThreshold = stats.AntiSpamSettings.MessageThreshold,
|
||||||
RoleId = stats.AntiSpamSettings.RoleId
|
MuteTime = stats.AntiSpamSettings.MuteTime,
|
||||||
}, () => new()
|
RoleId = stats.AntiSpamSettings.RoleId
|
||||||
{
|
},
|
||||||
GuildId = guildId
|
() => new()
|
||||||
});
|
{
|
||||||
|
GuildId = guildId
|
||||||
|
});
|
||||||
|
|
||||||
return stats;
|
return stats;
|
||||||
}
|
}
|
||||||
|
@ -459,22 +464,24 @@ public class ProtectionService : IReadyExecutor, IEService
|
||||||
|
|
||||||
await uow.GetTable<AntiAltSetting>()
|
await uow.GetTable<AntiAltSetting>()
|
||||||
.InsertOrUpdateAsync(() => new()
|
.InsertOrUpdateAsync(() => new()
|
||||||
{
|
{
|
||||||
GuildId = guildId,
|
GuildId = guildId,
|
||||||
Action = action,
|
Action = action,
|
||||||
ActionDurationMinutes = actionDurationMinutes,
|
ActionDurationMinutes = actionDurationMinutes,
|
||||||
MinAge = TimeSpan.FromMinutes(minAgeMinutes),
|
MinAge = TimeSpan.FromMinutes(minAgeMinutes),
|
||||||
RoleId = roleId
|
RoleId = roleId
|
||||||
}, _ => new()
|
},
|
||||||
{
|
_ => new()
|
||||||
Action = action,
|
{
|
||||||
ActionDurationMinutes = actionDurationMinutes,
|
Action = action,
|
||||||
MinAge = TimeSpan.FromMinutes(minAgeMinutes),
|
ActionDurationMinutes = actionDurationMinutes,
|
||||||
RoleId = roleId
|
MinAge = TimeSpan.FromMinutes(minAgeMinutes),
|
||||||
}, () => new()
|
RoleId = roleId
|
||||||
{
|
},
|
||||||
GuildId = guildId
|
() => new()
|
||||||
});
|
{
|
||||||
|
GuildId = guildId
|
||||||
|
});
|
||||||
|
|
||||||
_antiAltGuilds[guildId] = new(new()
|
_antiAltGuilds[guildId] = new(new()
|
||||||
{
|
{
|
||||||
|
@ -502,9 +509,9 @@ public class ProtectionService : IReadyExecutor, IEService
|
||||||
{
|
{
|
||||||
await using var uow = _db.GetDbContext();
|
await using var uow = _db.GetDbContext();
|
||||||
|
|
||||||
var configs = await uow.GetTable<AntiAltSetting>()
|
var configs = await uow.Set<AntiAltSetting>()
|
||||||
.AsNoTracking()
|
.AsNoTracking()
|
||||||
.Where(x => Queries.GuildOnShard(x.GuildId, _shardData.TotalShards, _shardData.ShardId))
|
.Where(x => x.GuildId / 4194304 % (ulong)_shardData.TotalShards == (ulong)_shardData.ShardId)
|
||||||
.ToListAsyncEF();
|
.ToListAsyncEF();
|
||||||
|
|
||||||
foreach (var config in configs)
|
foreach (var config in configs)
|
||||||
|
|
|
@ -13,7 +13,7 @@ namespace EllieBot.Modules.Games.Services;
|
||||||
|
|
||||||
public class ChatterBotService : IExecOnMessage, IReadyExecutor
|
public class ChatterBotService : IExecOnMessage, IReadyExecutor
|
||||||
{
|
{
|
||||||
private ConcurrentDictionary<ulong, Lazy<IChatterBotSession>> _chatterBotGuilds;
|
private ConcurrentDictionary<ulong, Lazy<IChatterBotSession>> _chatterBotGuilds = [];
|
||||||
|
|
||||||
public int Priority
|
public int Priority
|
||||||
=> 1;
|
=> 1;
|
||||||
|
@ -165,8 +165,8 @@ public class ChatterBotService : IExecOnMessage, IReadyExecutor
|
||||||
(inTokens) + (result.TokensOut / 2 * 3));
|
(inTokens) + (result.TokensOut / 2 * 3));
|
||||||
|
|
||||||
await _sender.Response(channel)
|
await _sender.Response(channel)
|
||||||
.Confirm(result.Text)
|
.Confirm(result.Text)
|
||||||
.SendAsync();
|
.SendAsync();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -204,12 +204,12 @@ public class ChatterBotService : IExecOnMessage, IReadyExecutor
|
||||||
{
|
{
|
||||||
await using var uow = _db.GetDbContext();
|
await using var uow = _db.GetDbContext();
|
||||||
await uow.Set<GuildConfig>()
|
await uow.Set<GuildConfig>()
|
||||||
.ToLinqToDBTable()
|
.ToLinqToDBTable()
|
||||||
.Where(x => x.GuildId == guildId)
|
.Where(x => x.GuildId == guildId)
|
||||||
.UpdateAsync((gc) => new GuildConfig()
|
.UpdateAsync((gc) => new GuildConfig()
|
||||||
{
|
{
|
||||||
CleverbotEnabled = false
|
CleverbotEnabled = false
|
||||||
});
|
});
|
||||||
await uow.SaveChangesAsync();
|
await uow.SaveChangesAsync();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -219,12 +219,12 @@ public class ChatterBotService : IExecOnMessage, IReadyExecutor
|
||||||
await using (var uow = _db.GetDbContext())
|
await using (var uow = _db.GetDbContext())
|
||||||
{
|
{
|
||||||
await uow.Set<GuildConfig>()
|
await uow.Set<GuildConfig>()
|
||||||
.ToLinqToDBTable()
|
.ToLinqToDBTable()
|
||||||
.Where(x => x.GuildId == guildId)
|
.Where(x => x.GuildId == guildId)
|
||||||
.UpdateAsync((gc) => new GuildConfig()
|
.UpdateAsync((gc) => new GuildConfig()
|
||||||
{
|
{
|
||||||
CleverbotEnabled = true
|
CleverbotEnabled = true
|
||||||
});
|
});
|
||||||
|
|
||||||
await uow.SaveChangesAsync();
|
await uow.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
@ -235,12 +235,13 @@ public class ChatterBotService : IExecOnMessage, IReadyExecutor
|
||||||
public async Task OnReadyAsync()
|
public async Task OnReadyAsync()
|
||||||
{
|
{
|
||||||
await using var uow = _db.GetDbContext();
|
await using var uow = _db.GetDbContext();
|
||||||
_chatterBotGuilds = uow.GuildConfigs
|
_chatterBotGuilds = await uow.GuildConfigs
|
||||||
.AsNoTracking()
|
.AsNoTracking()
|
||||||
.Where(gc => gc.CleverbotEnabled)
|
.Where(gc => gc.CleverbotEnabled)
|
||||||
.AsEnumerable()
|
.ToListAsyncLinqToDB()
|
||||||
.ToDictionary(gc => gc.GuildId,
|
.Fmap(x => x
|
||||||
_ => new Lazy<IChatterBotSession>(() => CreateSession(), true))
|
.ToDictionary(gc => gc.GuildId,
|
||||||
.ToConcurrent();
|
_ => new Lazy<IChatterBotSession>(() => CreateSession(), true))
|
||||||
|
.ToConcurrent());
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Add table
Reference in a new issue