Using INumber<T> for pretty printing nadeko currency

This commit is contained in:
Kwoth
2023-01-21 01:23:29 +01:00
parent 63a9ae2dac
commit f0ac087fdb
4 changed files with 17 additions and 17 deletions

View File

@@ -1,4 +1,6 @@
namespace Nadeko.Common;
using System.Numerics;
namespace Nadeko.Common;
public readonly struct ShmartNumber : IEquatable<ShmartNumber>
{

View File

@@ -29,7 +29,7 @@ public partial class Gambling
if (await _bank.DepositAsync(ctx.User.Id, amount))
{
await ReplyConfirmLocalizedAsync(strs.bank_deposited(N(amount)));
await ReplyConfirmLocalizedAsync(strs.bank_deposited(N(amount.Value)));
}
else
{
@@ -45,7 +45,7 @@ public partial class Gambling
if (await _bank.WithdrawAsync(ctx.User.Id, amount))
{
await ReplyConfirmLocalizedAsync(strs.bank_withdrew(N(amount)));
await ReplyConfirmLocalizedAsync(strs.bank_withdrew(N(amount.Amount)));
}
else
{

View File

@@ -435,7 +435,7 @@ public partial class Gambling : GamblingModule<GamblingService>
return;
}
if (!await _cs.TransferAsync(_eb, ctx.User, receiver, amount, msg, N(amount)))
if (!await _cs.TransferAsync(_eb, ctx.User, receiver, amount, msg, N(amount.Value)))
{
await ReplyErrorLocalizedAsync(strs.not_enough(CurrencySign));
return;
@@ -744,7 +744,7 @@ public partial class Gambling : GamblingModule<GamblingService>
await ctx.Channel.TriggerTypingAsync();
await _tracker.EnsureUsersDownloadedAsync(ctx.Guild);
var sg = (SocketGuild)ctx.Guild;
var sg = (SocketGuild)ctx.Guild!;
cleanRichest = cleanRichest.Where(x => sg.GetUser(x.UserId) is not null).ToList();
}
else
@@ -920,10 +920,11 @@ public partial class Gambling : GamblingModule<GamblingService>
[OwnerOnly]
public async Task BetTest()
{
await SendConfirmAsync(GetText(strs.available_tests),
Enum.GetValues<GambleTestTarget>()
var values = Enum.GetValues<GambleTestTarget>()
.Select(x => $"`{x}`")
.Join(", "));
.Join(", ");
await SendConfirmAsync(GetText(strs.available_tests), values);
}
[Cmd]

View File

@@ -1,6 +1,7 @@
#nullable disable
using NadekoBot.Modules.Gambling.Services;
using System.Globalization;
using System.Numerics;
namespace NadekoBot.Modules.Gambling.Common;
@@ -39,16 +40,12 @@ public abstract class GamblingModule<TService> : NadekoModule<TService>
return true;
}
public static string N(long cur, IFormatProvider format)
public static string N<T>(T cur, IFormatProvider format)
where T : INumber<T>
=> cur.ToString("C0", format);
public static string N(decimal cur, IFormatProvider format)
=> cur.ToString("C0", format);
protected string N(long cur)
=> N(cur, GetFlowersCiInternal());
protected string N(decimal cur)
protected string N<T>(T cur)
where T : INumber<T>
=> N(cur, GetFlowersCiInternal());
protected IFormatProvider GetFlowersCiInternal()