mirror of
				https://gitlab.com/Kwoth/nadekobot.git
				synced 2025-11-04 00:34:26 -05:00 
			
		
		
		
	Some refactorings - Updated editorconfig, removed some unused variables and parameters, updated some old thorwaway variable code, some general cleanup
This commit is contained in:
		@@ -189,9 +189,9 @@ dotnet_naming_rule.const_fields.symbols = const_fields
 | 
			
		||||
dotnet_naming_rule.const_fields.style = all_upper
 | 
			
		||||
dotnet_naming_rule.const_fields.severity = warning
 | 
			
		||||
 | 
			
		||||
dotnet_naming_rule.class_should_be_pascal_case.severity = error
 | 
			
		||||
dotnet_naming_rule.class_should_be_pascal_case.symbols = class
 | 
			
		||||
dotnet_naming_rule.class_should_be_pascal_case.style = pascal_case
 | 
			
		||||
# dotnet_naming_rule.class_should_be_pascal_case.severity = error
 | 
			
		||||
# dotnet_naming_rule.class_should_be_pascal_case.symbols = class
 | 
			
		||||
# dotnet_naming_rule.class_should_be_pascal_case.style = pascal_case
 | 
			
		||||
 | 
			
		||||
dotnet_naming_rule.struct_should_be_pascal_case.severity = error
 | 
			
		||||
dotnet_naming_rule.struct_should_be_pascal_case.symbols = struct
 | 
			
		||||
@@ -201,17 +201,17 @@ dotnet_naming_rule.interface_should_be_begins_with_i.severity = error
 | 
			
		||||
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
 | 
			
		||||
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
 | 
			
		||||
 | 
			
		||||
dotnet_naming_rule.types_should_be_pascal_case.severity = error
 | 
			
		||||
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
 | 
			
		||||
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
 | 
			
		||||
# dotnet_naming_rule.types_should_be_pascal_case.severity = error
 | 
			
		||||
# dotnet_naming_rule.types_should_be_pascal_case.symbols = types
 | 
			
		||||
# dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
 | 
			
		||||
 | 
			
		||||
dotnet_naming_rule.enum_should_be_pascal_case.severity = error
 | 
			
		||||
dotnet_naming_rule.enum_should_be_pascal_case.symbols = enum
 | 
			
		||||
dotnet_naming_rule.enum_should_be_pascal_case.style = pascal_case
 | 
			
		||||
# dotnet_naming_rule.enum_should_be_pascal_case.severity = error
 | 
			
		||||
# dotnet_naming_rule.enum_should_be_pascal_case.symbols = enum
 | 
			
		||||
# dotnet_naming_rule.enum_should_be_pascal_case.style = pascal_case
 | 
			
		||||
 | 
			
		||||
dotnet_naming_rule.property_should_be_pascal_case.severity = error
 | 
			
		||||
dotnet_naming_rule.property_should_be_pascal_case.symbols = property
 | 
			
		||||
dotnet_naming_rule.property_should_be_pascal_case.style = pascal_case
 | 
			
		||||
# dotnet_naming_rule.property_should_be_pascal_case.severity = error
 | 
			
		||||
# dotnet_naming_rule.property_should_be_pascal_case.symbols = property
 | 
			
		||||
# dotnet_naming_rule.property_should_be_pascal_case.style = pascal_case
 | 
			
		||||
 | 
			
		||||
dotnet_naming_rule.method_should_be_pascal_case.severity = error
 | 
			
		||||
dotnet_naming_rule.method_should_be_pascal_case.symbols = method
 | 
			
		||||
@@ -221,9 +221,9 @@ dotnet_naming_rule.async_method_should_be_ends_with_async.severity = error
 | 
			
		||||
dotnet_naming_rule.async_method_should_be_ends_with_async.symbols = async_method
 | 
			
		||||
dotnet_naming_rule.async_method_should_be_ends_with_async.style = ends_with_async
 | 
			
		||||
 | 
			
		||||
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = error
 | 
			
		||||
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
 | 
			
		||||
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
 | 
			
		||||
# dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = error
 | 
			
		||||
# dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
 | 
			
		||||
# dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
 | 
			
		||||
 | 
			
		||||
dotnet_naming_rule.local_variable_should_be_camel_case.severity = error
 | 
			
		||||
dotnet_naming_rule.local_variable_should_be_camel_case.symbols = local_variable
 | 
			
		||||
 
 | 
			
		||||
@@ -40,7 +40,7 @@ public sealed class ShmartNumberTypeReader : NadekoTypeReader<ShmartNumber>
 | 
			
		||||
        }
 | 
			
		||||
        catch (Exception)
 | 
			
		||||
        {
 | 
			
		||||
            return ValueTask.FromResult(TypeReaderResult.FromError<Common.ShmartNumber>(CommandError.ParseFailed, $"Invalid input: {input}"));
 | 
			
		||||
            return ValueTask.FromResult(TypeReaderResult.FromError<ShmartNumber>(CommandError.ParseFailed, $"Invalid input: {input}"));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -64,7 +64,7 @@ public partial class Gambling : GamblingModule<GamblingService>
 | 
			
		||||
        _configService = configService;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private string n(long cur)
 | 
			
		||||
    private string N(long cur)
 | 
			
		||||
    {
 | 
			
		||||
        var flowersCi = (CultureInfo)Culture.Clone();
 | 
			
		||||
        flowersCi.NumberFormat.CurrencySymbol = CurrencySign;
 | 
			
		||||
@@ -78,7 +78,7 @@ public partial class Gambling : GamblingModule<GamblingService>
 | 
			
		||||
    {
 | 
			
		||||
        var wallet = await _cs.GetWalletAsync(userId);
 | 
			
		||||
        var bal = await wallet.GetBalance();
 | 
			
		||||
        return n(bal);
 | 
			
		||||
        return N(bal);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [Cmd]
 | 
			
		||||
@@ -99,7 +99,7 @@ public partial class Gambling : GamblingModule<GamblingService>
 | 
			
		||||
                       .AddField(GetText(strs.currency_one_percent), (onePercent * 100).ToString("F2") + "%")
 | 
			
		||||
                       .AddField(GetText(strs.currency_planted), (BigInteger)ec.Planted)
 | 
			
		||||
                       .AddField(GetText(strs.owned_waifus_total), (BigInteger)ec.Waifus + CurrencySign)
 | 
			
		||||
                       .AddField(GetText(strs.bot_currency), n(ec.Bot))
 | 
			
		||||
                       .AddField(GetText(strs.bot_currency), N(ec.Bot))
 | 
			
		||||
                       .AddField(GetText(strs.total),
 | 
			
		||||
                           ((BigInteger)(ec.Cash + ec.Planted + ec.Waifus)).ToString("N", Culture) + CurrencySign)
 | 
			
		||||
                       .WithOkColor();
 | 
			
		||||
@@ -127,7 +127,7 @@ public partial class Gambling : GamblingModule<GamblingService>
 | 
			
		||||
 | 
			
		||||
        await _cs.AddAsync(ctx.User.Id, val, new("timely", "claim"));
 | 
			
		||||
 | 
			
		||||
        await ReplyConfirmLocalizedAsync(strs.timely(n(val), period));
 | 
			
		||||
        await ReplyConfirmLocalizedAsync(strs.timely(N(val), period));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [Cmd]
 | 
			
		||||
@@ -154,7 +154,7 @@ public partial class Gambling : GamblingModule<GamblingService>
 | 
			
		||||
        if (amount == 0)
 | 
			
		||||
            await ReplyConfirmLocalizedAsync(strs.timely_set_none);
 | 
			
		||||
        else
 | 
			
		||||
            await ReplyConfirmLocalizedAsync(strs.timely_set(Format.Bold(n(amount)), Format.Bold(period.ToString())));
 | 
			
		||||
            await ReplyConfirmLocalizedAsync(strs.timely_set(Format.Bold(N(amount)), Format.Bold(period.ToString())));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [Cmd]
 | 
			
		||||
@@ -230,7 +230,7 @@ public partial class Gambling : GamblingModule<GamblingService>
 | 
			
		||||
            var date = $"#{Format.Code(kwumId)} `〖{GetFormattedCurtrDate(tr)}〗`";
 | 
			
		||||
            
 | 
			
		||||
            
 | 
			
		||||
            sb.AppendLine($"\\{change} {date} {Format.Bold(n(tr.Amount))}");
 | 
			
		||||
            sb.AppendLine($"\\{change} {date} {Format.Bold(N(tr.Amount))}");
 | 
			
		||||
            var transactionString = GetHumanReadableTransaction(tr.Type, tr.Extra, tr.OtherId);
 | 
			
		||||
            if(transactionString is not null)
 | 
			
		||||
                sb.AppendLine(transactionString);
 | 
			
		||||
@@ -270,7 +270,7 @@ public partial class Gambling : GamblingModule<GamblingService>
 | 
			
		||||
        eb.WithAuthor(ctx.User);
 | 
			
		||||
        eb.WithTitle(GetText(strs.transaction));
 | 
			
		||||
        eb.WithDescription(new kwum(tr.Id).ToString());
 | 
			
		||||
        eb.AddField("Amount", n(tr.Amount), false);
 | 
			
		||||
        eb.AddField("Amount", N(tr.Amount));
 | 
			
		||||
        eb.AddField("Type", tr.Type, true);
 | 
			
		||||
        eb.AddField("Extra", tr.Extra, true);
 | 
			
		||||
        
 | 
			
		||||
@@ -332,7 +332,7 @@ public partial class Gambling : GamblingModule<GamblingService>
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        await ReplyConfirmLocalizedAsync(strs.gifted(n(amount), Format.Bold(receiver.ToString())));
 | 
			
		||||
        await ReplyConfirmLocalizedAsync(strs.gifted(N(amount), Format.Bold(receiver.ToString())));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [Cmd]
 | 
			
		||||
@@ -375,7 +375,7 @@ public partial class Gambling : GamblingModule<GamblingService>
 | 
			
		||||
            amount,
 | 
			
		||||
            new TxData("award", ctx.User.ToString()!, msg, ctx.User.Id)
 | 
			
		||||
        );
 | 
			
		||||
        await ReplyConfirmLocalizedAsync(strs.awarded(n(amount), $"<@{usrId}>"));
 | 
			
		||||
        await ReplyConfirmLocalizedAsync(strs.awarded(N(amount), $"<@{usrId}>"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [Cmd]
 | 
			
		||||
@@ -393,7 +393,7 @@ public partial class Gambling : GamblingModule<GamblingService>
 | 
			
		||||
                role.Name,
 | 
			
		||||
                ctx.User.Id));
 | 
			
		||||
 | 
			
		||||
        await ReplyConfirmLocalizedAsync(strs.mass_award(n(amount),
 | 
			
		||||
        await ReplyConfirmLocalizedAsync(strs.mass_award(N(amount),
 | 
			
		||||
            Format.Bold(users.Count.ToString()),
 | 
			
		||||
            Format.Bold(role.Name)));
 | 
			
		||||
    }
 | 
			
		||||
@@ -413,7 +413,7 @@ public partial class Gambling : GamblingModule<GamblingService>
 | 
			
		||||
                null,
 | 
			
		||||
                ctx.User.Id));
 | 
			
		||||
 | 
			
		||||
        await ReplyConfirmLocalizedAsync(strs.mass_take(n(amount),
 | 
			
		||||
        await ReplyConfirmLocalizedAsync(strs.mass_take(N(amount),
 | 
			
		||||
            Format.Bold(users.Count.ToString()),
 | 
			
		||||
            Format.Bold(role.Name)));
 | 
			
		||||
    }
 | 
			
		||||
@@ -433,9 +433,9 @@ public partial class Gambling : GamblingModule<GamblingService>
 | 
			
		||||
            ctx.User.Id);
 | 
			
		||||
        
 | 
			
		||||
        if (await _cs.RemoveAsync(user.Id, amount, extra))
 | 
			
		||||
            await ReplyConfirmLocalizedAsync(strs.take(n(amount), Format.Bold(user.ToString())));
 | 
			
		||||
            await ReplyConfirmLocalizedAsync(strs.take(N(amount), Format.Bold(user.ToString())));
 | 
			
		||||
        else
 | 
			
		||||
            await ReplyErrorLocalizedAsync(strs.take_fail(n(amount), Format.Bold(user.ToString()), CurrencySign));
 | 
			
		||||
            await ReplyErrorLocalizedAsync(strs.take_fail(N(amount), Format.Bold(user.ToString()), CurrencySign));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -452,9 +452,9 @@ public partial class Gambling : GamblingModule<GamblingService>
 | 
			
		||||
            ctx.User.Id);
 | 
			
		||||
        
 | 
			
		||||
        if (await _cs.RemoveAsync(usrId, amount, extra))
 | 
			
		||||
            await ReplyConfirmLocalizedAsync(strs.take(n(amount), $"<@{usrId}>"));
 | 
			
		||||
            await ReplyConfirmLocalizedAsync(strs.take(N(amount), $"<@{usrId}>"));
 | 
			
		||||
        else
 | 
			
		||||
            await ReplyErrorLocalizedAsync(strs.take_fail(n(amount), Format.Code(usrId.ToString()), CurrencySign));
 | 
			
		||||
            await ReplyErrorLocalizedAsync(strs.take_fail(N(amount), Format.Code(usrId.ToString()), CurrencySign));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [Cmd]
 | 
			
		||||
@@ -502,7 +502,7 @@ public partial class Gambling : GamblingModule<GamblingService>
 | 
			
		||||
 | 
			
		||||
            await ReplyConfirmLocalizedAsync(strs.roll_duel_challenge(Format.Bold(ctx.User.ToString()),
 | 
			
		||||
                Format.Bold(u.ToString()),
 | 
			
		||||
                Format.Bold(n(amount))));
 | 
			
		||||
                Format.Bold(N(amount))));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        async Task GameOnGameTick(RollDuelGame arg)
 | 
			
		||||
@@ -530,7 +530,7 @@ public partial class Gambling : GamblingModule<GamblingService>
 | 
			
		||||
                if (reason == RollDuelGame.Reason.Normal)
 | 
			
		||||
                {
 | 
			
		||||
                    var winner = rdGame.Winner == rdGame.P1 ? ctx.User : u;
 | 
			
		||||
                    description += $"\n**{winner}** Won {n((long)(rdGame.Amount * 2 * 0.98))}";
 | 
			
		||||
                    description += $"\n**{winner}** Won {N((long)(rdGame.Amount * 2 * 0.98))}";
 | 
			
		||||
 | 
			
		||||
                    embed = embed.WithDescription(description);
 | 
			
		||||
 | 
			
		||||
@@ -572,7 +572,7 @@ public partial class Gambling : GamblingModule<GamblingService>
 | 
			
		||||
        if (result.Multiplier > 0)
 | 
			
		||||
        {
 | 
			
		||||
            var win = (long)(amount * result.Multiplier);
 | 
			
		||||
            str += GetText(strs.br_win(n(win), result.Threshold + (result.Roll == 100 ? " 👑" : "")));
 | 
			
		||||
            str += GetText(strs.br_win(N(win), result.Threshold + (result.Roll == 100 ? " 👑" : "")));
 | 
			
		||||
            await _cs.AddAsync(ctx.User, win, new("betroll", "win"));
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
@@ -655,7 +655,7 @@ public partial class Gambling : GamblingModule<GamblingService>
 | 
			
		||||
                    var usrStr = x.ToString().TrimTo(20, true);
 | 
			
		||||
 | 
			
		||||
                    var j = i;
 | 
			
		||||
                    embed.AddField("#" + ((9 * curPage) + j + 1) + " " + usrStr, n(x.CurrencyAmount), true);
 | 
			
		||||
                    embed.AddField("#" + ((9 * curPage) + j + 1) + " " + usrStr, N(x.CurrencyAmount), true);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                return embed;
 | 
			
		||||
@@ -668,7 +668,6 @@ public partial class Gambling : GamblingModule<GamblingService>
 | 
			
		||||
    [Cmd]
 | 
			
		||||
    public async partial Task Rps(RpsPick pick, ShmartNumber amount = default)
 | 
			
		||||
    {
 | 
			
		||||
        long oldAmount = amount;
 | 
			
		||||
        if (!await CheckBetOptional(amount) || amount == 1)
 | 
			
		||||
            return;
 | 
			
		||||
 | 
			
		||||
@@ -714,13 +713,12 @@ public partial class Gambling : GamblingModule<GamblingService>
 | 
			
		||||
            amount = (long)(amount * Config.BetFlip.Multiplier);
 | 
			
		||||
            await _cs.AddAsync(ctx.User.Id, amount, new("rps", "win"));
 | 
			
		||||
            embed.WithOkColor();
 | 
			
		||||
            embed.AddField(GetText(strs.won), n(amount));
 | 
			
		||||
            embed.AddField(GetText(strs.won), N(amount));
 | 
			
		||||
            msg = GetText(strs.rps_win(ctx.User.Mention, GetRpsPick(pick), GetRpsPick(nadekoPick)));
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            embed.WithErrorColor();
 | 
			
		||||
            amount = 0;
 | 
			
		||||
            msg = GetText(strs.rps_win(ctx.Client.CurrentUser.Mention, GetRpsPick(nadekoPick), GetRpsPick(pick)));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -112,7 +112,7 @@ public class PlantPickService : INService
 | 
			
		||||
        if (string.IsNullOrWhiteSpace(pass))
 | 
			
		||||
        {
 | 
			
		||||
            // determine the extension
 | 
			
		||||
            using (var img = Image.Load(curImg, out var format))
 | 
			
		||||
            using (_ = Image.Load(curImg, out var format))
 | 
			
		||||
            {
 | 
			
		||||
                extension = format.FileExtensions.FirstOrDefault() ?? "png";
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -282,8 +282,11 @@ public partial class Gambling
 | 
			
		||||
                                                                  .ShopEntries);
 | 
			
		||||
                entry = entries.ElementAtOrDefault(index);
 | 
			
		||||
                if (entry is not null && (rightType = entry.Type == ShopEntryType.List))
 | 
			
		||||
                    if (added = entry.Items.Add(item))
 | 
			
		||||
                    if (entry.Items.Add(item))
 | 
			
		||||
                    {
 | 
			
		||||
                        added = true;
 | 
			
		||||
                        uow.SaveChanges();
 | 
			
		||||
                    }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (entry is null)
 | 
			
		||||
 
 | 
			
		||||
@@ -189,9 +189,9 @@ public partial class Gambling
 | 
			
		||||
            if (page > 100)
 | 
			
		||||
                page = 100;
 | 
			
		||||
 | 
			
		||||
            var waifus = _service.GetTopWaifusAtPage(page);
 | 
			
		||||
            var waifus = _service.GetTopWaifusAtPage(page).ToList();
 | 
			
		||||
 | 
			
		||||
            if (waifus.Count() == 0)
 | 
			
		||||
            if (waifus.Count == 0)
 | 
			
		||||
            {
 | 
			
		||||
                await ReplyConfirmLocalizedAsync(strs.waifus_none);
 | 
			
		||||
                return;
 | 
			
		||||
 
 | 
			
		||||
@@ -130,7 +130,7 @@ public class Deck
 | 
			
		||||
            var toReturn = cards.Max(card => card.Number) - cards.Min(card => card.Number) == 4;
 | 
			
		||||
            if (toReturn || cards.All(c => c.Number != 1)) return toReturn;
 | 
			
		||||
 | 
			
		||||
            var newCards = cards.Select(c => c.Number == 1 ? new(c.Suit, 14) : c);
 | 
			
		||||
            var newCards = cards.Select(c => c.Number == 1 ? new(c.Suit, 14) : c).ToArray();
 | 
			
		||||
            return newCards.Max(card => card.Number) - newCards.Min(card => card.Number) == 4;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -48,15 +48,6 @@ public class GirlRating
 | 
			
		||||
                var imgStream = new MemoryStream();
 | 
			
		||||
                img.SaveAsPng(imgStream);
 | 
			
		||||
                return imgStream;
 | 
			
		||||
                //using (var byteContent = new ByteArrayContent(imgStream.ToArray()))
 | 
			
		||||
                //{
 | 
			
		||||
                //    http.AddFakeHeaders();
 | 
			
		||||
 | 
			
		||||
                //    using (var reponse = await http.PutAsync("https://transfer.sh/img.png", byteContent))
 | 
			
		||||
                //    {
 | 
			
		||||
                //        url = await reponse.Content.ReadAsStringAsync();
 | 
			
		||||
                //    }
 | 
			
		||||
                //}
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
            {
 | 
			
		||||
 
 | 
			
		||||
@@ -154,21 +154,21 @@ public sealed class NunchiGame : IDisposable
 | 
			
		||||
        if (failure is not null)
 | 
			
		||||
            participants.Remove(failure.Value); // remove the dude who failed from the list of players
 | 
			
		||||
 | 
			
		||||
        var __ = OnRoundEnded?.Invoke(this, failure);
 | 
			
		||||
        _ = OnRoundEnded?.Invoke(this, failure);
 | 
			
		||||
        if (participants.Count <= 1) // means we have a winner or everyone was booted out
 | 
			
		||||
        {
 | 
			
		||||
            killTimer.Change(Timeout.Infinite, Timeout.Infinite);
 | 
			
		||||
            CurrentPhase = Phase.Ended;
 | 
			
		||||
            _= OnGameEnded?.Invoke(this, participants.Count > 0 ? participants.First().Name : null);
 | 
			
		||||
            _ = OnGameEnded?.Invoke(this, participants.Count > 0 ? participants.First().Name : null);
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        CurrentPhase = Phase.WaitingForNextRound;
 | 
			
		||||
        var throwawayDelay = Task.Run(async () =>
 | 
			
		||||
        Task.Run(async () =>
 | 
			
		||||
        {
 | 
			
		||||
            await Task.Delay(NEXT_ROUND_TIMEOUT);
 | 
			
		||||
            CurrentPhase = Phase.Playing;
 | 
			
		||||
            var ___ = OnRoundStarted?.Invoke(this, CurrentNumber);
 | 
			
		||||
            _ = OnRoundStarted?.Invoke(this, CurrentNumber);
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -59,8 +59,6 @@ public partial class Games
 | 
			
		||||
        [RequireContext(ContextType.Guild)]
 | 
			
		||||
        public async partial Task Pollend()
 | 
			
		||||
        {
 | 
			
		||||
            var channel = (ITextChannel)ctx.Channel;
 | 
			
		||||
 | 
			
		||||
            Poll p;
 | 
			
		||||
            if ((p = _service.StopPoll(ctx.Guild.Id)) is null)
 | 
			
		||||
                return;
 | 
			
		||||
 
 | 
			
		||||
@@ -337,7 +337,7 @@ public sealed partial class Music : NadekoModule<IMusicService>
 | 
			
		||||
 | 
			
		||||
        var videos = await _service.SearchVideosAsync(query);
 | 
			
		||||
 | 
			
		||||
        if (videos is null || videos.Count == 0)
 | 
			
		||||
        if (videos.Count == 0)
 | 
			
		||||
        {
 | 
			
		||||
            await ReplyErrorLocalizedAsync(strs.song_not_found);
 | 
			
		||||
            return;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,4 @@
 | 
			
		||||
using Ayu.Discord.Voice;
 | 
			
		||||
using NadekoBot.Common.ModuleBehaviors;
 | 
			
		||||
using NadekoBot.Services.Database.Models;
 | 
			
		||||
using System.ComponentModel;
 | 
			
		||||
using System.Diagnostics;
 | 
			
		||||
@@ -291,10 +290,10 @@ public sealed class MusicPlayer : IMusicPlayer
 | 
			
		||||
 | 
			
		||||
    private void HandleQueuePostTrack()
 | 
			
		||||
    {
 | 
			
		||||
        if (this.forceIndex is { } forceIndex)
 | 
			
		||||
        if (forceIndex is { } index)
 | 
			
		||||
        {
 | 
			
		||||
            _queue.SetIndex(forceIndex);
 | 
			
		||||
            this.forceIndex = null;
 | 
			
		||||
            _queue.SetIndex(index);
 | 
			
		||||
            forceIndex = null;
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -107,7 +107,6 @@ public class SearchImageCacher : INService
 | 
			
		||||
 | 
			
		||||
    private ImageData QueryLocal(
 | 
			
		||||
        string[] tags,
 | 
			
		||||
        bool forceExplicit,
 | 
			
		||||
        Booru type,
 | 
			
		||||
        HashSet<string> blacklistedTags)
 | 
			
		||||
    {
 | 
			
		||||
@@ -194,7 +193,7 @@ public class SearchImageCacher : INService
 | 
			
		||||
            return default;
 | 
			
		||||
 | 
			
		||||
        // query for an image
 | 
			
		||||
        var image = QueryLocal(tags, forceExplicit, type, blacklistedTags);
 | 
			
		||||
        var image = QueryLocal(tags, type, blacklistedTags);
 | 
			
		||||
        if (image is not null)
 | 
			
		||||
            return image;
 | 
			
		||||
 | 
			
		||||
@@ -211,7 +210,7 @@ public class SearchImageCacher : INService
 | 
			
		||||
        if (!success)
 | 
			
		||||
            return default;
 | 
			
		||||
 | 
			
		||||
        image = QueryLocal(tags, forceExplicit, type, blacklistedTags);
 | 
			
		||||
        image = QueryLocal(tags, type, blacklistedTags);
 | 
			
		||||
 | 
			
		||||
        return image;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -53,7 +53,7 @@ public class SearchImagesService : ISearchImagesService, INService
 | 
			
		||||
        using var uow = db.GetDbContext();
 | 
			
		||||
        BlacklistedTags = new(uow.NsfwBlacklistedTags.AsEnumerable()
 | 
			
		||||
                                 .GroupBy(x => x.GuildId)
 | 
			
		||||
                                 .ToDictionary(x => x.Key, x => new HashSet<string>(x.Select(x => x.Tag))));
 | 
			
		||||
                                 .ToDictionary(x => x.Key, x => new HashSet<string>(x.Select(y => y.Tag))));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Task<UrlReply> GetNsfwImageAsync(
 | 
			
		||||
 
 | 
			
		||||
@@ -38,7 +38,7 @@ public partial class Searches
 | 
			
		||||
 | 
			
		||||
            var rawJson = await res.Content.ReadAsStringAsync();
 | 
			
		||||
 | 
			
		||||
            var data = JsonConvert.DeserializeObject<List<MemegenTemplate>>(rawJson);
 | 
			
		||||
            var data = JsonConvert.DeserializeObject<List<MemegenTemplate>>(rawJson)!;
 | 
			
		||||
 | 
			
		||||
            await ctx.SendPaginatedConfirmAsync(page,
 | 
			
		||||
                curPage =>
 | 
			
		||||
 
 | 
			
		||||
@@ -520,16 +520,16 @@ public partial class Searches : NadekoModule<SearchesService>
 | 
			
		||||
            await ctx.SendPaginatedConfirmAsync(0,
 | 
			
		||||
                page =>
 | 
			
		||||
                {
 | 
			
		||||
                    var data = col.Skip(page).First();
 | 
			
		||||
                    var model = col.Skip(page).First();
 | 
			
		||||
                    var embed = _eb.Create()
 | 
			
		||||
                                   .WithDescription(ctx.User.Mention)
 | 
			
		||||
                                   .AddField(GetText(strs.word), data.Word, true)
 | 
			
		||||
                                   .AddField(GetText(strs._class), data.WordType, true)
 | 
			
		||||
                                   .AddField(GetText(strs.definition), data.Definition)
 | 
			
		||||
                                   .AddField(GetText(strs.word), model.Word, true)
 | 
			
		||||
                                   .AddField(GetText(strs._class), model.WordType, true)
 | 
			
		||||
                                   .AddField(GetText(strs.definition), model.Definition)
 | 
			
		||||
                                   .WithOkColor();
 | 
			
		||||
 | 
			
		||||
                    if (!string.IsNullOrWhiteSpace(data.Example))
 | 
			
		||||
                        embed.AddField(GetText(strs.example), data.Example);
 | 
			
		||||
                    if (!string.IsNullOrWhiteSpace(model.Example))
 | 
			
		||||
                        embed.AddField(GetText(strs.example), model.Example);
 | 
			
		||||
 | 
			
		||||
                    return embed;
 | 
			
		||||
                },
 | 
			
		||||
 
 | 
			
		||||
@@ -229,6 +229,7 @@ public class SearchesService : INService
 | 
			
		||||
                + $"&by=position"
 | 
			
		||||
                + $"&lat={geoData.Lat}"
 | 
			
		||||
                + $"&lng={geoData.Lon}");
 | 
			
		||||
 | 
			
		||||
            using var geoRes = await http.SendAsync(req);
 | 
			
		||||
            var resString = await geoRes.Content.ReadAsStringAsync();
 | 
			
		||||
            var timeObj = JsonConvert.DeserializeObject<TimeZoneResult>(resString);
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,7 @@
 | 
			
		||||
    <!-- Analysis/Warnings -->
 | 
			
		||||
<!--    <AnalysisMode>Recommended</AnalysisMode>-->
 | 
			
		||||
<!--    <AnalysisModeGlobalization>None</AnalysisModeGlobalization>-->
 | 
			
		||||
<!--    <AnalysisModeNaming>None</AnalysisModeNaming>    -->
 | 
			
		||||
    <AnalysisModeNaming>None</AnalysisModeNaming>    
 | 
			
		||||
    <NoWarn>CS1066</NoWarn>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,6 @@
 | 
			
		||||
#nullable disable
 | 
			
		||||
using LinqToDB;
 | 
			
		||||
using NadekoBot.Services.Currency;
 | 
			
		||||
using NadekoBot.Services.Database.Models;
 | 
			
		||||
 | 
			
		||||
namespace NadekoBot.Services;
 | 
			
		||||
 | 
			
		||||
@@ -67,9 +66,6 @@ public class CurrencyService : ICurrencyService, INService
 | 
			
		||||
        throw new ArgumentOutOfRangeException(nameof(type));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private CurrencyTransaction GetCurrencyTransaction(ulong userId, string reason, long amount)
 | 
			
		||||
        => new() { Amount = amount, UserId = userId, Note = reason ?? "-" };
 | 
			
		||||
 | 
			
		||||
    public async Task AddAsync(
 | 
			
		||||
        ulong userId,
 | 
			
		||||
        long amount,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user