92 lines
3.2 KiB
C#
92 lines
3.2 KiB
C#
using Discord;
|
|
using Discord.Commands;
|
|
using NadekoBot.Extensions;
|
|
using NadekoBot.Core.Services;
|
|
using System.Threading.Tasks;
|
|
using Discord.WebSocket;
|
|
using NadekoBot.Common.Attributes;
|
|
using NadekoBot.Modules.Gambling.Common;
|
|
using NadekoBot.Modules.Gambling.Services;
|
|
using NadekoBot.Modules.Gambling.Common.CurrencyEvents;
|
|
|
|
namespace NadekoBot.Modules.Gambling
|
|
{
|
|
public partial class Gambling
|
|
{
|
|
[Group]
|
|
public class CurrencyEventsCommands : NadekoSubmodule<CurrencyEventsService>
|
|
{
|
|
public enum CurrencyEvent
|
|
{
|
|
Reaction,
|
|
SneakyGameStatus
|
|
}
|
|
|
|
private readonly DiscordSocketClient _client;
|
|
private readonly IBotConfigProvider _bc;
|
|
private readonly CurrencyService _cs;
|
|
|
|
public CurrencyEventsCommands(DiscordSocketClient client, IBotConfigProvider bc, CurrencyService cs)
|
|
{
|
|
_client = client;
|
|
_bc = bc;
|
|
_cs = cs;
|
|
}
|
|
|
|
[NadekoCommand, Usage, Description, Aliases]
|
|
[RequireContext(ContextType.Guild)]
|
|
[OwnerOnly]
|
|
public async Task StartEvent(CurrencyEvent e, int arg = -1)
|
|
{
|
|
switch (e)
|
|
{
|
|
case CurrencyEvent.Reaction:
|
|
await ReactionEvent(Context, arg).ConfigureAwait(false);
|
|
break;
|
|
case CurrencyEvent.SneakyGameStatus:
|
|
await SneakyGameStatusEvent(Context, arg).ConfigureAwait(false);
|
|
break;
|
|
}
|
|
}
|
|
|
|
private async Task SneakyGameStatusEvent(ICommandContext context, int num)
|
|
{
|
|
if (num < 10 || num > 600)
|
|
num = 60;
|
|
|
|
var ev = new SneakyEvent(_cs, _client, _bc, num);
|
|
if (!await _service.StartSneakyEvent(ev, context.Message, context))
|
|
return;
|
|
try
|
|
{
|
|
var title = GetText("sneakygamestatus_title");
|
|
var desc = GetText("sneakygamestatus_desc",
|
|
Format.Bold(100.ToString()) + _bc.BotConfig.CurrencySign,
|
|
Format.Bold(num.ToString()));
|
|
await context.Channel.SendConfirmAsync(title, desc)
|
|
.ConfigureAwait(false);
|
|
}
|
|
catch
|
|
{
|
|
// ignored
|
|
}
|
|
}
|
|
|
|
public async Task ReactionEvent(ICommandContext context, int amount)
|
|
{
|
|
if (amount <= 0)
|
|
amount = 100;
|
|
|
|
var title = GetText("reaction_title");
|
|
var desc = GetText("reaction_desc", _bc.BotConfig.CurrencySign, Format.Bold(amount.ToString()) + _bc.BotConfig.CurrencySign);
|
|
var footer = GetText("reaction_footer", 24);
|
|
var re = new ReactionEvent(_bc.BotConfig, _client, _cs, amount);
|
|
var msg = await context.Channel.SendConfirmAsync(title,
|
|
desc, footer: footer)
|
|
.ConfigureAwait(false);
|
|
await re.Start(msg, context);
|
|
}
|
|
}
|
|
}
|
|
}
|