Added .betstats command, shows statistics for multiple gambling commands, .slotstats removed as it is obsolete

This commit is contained in:
Kwoth
2022-10-03 13:49:52 +02:00
parent 9ffa701742
commit df3909fc55
13 changed files with 3145 additions and 50 deletions

View File

@@ -29,6 +29,7 @@ public partial class Gambling : GamblingModule<GamblingService>
private readonly IBankService _bank;
private readonly IPatronageService _ps;
private readonly RemindService _remind;
private readonly GamblingTxTracker _gamblingTxTracker;
private IUserMessage rdMsg;
@@ -41,7 +42,8 @@ public partial class Gambling : GamblingModule<GamblingService>
GamblingConfigService configService,
IBankService bank,
IPatronageService ps,
RemindService remind)
RemindService remind,
GamblingTxTracker gamblingTxTracker)
: base(configService)
{
_gs = gs;
@@ -51,6 +53,7 @@ public partial class Gambling : GamblingModule<GamblingService>
_bank = bank;
_ps = ps;
_remind = remind;
_gamblingTxTracker = gamblingTxTracker;
_enUsCulture = new CultureInfo("en-US", false).NumberFormat;
_enUsCulture.NumberDecimalDigits = 0;
@@ -65,6 +68,26 @@ public partial class Gambling : GamblingModule<GamblingService>
return N(bal);
}
[Cmd]
public async Task BetStats()
{
var stats = await _gamblingTxTracker.GetAllAsync();
var eb = _eb.Create(ctx)
.WithOkColor();
var str = "**Feature | Bet | Paid Out | Payout %** \n";
foreach (var stat in stats)
{
var perc = (stat.PaidOut / stat.Bet).ToString("P2", Culture);
str += $"{stat.Feature, 8} | {stat.Bet, 15} | {stat.PaidOut, 15} | {perc}\n";
}
eb.WithDescription(str);
await ctx.Channel.EmbedAsync(eb);
}
[Cmd]
public async Task Economy()
{

View File

@@ -47,27 +47,6 @@ public partial class Gambling
public Task Test()
=> Task.CompletedTask;
[Cmd]
[OwnerOnly]
public async Task SlotStats()
{
//i remembered to not be a moron
var paid = totalPaidOut;
var bet = totalBet;
if (bet <= 0)
bet = 1;
var embed = _eb.Create()
.WithOkColor()
.WithTitle("Slot Stats")
.AddField("Total Bet", N(bet), true)
.AddField("Paid Out", N(paid), true)
.WithFooter($"Payout Rate: {paid * 1.0M / bet * 100:f4}%");
await ctx.Channel.EmbedAsync(embed);
}
[Cmd]
public async Task Slot(ShmartNumber amount)
{