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()); }
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()); }
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); }
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()); }
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!"); } } }
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(); } }