Esempio n. 1
0
        public static Embed GetEmbed(UserObject userObj, UserObject requestUser)
        {
            var footer = new EmbedFooterBuilder()
            {
                Text = "For other commands check !help"
            };

            StringBuilder desc = new StringBuilder();

            desc.Append($"**A path of friends from you to {DsUtils.GetDiscordUsername(userObj.UserId)}**\n");

            var route = TraceRoute(requestUser.TreeId, userObj.TreeId);

            foreach (int k in route)
            {
                var uid = Garden.TreeState.Users[k].UserId;
                desc.Append(DsUtils.GetDiscordUsername(uid) + "\n");
            }

            return(new EmbedBuilder()
            {
                Color = Color.Blue,
                Title = $"**Trace Route**",
                Description = desc.ToString(),
                Footer = footer
            }.Build());
        }
Esempio n. 2
0
        public static Embed GetEmbed(IGuildUser user, UserObject userObj, UserObject requestUser)
        {
            var footer = new EmbedFooterBuilder()
            {
                Text = "For other commands check !help"
            };

            StringBuilder desc = new StringBuilder();

            desc.Append($"**User Information**\n" +
                        $"  - **Joined:** {user.JoinedAt.Value.Date.ToUniversalTime():MM/dd/yyyy}\n" +
                        $"  - **Users Invited:** {userObj.FriendsInvited.Count}\n" +
                        $"  - **Invited By:** Index {userObj.InvitedBy}\n" +
                        $"  - **User Index:** {userObj.TreeId}\n" +
                        $"\n" +
                        $"**Mutual Friends**\n");

            var targetFriends = new HashSet <int>(userObj.FriendsInvited.Union(userObj.Friends))
            {
                userObj.InvitedBy
            };
            var userFriends =
                new HashSet <int>(requestUser.FriendsInvited.Union(requestUser.Friends))
            {
                requestUser.InvitedBy
            };

            targetFriends.IntersectWith(userFriends);

            if (targetFriends.Count == 0)
            {
                desc.Append("You have no mutual friends.\n");
            }
            else
            {
                foreach (var k in targetFriends)
                {
                    desc.Append(DsUtils.GetDiscordUsername(Garden.TreeState.Users[k].UserId) + "\n");
                }
            }

            return(new EmbedBuilder()
            {
                Color = Color.Blue,
                Title = $"**Whois {user.Username}#{user.Discriminator}**",
                Description = desc.ToString(),
                Footer = footer
            }.Build());
        }
Esempio n. 3
0
        public static async Task <bool> OnChatAsync(SocketMessage message)
        {
            if (Network == null)
            {
                Network = ToxiNet.GetToxiNet();
            }
            if (!Garden.TreeState.UnfilteredChannels.Contains(message.Channel.Id))
            {
                var             parsed        = ParseString(message.Content);
                ToxiNetResult[] minPrediction = null;
                string          parsedText    = "";
                float           minValue      = 100;

                foreach (string text in parsed)
                {
                    var result = Network.Predict(text);

                    if (result[0].Prediction <= minValue)
                    {
                        parsedText    = text;
                        minPrediction = result;
                        minValue      = result[0].Prediction;
                    }
                }

                if (minPrediction[0].Prediction < 0.3)
                {
                    if (minPrediction[0].Prediction < 0.1)
                    {
                        await message.DeleteAsync();

                        $"Message Deleted. {DsUtils.GetDiscordUsername(message.Author.Id)}, {parsedText}".Log();
                    }
                    else
                    {
                        await message.Channel.SendMessageAsync(embed : GetEmbed(minPrediction, message));

                        $"User Warned. {DsUtils.GetDiscordUsername(message.Author.Id)}, {parsedText}".Log();
                    }

                    return(false);
                }
            }

            return(true);
        }
Esempio n. 4
0
        public static Embed GetEmbed(UserObject obj)
        {
            var footer = new EmbedFooterBuilder()
            {
                Text = "Contribute to the Server | https://github.com/encodeous/gardener/tree/master"
            };
            StringBuilder sb = new StringBuilder();

            sb.Append("**Friends:**\n");

            foreach (var id in obj.Friends)
            {
                sb.Append(DsUtils.GetDiscordUsername(Garden.TreeState.Users[id].UserId) + "\n");
            }

            sb.Append("\n**Invited Friends:**\n");

            foreach (var id in obj.FriendsInvited)
            {
                var uid = Garden.TreeState.Users[id].UserId;
                sb.Append(DsUtils.GetDiscordUsername(uid) + "\n");
            }

            sb.Append("\n**Invited By:**\n");

            var invitedByTreeId = obj.InvitedBy;
            var invitedByUserId = Garden.TreeState.Users[invitedByTreeId].UserId;

            sb.Append(DsUtils.GetDiscordUsername(invitedByUserId) + "\n");

            return(new EmbedBuilder()
            {
                Color = Color.Green,
                Title = "**Your Friends**",
                Description = sb.ToString(),
                Footer = footer
            }.Build());
        }
Esempio n. 5
0
        public async Task UnFriend(string user)
        {
            if (Limiter.Limit(Context, TimeSpan.FromSeconds(1)))
            {
                if (DsUtils.IsMention(user))
                {
                    ulong discordId   = DsUtils.GetMentionId(user);
                    var   discordUser = await Garden.TheFriendTree.GetUserAsync(discordId);

                    var treeUser = Garden.Tree.GetUser(discordId);

                    var currentTreeUser = Garden.Tree.GetUser(Context.User.Id);

                    if (treeUser != null && treeUser.TreeId != currentTreeUser.TreeId && !discordUser.IsBot)
                    {
                        if (currentTreeUser.Friends.Contains(treeUser.TreeId))
                        {
                            treeUser.Friends.Remove(currentTreeUser.TreeId);
                            currentTreeUser.Friends.Remove(treeUser.TreeId);
                            await ReplyAsync($"You are no longer the friend of {DsUtils.GetDiscordUsername(discordUser.Id)}!");
                        }
                        else
                        {
                            await ReplyAsync($"You are not friends with the person.");
                        }
                    }
                    else
                    {
                        await ReplyAsync($"The target user is not valid in this context!");
                    }
                }
                else
                {
                    await ReplyAsync("Please tag a user!");
                }
            }
        }
Esempio n. 6
0
        public async Task RegisterUser(SocketUser user, string code)
        {
            try
            {
                int inviteCode = ParseCode(code);
                if (Garden.TreeState.InviteMap.ContainsKey(inviteCode))
                {
                    var inviter    = Garden.TreeState.Users[Garden.TreeState.InviteMap[inviteCode]];
                    var inviteUser = await Garden.TheFriendTree.GetUserAsync(inviter.UserId).ConfigureAwait(false);

                    var userObj = CreateUser(user.Id);
                    userObj.InvitedBy = inviter.TreeId;
                    userObj.Friends.Add(inviter.TreeId);
                    int newUserIndex = Garden.TreeState.Users.Count;
                    userObj.TreeId = newUserIndex;

                    Garden.TreeState.Users.Add(userObj);

                    Garden.TreeState.UserMap[user.Id] = userObj.TreeId;

                    Garden.TreeState.InviteMap[userObj.InviteTreeCode] = userObj.TreeId;

                    inviter.FriendsInvited.Add(newUserIndex);

                    inviter.Friends.Add(newUserIndex);

                    Garden.TreeState.UsersConnecting.Remove(user.Id);

                    var channel = await Garden.TheFriendTree.GetTextChannelAsync(Garden.JoinChannel);

                    channel.SendMessageAsync($"Welcome {user.Mention} to The Friend Tree! Please read <#721095701882470491> for more info!").Forget();

                    await GiveRoles(user.Id);

                    Task.Run(() =>
                    {
                        int id = newUserIndex;
                        while (id != Garden.TreeState.Users[id].InvitedBy)
                        {
                            id = Garden.TreeState.Users[id].InvitedBy;
                            Garden.TreeState.Users[id].TotalPeopleInvited++;
                            int cid = id;
                            Task.Run(() => { PeopleInvitedChanged(cid); });
                        }
                    }).Forget();

                    if (inviteUser != null)
                    {
                        user.SendMessageAsync("Your account has been successfully " +
                                              $"linked to the server using {DsUtils.GetDiscordUsername(inviteUser.Id)}'s code.").Forget();
                    }
                    else
                    {
                        user.SendMessageAsync("Your account has been successfully linked to the server.").Forget();
                    }
                }
                else
                {
                    user.SendMessageAsync("**The Tree Code you have entered is not valid.**").Forget();
                }
            }
            catch (Exception e)
            {
                e.Log("Error while processing tree code");
                user.SendMessageAsync("**An error occurred when processing your Tree Code, please try again.**").Forget();
            }
        }