mirror of
https://gitlab.com/Kwoth/nadekobot.git
synced 2025-09-10 09:18:27 -04:00
113 lines
3.5 KiB
C#
113 lines
3.5 KiB
C#
#nullable disable
|
|
using Nadeko.Common;
|
|
using NadekoBot.Common.TypeReaders;
|
|
using NadekoBot.Modules.Gambling.Common;
|
|
using NadekoBot.Modules.Gambling.Services;
|
|
|
|
namespace NadekoBot.Modules.Gambling;
|
|
|
|
public partial class Gambling
|
|
{
|
|
[Group]
|
|
public partial class PlantPickCommands : GamblingSubmodule<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 ReplyConfirmLocalizedAsync(strs.picked(N(picked)));
|
|
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 ReplyErrorLocalizedAsync(strs.not_enough(CurrencySign));
|
|
}
|
|
|
|
[Cmd]
|
|
[RequireContext(ContextType.Guild)]
|
|
[UserPerm(GuildPerm.ManageMessages)]
|
|
#if GLOBAL_NADEKO
|
|
[OwnerOnly]
|
|
#endif
|
|
public async Task GenCurrency()
|
|
{
|
|
var enabled = _service.ToggleCurrencyGeneration(ctx.Guild.Id, ctx.Channel.Id);
|
|
if (enabled)
|
|
await ReplyConfirmLocalizedAsync(strs.curgen_enabled);
|
|
else
|
|
await ReplyConfirmLocalizedAsync(strs.curgen_disabled);
|
|
}
|
|
|
|
[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 ctx.SendPaginatedConfirmAsync(page,
|
|
_ =>
|
|
{
|
|
var items = enabledIn.Skip(page * 9).Take(9).ToList();
|
|
|
|
if (!items.Any())
|
|
return _eb.Create().WithErrorColor().WithDescription("-");
|
|
|
|
return items.Aggregate(_eb.Create().WithOkColor(),
|
|
(eb, i) => eb.AddField(i.GuildId.ToString(), i.ChannelId));
|
|
},
|
|
enabledIn.Count(),
|
|
9);
|
|
}
|
|
}
|
|
} |