forked from EllieBotDevs/elliebot
114 lines
No EOL
3.6 KiB
C#
114 lines
No EOL
3.6 KiB
C#
#nullable disable
|
|
using EllieBot.Common.TypeReaders;
|
|
using EllieBot.Modules.Gambling.Common;
|
|
using EllieBot.Modules.Gambling.Services;
|
|
|
|
namespace EllieBot.Modules.Gambling;
|
|
|
|
public partial class Gambling
|
|
{
|
|
[Group]
|
|
public partial class PlantPickCommands : GamblingModule<PlantPickService>
|
|
{
|
|
private readonly ILogCommandService _logService;
|
|
|
|
public PlantPickCommands(ILogCommandService logService, GamblingConfigService gss)
|
|
: base(gss)
|
|
=> _logService = logService;
|
|
|
|
[Cmd]
|
|
[RequireContext(ContextType.Guild)]
|
|
public async Task Pick(string pass = null)
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(pass) && !pass.IsAlphaNumeric())
|
|
return;
|
|
|
|
var picked = await _service.PickAsync(ctx.Guild.Id, (ITextChannel)ctx.Channel, ctx.User.Id, pass);
|
|
|
|
if (picked > 0)
|
|
{
|
|
var msg = await Response().NoReply().Confirm(strs.picked(N(picked), ctx.User)).SendAsync();
|
|
msg.DeleteAfter(10);
|
|
}
|
|
|
|
if (((SocketGuild)ctx.Guild).CurrentUser.GuildPermissions.ManageMessages)
|
|
{
|
|
try
|
|
{
|
|
_logService.AddDeleteIgnore(ctx.Message.Id);
|
|
await ctx.Message.DeleteAsync();
|
|
}
|
|
catch { }
|
|
}
|
|
}
|
|
|
|
[Cmd]
|
|
[RequireContext(ContextType.Guild)]
|
|
public async Task Plant([OverrideTypeReader(typeof(BalanceTypeReader))] long amount, string pass = null)
|
|
{
|
|
if (amount < 1)
|
|
return;
|
|
|
|
if (!string.IsNullOrWhiteSpace(pass) && !pass.IsAlphaNumeric())
|
|
return;
|
|
|
|
if (((SocketGuild)ctx.Guild).CurrentUser.GuildPermissions.ManageMessages)
|
|
{
|
|
_logService.AddDeleteIgnore(ctx.Message.Id);
|
|
await ctx.Message.DeleteAsync();
|
|
}
|
|
|
|
var success = await _service.PlantAsync(ctx.Guild.Id,
|
|
ctx.Channel,
|
|
ctx.User.Id,
|
|
ctx.User.ToString(),
|
|
amount,
|
|
pass);
|
|
|
|
if (!success)
|
|
await Response().Error(strs.not_enough(CurrencySign)).SendAsync();
|
|
}
|
|
|
|
[Cmd]
|
|
[RequireContext(ContextType.Guild)]
|
|
[UserPerm(GuildPerm.ManageMessages)]
|
|
#if GLOBAL_ELLIE
|
|
[OwnerOnly]
|
|
#endif
|
|
public async Task GenCurrency()
|
|
{
|
|
var enabled = _service.ToggleCurrencyGeneration(ctx.Guild.Id, ctx.Channel.Id);
|
|
if (enabled)
|
|
await Response().Confirm(strs.curgen_enabled).SendAsync();
|
|
else
|
|
await Response().Confirm(strs.curgen_disabled).SendAsync();
|
|
}
|
|
|
|
[Cmd]
|
|
[RequireContext(ContextType.Guild)]
|
|
[UserPerm(GuildPerm.ManageMessages)]
|
|
[OwnerOnly]
|
|
public Task GenCurList(int page = 1)
|
|
{
|
|
if (--page < 0)
|
|
return Task.CompletedTask;
|
|
|
|
var enabledIn = _service.GetAllGeneratingChannels();
|
|
|
|
return Response()
|
|
.Paginated()
|
|
.Items(enabledIn.ToList())
|
|
.PageSize(9)
|
|
.CurrentPage(page)
|
|
.Page((items, _) =>
|
|
{
|
|
if (!items.Any())
|
|
return CreateEmbed().WithErrorColor().WithDescription("-");
|
|
|
|
return items.Aggregate(CreateEmbed().WithOkColor(),
|
|
(eb, i) => eb.AddField(i.GuildId.ToString(), i.ChannelId));
|
|
})
|
|
.SendAsync();
|
|
}
|
|
}
|
|
} |