Esempio n. 1
0
        public async Task Transfer(IGuildUser toUser, [Remainder] string reason = "Tip.")
        {
            var fromUser = (IGuildUser)Context.Message.Author;
            await _buttcoinService.ActivateAccount(fromUser);

            var(fromAccount, toAccount) = await _buttcoinService.Transfer(Context.Message.Author, toUser, 10, reason);

            var embed = EmbedUtils.CreateTransferEmbed((IGuildUser)Context.User, toUser, fromAccount, toAccount, 10, reason, _logoUrl).Build();

            await DmUtils.SendDm(fromUser, embed);

            await DmUtils.SendDm(toUser, embed);

            await Context.Message.AddReactionAsync(_emote);
        }
Esempio n. 2
0
        public async Task OnMessageReceived(SocketMessage message)
        {
            if (!(message.Channel is SocketTextChannel) || message.Author.IsBot)
            {
                return;
            }

            // Transfer 1
            var plusPlusMatch = _plusPlus.Match(message.Content);

            if (plusPlusMatch.Success && message.Channel is SocketTextChannel channel)
            {
                var   userSearch = plusPlusMatch.Groups[1].Value;
                IUser?toUser;
                if (MentionUtils.TryParseUser(userSearch, out var userId))
                {
                    toUser = channel.GetUser(userId);
                }
                else
                {
                    toUser = (await channel.Guild.SearchUsersAsync(userSearch, 1)).FirstOrDefault();
                }

                if (toUser != null)
                {
                    try
                    {
                        await _buttcoinService.ActivateAccount(message.Author);

                        var(fromAccount, toAccount) = await _buttcoinService.Transfer(message.Author, toUser, 1, "PlusPlus");

                        var embed = EmbedUtils.CreateTransferEmbed((IGuildUser)message.Author, (IGuildUser)toUser, fromAccount, toAccount, 1, "PlusPlus", _logoUrl).Build();

                        await DmUtils.SendDm(message.Author, embed);

                        await DmUtils.SendDm(toUser, embed);

                        await message.AddReactionAsync(_emote);

                        return;
                    }
                    catch (ButtcoinException ex)
                    {
                        await channel.SendMessageAsync(ex.Message);

                        return;
                    }
                }
            }

            // Fetch words if we don't already have it
            if (_words == null)
            {
                var stringWords = await _configurationService.GetButtWords();

                _words = stringWords.Select(x => new Regex($"\\b{x}\\b"));
                _word  = PickWord();
            }

            // Mine buttcoin
            if (!message.Content.StartsWith(_botPrefix) && _word.IsMatch(message.Content))
            {
                var isBruteForce = _words.All(x => x.IsMatch(message.Content));
                await _buttcoinService.MineCoin(message.Author.Id.ToString(), isBruteForce);

                _word = PickWord();
            }
        }