Compare commits

..

8 Commits

8 changed files with 44 additions and 17 deletions

View File

@@ -1,9 +1,18 @@
# Changelog # Changelog
Experimental changelog. Mostly based on [keepachangelog](https://keepachangelog.com/en/1.0.0/) except date format. a-c-f-r-o Experimental changelog. Mostly based on [keepachangelog](https://keepachangelog.com/en/1.0.0/) except date format. a-c-f-r-o
## [4.2.9] - 25.06.202 ## [4.2.11] - 29.06.2022
### Fixed
- Fixed `.draw` command
## [4.2.10] - 29.06.2022
- Fixed currency generation working only once
## [4.2.9] - 25.06.2022
### Fixed ### Fixed

View File

@@ -64,7 +64,9 @@ public class CmdAttribute : System.Attribute
public void Initialize(IncrementalGeneratorInitializationContext context) public void Initialize(IncrementalGeneratorInitializationContext context)
{ {
// #if DEBUG // #if DEBUG
// SpinWait.SpinUntil(() => Debugger.IsAttached); // if (!Debugger.IsAttached)
// Debugger.Launch();
// // SpinWait.SpinUntil(() => Debugger.IsAttached);
// #endif // #endif
context.RegisterPostInitializationOutput(static ctx => ctx.AddSource( context.RegisterPostInitializationOutput(static ctx => ctx.AddSource(
"CmdAttribute.g.cs", "CmdAttribute.g.cs",
@@ -157,7 +159,8 @@ public class CmdAttribute : System.Attribute
.Distinct(); .Distinct();
var methodModels = methods var methodModels = methods
.Select(x => MethodDeclarationToMethodModel(compilation, x!)); .Select(x => MethodDeclarationToMethodModel(compilation, x!))
.Where(static x => x is not null);
var groups = methodModels var groups = methodModels
.GroupBy(static x => $"{x.Namespace}.{string.Join(".", x.Classes)}"); .GroupBy(static x => $"{x.Namespace}.{string.Join(".", x.Classes)}");
@@ -187,11 +190,21 @@ public class CmdAttribute : System.Attribute
return models; return models;
} }
private static MethodModel MethodDeclarationToMethodModel(Compilation comp, MethodDeclarationSyntax decl) private static MethodModel? MethodDeclarationToMethodModel(Compilation comp, MethodDeclarationSyntax decl)
{ {
// SpinWait.SpinUntil(static () => Debugger.IsAttached); // SpinWait.SpinUntil(static () => Debugger.IsAttached);
var semanticModel = comp.GetSemanticModel(decl.SyntaxTree); SemanticModel semanticModel;
try
{
semanticModel = comp.GetSemanticModel(decl.SyntaxTree);
}
catch
{
// for some reason this method can throw "Not part of this compilation" argument exception
return null;
}
var methodModel = new MethodModel( var methodModel = new MethodModel(
@params: decl.ParameterList.Parameters @params: decl.ParameterList.Parameters
.Where(p => p.Type is not null) .Where(p => p.Type is not null)

View File

@@ -44,7 +44,7 @@ public partial class Gambling
var currentCard = cards.Draw(); var currentCard = cards.Draw();
cardObjects.Add(currentCard); cardObjects.Add(currentCard);
var cardName = currentCard.ToString().ToLowerInvariant().Replace(' ', '_'); var cardName = currentCard.ToString().ToLowerInvariant().Replace(' ', '_');
images.Add(Image.Load(await File.ReadAllBytesAsync($"data/images/cards/{cardName}.png"))); images.Add(Image.Load(await File.ReadAllBytesAsync($"data/images/cards/{cardName}.jpg")));
} }
using var img = images.Merge(); using var img = images.Merge();

View File

@@ -16,7 +16,7 @@ namespace NadekoBot.Modules.Gambling.Services;
public class PlantPickService : INService, IExecNoCommand public class PlantPickService : INService, IExecNoCommand
{ {
//channelId/last generation //channelId/last generation
public ConcurrentDictionary<ulong, DateTime> LastGenerations { get; } = new(); public ConcurrentDictionary<ulong, long> LastGenerations { get; } = new();
private readonly DbService _db; private readonly DbService _db;
private readonly IBotStrings _strings; private readonly IBotStrings _strings;
private readonly IImageCache _images; private readonly IImageCache _images;
@@ -175,15 +175,15 @@ public class PlantPickService : INService, IExecNoCommand
try try
{ {
var config = _gss.Data; var config = _gss.Data;
var lastGeneration = LastGenerations.GetOrAdd(channel.Id, DateTime.MinValue); var lastGeneration = LastGenerations.GetOrAdd(channel.Id, DateTime.MinValue.ToBinary());
var rng = new NadekoRandom(); var rng = new NadekoRandom();
if (DateTime.UtcNow - TimeSpan.FromSeconds(config.Generation.GenCooldown) if (DateTime.UtcNow - TimeSpan.FromSeconds(config.Generation.GenCooldown)
< lastGeneration) //recently generated in this channel, don't generate again < DateTime.FromBinary(lastGeneration)) //recently generated in this channel, don't generate again
return; return;
var num = rng.Next(1, 101) + (config.Generation.Chance * 100); var num = rng.Next(1, 101) + (config.Generation.Chance * 100);
if (num > 100 && LastGenerations.TryUpdate(channel.Id, DateTime.UtcNow, lastGeneration)) if (num > 100 && LastGenerations.TryUpdate(channel.Id, DateTime.UtcNow.ToBinary(), lastGeneration))
{ {
var dropAmount = config.Generation.MinAmount; var dropAmount = config.Generation.MinAmount;
var dropAmountMax = config.Generation.MaxAmount; var dropAmountMax = config.Generation.MaxAmount;

View File

@@ -4,6 +4,7 @@ using Newtonsoft.Json.Linq;
namespace NadekoBot.Modules.Nsfw; namespace NadekoBot.Modules.Nsfw;
#if !GLOBAL_NADEKO
[NoPublicBot] [NoPublicBot]
public partial class NSFW : NadekoModule<ISearchImagesService> public partial class NSFW : NadekoModule<ISearchImagesService>
{ {
@@ -437,3 +438,4 @@ public partial class NSFW : NadekoModule<ISearchImagesService>
$"{data.Rating} ({data.Provider}) | {string.Join(" | ", data.Tags.Where(x => !string.IsNullOrWhiteSpace(x)).Take(5))}")); $"{data.Rating} ({data.Provider}) | {string.Join(" | ", data.Tags.Where(x => !string.IsNullOrWhiteSpace(x)).Take(5))}"));
} }
} }
#endif

View File

@@ -50,7 +50,7 @@ public sealed class FilterService : IExecOnMessage
new(configs.SelectMany(gc => gc.FilterLinksChannelIds.Select(fci => fci.ChannelId))); new(configs.SelectMany(gc => gc.FilterLinksChannelIds.Select(fci => fci.ChannelId)));
var dict = configs.ToDictionary(gc => gc.GuildId, var dict = configs.ToDictionary(gc => gc.GuildId,
gc => new ConcurrentHashSet<string>(gc.FilteredWords.Select(fw => fw.Word))); gc => new ConcurrentHashSet<string>(gc.FilteredWords.Select(fw => fw.Word).Distinct()));
ServerFilteredWords = new(dict); ServerFilteredWords = new(dict);

View File

@@ -35,6 +35,7 @@ public sealed class PatronageService
= new($"quota:last_hourly_reset"); = new($"quota:last_hourly_reset");
private readonly IBotCache _cache; private readonly IBotCache _cache;
private readonly IBotCredsProvider _creds;
public PatronageService( public PatronageService(
PatronageConfig pConf, PatronageConfig pConf,
@@ -42,7 +43,8 @@ public sealed class PatronageService
DiscordSocketClient client, DiscordSocketClient client,
ISubscriptionHandler subsHandler, ISubscriptionHandler subsHandler,
IEmbedBuilderService eb, IEmbedBuilderService eb,
IBotCache cache) IBotCache cache,
IBotCredsProvider creds)
{ {
_pConf = pConf; _pConf = pConf;
_db = db; _db = db;
@@ -50,6 +52,7 @@ public sealed class PatronageService
_subsHandler = subsHandler; _subsHandler = subsHandler;
_eb = eb; _eb = eb;
_cache = cache; _cache = cache;
_creds = creds;
} }
public Task OnReadyAsync() public Task OnReadyAsync()
@@ -495,8 +498,8 @@ public sealed class PatronageService
if (!confData.IsEnabled) if (!confData.IsEnabled)
return default; return default;
// if (_creds.IsOwner(userId)) if (_creds.GetCreds().IsOwner(userId))
// return default; return default;
// get user tier // get user tier
var patron = await GetPatronAsync(userId); var patron = await GetPatronAsync(userId);

View File

@@ -7,7 +7,7 @@ namespace NadekoBot.Services;
public sealed class StatsService : IStatsService, IReadyExecutor, INService public sealed class StatsService : IStatsService, IReadyExecutor, INService
{ {
public const string BOT_VERSION = "4.2.9"; public const string BOT_VERSION = "4.2.11";
public string Author public string Author
=> "Kwoth#2452"; => "Kwoth#2452";