Example #1
0
        public async Task CancelReminder(string id)
        {
            var parsed = BalderHash32.Parse(id);

            if (!parsed.HasValue)
            {
                await TypingReplyAsync("Invalid ID");

                return;
            }

            if (await _reminders.Delete(Context.User.Id, parsed.Value.Value))
            {
                await TypingReplyAsync($"Deleted reminder `{id}`");
            }
            else
            {
                await TypingReplyAsync($"I can't find a reminder with id `{id}`");
            }
        }
Example #2
0
        public async Task Confirm(string input)
        {
            var fid = BalderHash32.Parse(input);

            if (!fid.HasValue)
            {
                await TypingReplyAsync("Invalid ID `{id}`");

                return;
            }

            var transactions = await _pending.Get(debtId : fid.Value.Value).ToArrayAsync();

            if (transactions.Length == 0)
            {
                await TypingReplyAsync($"Cannot find a transaction with ID `{fid}`");

                return;
            }

            if (transactions.Length > 1)
            {
                await TypingReplyAsync($"Found multiple transactions with ID `{fid}`! This is probably an error, please report it.");

                return;
            }

            var transaction = transactions[0];

            if (transaction.ToId != Context.User.Id)
            {
                await TypingReplyAsync("You cannot confirm this transaction");

                return;
            }

            var result = await _pending.ConfirmPending(fid.Value.Value);

            switch (result)
            {
            case ConfirmResult.Confirmed:
                await TypingReplyAsync($"Confirmed {await transaction.Format(_users)}");

                break;

            case ConfirmResult.AlreadyDenied:
                await TypingReplyAsync("This transaction has already been denied and cannot be confirmed");

                break;

            case ConfirmResult.AlreadyConfirmed:
                await TypingReplyAsync("This transaction has already been confirmed");

                break;

            case ConfirmResult.IdNotFound:
                await TypingReplyAsync($"Cannot find a transaction with ID `{fid}`! This is probably an error, please report it.");

                break;

            default:
                await TypingReplyAsync($"Unknown transaction state `{result}`! This is probably an error, please report it.");

                throw new ArgumentOutOfRangeException();
            }
        }
Example #3
0
        public async Task Deny(string input)
        {
            var fid = BalderHash32.Parse(input);

            if (!fid.HasValue)
            {
                await RespondAsync($"Invalid ID `{fid}`");

                return;
            }

            var transactions = await _pending.Get(debtId : fid.Value.Value).ToListAsync();

            if (transactions.Count == 0)
            {
                await RespondAsync($"Cannot find a transaction with ID `{fid}`");

                return;
            }

            if (transactions.Count > 1)
            {
                await RespondAsync($"Found multiple transactions with ID `{fid}`! This is probably an error, please report it.");

                return;
            }

            var transaction = transactions[0];

            if (transaction.ToId != Context.User.Id)
            {
                await RespondAsync("You cannot deny a transaction which does not belong to you");

                return;
            }

            var result = await _pending.DenyPending(fid.Value.Value);

            switch (result)
            {
            case DenyResult.Denied:
                await RespondAsync($"Denied {await transaction.Format(_users, true)}");

                break;

            case DenyResult.AlreadyDenied:
                await RespondAsync("This transaction has already been denied");

                break;

            case DenyResult.AlreadyConfirmed:
                await RespondAsync("This transaction has already been confirmed and can no longer be denied");

                break;

            case DenyResult.IdNotFound:
                await RespondAsync($"Cannot find a transaction with ID `{fid}`! This is probably an error, please report it.");

                break;

            default:
                await RespondAsync($"Unknown transaction state `{result}`! This is probably an error, please report it.");

                throw new ArgumentOutOfRangeException();
            }
        }