private static async Task Bot_UserUpdated( SocketUser arg1, SocketUser arg2 ) { if (arg1.IsBot || arg1.IsWebhook) { return; } try { using SkuldDbContext database = new SkuldDbContextFactory() .CreateDbContext(); Skuld.Models.User suser = await database .InsertOrGetUserAsync(arg2) .ConfigureAwait(false); if (!suser.IsUpToDate(arg2)) { suser.AvatarUrl = arg2.GetAvatarUrl() ?? arg2.GetDefaultAvatarUrl(); suser.Username = arg2.Username; await database.SaveChangesAsync().ConfigureAwait(false); } } catch (Exception ex) { Log.Error("UsrJoin", ex.Message, null, ex); } }
public async Task HelpAsync() { EmbedBuilder embed = new EmbedBuilder(); SocketUser user = Context.Message.Author; if (user.GetAvatarUrl() == null) { avatar = user.GetDefaultAvatarUrl(); } else { avatar = user.GetAvatarUrl(); } embed.WithAuthor(user.ToString(), avatar); embed.WithTitle(Context.Client.CurrentUser.Username.ToString() + " " + "Command options!"); embed.WithThumbnailUrl("https://i.imgur.com/dq4HKJr.png"); embed.WithDescription("**INFO: this bot is in `beta` and some of these features may not have full functionality yet*"); embed.AddField("`.j` / `.join`", "Joins voice channel that you are connected to!"); embed.AddField("`.p` / `.play`", "Starts playing in connected voice channel!"); embed.AddField("`.pp` / `.pause`", "Pause playback!"); embed.AddField("`.r` / `.resume`", "Resumes playback!"); embed.AddField("`.ss` / `.skip`", "Stops current song and moves to the next! (requires majority of all users in current voice channel)"); embed.AddField("`.v` / `.volume`", "Ajusts the players volume!"); embed.AddField("`.s` / `.stop`", "Stops playback! (removes all songs from queue)"); embed.AddField("`.l` / `.leave`", "Leave current voice channel!"); embed.AddField("`.q` / `.queue`", "View all songs in queue!"); embed.AddField("`.rp` / `.repeat`", "Infinate queue! (at the end of a song, it is re-added to queue at end)"); embed.AddField("`.list`", "Playlist manager main command!"); embed.AddField("`.list create <playlist name>`", "Create new playlist!"); embed.AddField("`.list del <playlist name>`", "Delete playlist and all its contents!"); embed.AddField("`.list add <playlist name> <track name>`", "Adds a track to the playlist"); embed.AddField("`.list rem <playlist name> <track name>`", "removes a track from playlist"); await ReplyAsync(null, false, embed.Build()); }
public static string GetAvatar(this SocketUser user) { var avi = user.GetAvatarUrl(ImageFormat.Auto, 2048); if (avi != null) { return(avi); } return(user.GetDefaultAvatarUrl()); }
public async Task AvatarAsync([Remainder] string arg = "") { Utilities utilities = new Utilities(Context.Guild); SocketUser target = null; var mentionedUser = Context.Message.MentionedUsers.FirstOrDefault(); target = mentionedUser ?? Context.User; string avatar = target.GetAvatarUrl() ?? target.GetDefaultAvatarUrl(); await ReplyAsync(Utilities.GetFormattedAlert("AVATAR_GET", target.Username, avatar)); }
public CommandUserInfoEmbed(SocketUser user) { ThumbnailUrl = user.GetAvatarUrl() ?? user.GetDefaultAvatarUrl(); Color = global::Discord.Color.Blue; Title = user.GetCompleteUserTag(); AddField("User ID", user.Id); AddField("Created at", "// GET WALLET CREATION DATE"); AddField("Total points", "// GET TOTAL POINTS"); WithCurrentTimestamp(); }
public bool IsUpToDate(SocketUser user) { if (user is null) { return(false); } string avi = user.GetAvatarUrl() ?? user.GetDefaultAvatarUrl(); bool username = Username == user.Username; bool avatar = AvatarUrl == avi; return((username && avatar) == true); }
private EmbedAuthorBuilder AuthorBuilder(User user) { var author = new EmbedAuthorBuilder { Name = Username(user) }; SocketUser discordUser = DiscordUser(user); if (discordUser != null) { author.WithIconUrl(discordUser.GetDefaultAvatarUrl()); } return(author); }
public async Task GetAvatar([ManualOptionalParameter("Self")][Name("User")] SocketUser user = null) { user ??= Context.User; EmbedBuilder builder = new EmbedBuilder { Title = $"{user.Username}'s Avatar", Color = Color.Teal, ImageUrl = user.GetAvatarUrl(ImageFormat.Auto, 2048) ?? user.GetDefaultAvatarUrl() }; builder.WithCurrentTimestamp(); await ReplyAsync(embed : builder.Build()); }
public string LevelUp(SocketUser contextUser, User user) { // Getting User's Avatar Bitmap bmpAvatar; Stream responseStream; if (contextUser.GetAvatarUrl() == null) { System.Net.WebRequest request = System.Net.WebRequest.Create(contextUser.GetDefaultAvatarUrl()); System.Net.WebResponse response = request.GetResponse(); responseStream = response.GetResponseStream(); } else { System.Net.WebRequest request = System.Net.WebRequest.Create(contextUser.GetAvatarUrl()); System.Net.WebResponse response = request.GetResponse(); responseStream = response.GetResponseStream(); } bmpAvatar = new Bitmap(responseStream); Bitmap result = new Bitmap(350, 120); using (Graphics g = Graphics.FromImage(result)) using (StringFormat sf = new StringFormat()) using (SolidBrush b = new SolidBrush(Color.Black)) { g.Clear(m_clrUserInfoBG); sf.LineAlignment = StringAlignment.Center; sf.Alignment = StringAlignment.Center; g.DrawImage(bmpAvatar, 15, 15, 90, 90); using (Font f = new Font(FontCollection.Families[0], 14, FontStyle.Bold)) g.DrawString(Truncate(contextUser.Username.ToUpper(), 11), f, b, new Rectangle(m_nMargin, m_nAvatar + 2 * m_nMargin, 300, 28)); using (Font f = new Font(FontCollection.Families[0], 20, FontStyle.Bold)) g.DrawString("Congratulations!", f, b, new Rectangle(110, 15, 250, 35)); using (Font f = new Font(FontCollection.Families[0], 14, FontStyle.Regular)) g.DrawString("On reaching Level " + user.Level + "", f, b, new Rectangle(111, 48, 250, 25)); } result.Save(Path.Combine(FilePath, user.UserID + ".png"), ImageFormat.Png); return(user.UserID + ".png"); }
public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { if (!DiscordSocketClient.Guilds.Any()) { return; } if (HttpContext.User == null) { await HttpContext.ChallengeAsync(); return; } //Parse the ID to look up socket user ModixUser = ModixUser.FromClaimsPrincipal(HttpContext.User); var guildCookie = Request.Cookies["SelectedGuild"]; ISocketGuild guildToSearch; if (!string.IsNullOrWhiteSpace(guildCookie)) { var guildId = ulong.Parse(guildCookie); guildToSearch = DiscordSocketClient.GetGuild(guildId); } else { guildToSearch = DiscordSocketClient.Guilds.First(); } SocketUser = guildToSearch?.GetUser(ModixUser.UserId); if (SocketUser is null) { await HttpContext.ChallengeAsync(); return; } await AssignClaims(); //Do it again here to assign claims (this is very lazy of us) ModixUser = ModixUser.FromClaimsPrincipal(HttpContext.User); ModixUser.SelectedGuild = SocketUser.Guild.Id; ModixUser.AvatarHash = SocketUser.GetAvatarUrl() ?? SocketUser.GetDefaultAvatarUrl(); await next(); }
public async Task LevelAsync([Remainder] string arg = "") { Utilities utilities = new Utilities(Context.Guild); var mentionedUser = Context.Message.MentionedUsers.FirstOrDefault(); SocketUser target = mentionedUser ?? Context.User; var account = UserAccounts.GetAccount(target); string avatar = target.GetAvatarUrl() ?? target.GetDefaultAvatarUrl(); EmbedBuilder builder = new EmbedBuilder(); builder .WithAuthor(target.Username, avatar) .WithDescription(Utilities.GetFormattedAlert("LEVEL_LEVEL", target.Username, account.XP)); await ReplyAsync("", false, builder.Build()); }
public async Task Info(SocketUser user = null) { if (user == null) { user = Context.User as SocketUser; } var builder = new EmbedBuilder() .AddField("User", $"{user.Id}#{user.Discriminator}", true) .AddField("Created at", user.CreatedAt.ToString("dd/MM/yyyy"), true) .AddField("Joined at", (user as SocketGuildUser).JoinedAt.Value.ToString("dd/MM/yyyy"), true) .AddField("Roles", string.Join(", ", (user as SocketGuildUser).Roles.Select(x => x.Mention)), true) .WithThumbnailUrl(user.GetAvatarUrl() ?? user.GetDefaultAvatarUrl()) .WithColor(Color.Blue) .WithCurrentTimestamp(); var embed = builder.Build(); await ReplyAsync("", false, embed); }
public async Task Info([Summary("Optional user to get info about")] SocketUser mentionedUser = null) { await Context.Channel.TriggerTypingAsync(); if (mentionedUser == null) { mentionedUser = Context.User; //as SocketGuildUser; } _logger.LogInformation("{username}#{discriminator} executed info ({target}) on {server}/{channel}", Context.User.Username, Context.User.Discriminator, mentionedUser?.Username ?? "self", Context.Guild?.Name ?? "DM", Context.Channel.Name); var server = await _servers.GetServer(Context.Guild); var builder = new EmbedBuilder() .WithThumbnailUrl(mentionedUser.GetAvatarUrl() ?? mentionedUser.GetDefaultAvatarUrl()) .WithDescription("User information:") .WithColor(ColorHelper.GetColor(server)) .AddField("User ID", mentionedUser.Id, true) .AddField("Discriminator", mentionedUser.Discriminator, true) .AddField("Created at", mentionedUser.CreatedAt.ToString("MM/dd/yyyy"), true) .WithCurrentTimestamp(); var timezone = await _userTimeZones.GetByUserID(mentionedUser.Id); if (timezone != null) { builder.AddField("Timezone", timezone.TimeZone, true); } SocketGuildUser guildUser = mentionedUser as SocketGuildUser; if (guildUser != null) { builder .AddField("Joined at", guildUser.JoinedAt.Value.ToString("MM/dd/yyyy"), true) .AddField("Roles", string.Join(" ", guildUser.Roles.Select(x => x.Mention))); } var embed = builder.Build(); await ReplyAsync(null, false, embed); }
public async Task ProfileAsync([Remainder] string arg = "") { Utilities utilities = new Utilities(Context.Guild); var mentionedUser = Context.Message.MentionedUsers.FirstOrDefault(); SocketUser target = mentionedUser ?? Context.User; var account = UserAccounts.GetAccount(target); string avatar = target.GetAvatarUrl() ?? target.GetDefaultAvatarUrl(); EmbedBuilder builder = new EmbedBuilder(); builder .WithAuthor(Utilities.GetFormattedAlert("PROFILE_ACCOUNT_NAME", target.Username), avatar) .WithThumbnailUrl(avatar) .WithDescription(account.Description) .AddField(Utilities.GetAlert("PROFILE_ACCOUNT_LEVEL"), $"{account.XP}") .WithFooter(Utilities.GetAlert("BOT_NAME_INPROFILE")) .WithColor(Color.Magenta); await ReplyAsync(" ", false, builder.Build()); }
public async Task GetUserAccountTime(SocketUser user = null) { user ??= this.Context.User; var now = DateTime.UtcNow; var created = user.CreatedAt.UtcDateTime; var difference = (now - created); var totalMonths = difference.TotalDays / 30.4; var years = totalMonths / 12; var months = totalMonths % 12; var days = difference.TotalDays / 30.4; var sb = new StringBuilder(); if (years > 0) { sb.Append($"{years:0} ano(s), "); } if (months > 0) { sb.Append($"{months:0} mes(es), "); } if (days > 0) { sb.Append($"{days:0} dias"); } var e = new EmbedBuilder { Title = sb.ToString(), Description = $"Tempo de conta de {user.Mention}" }; e.ImageUrl = user.GetAvatarUrl() ?? user.GetDefaultAvatarUrl(); await this.ReplyAsync(this.Context.User.Mention, false, e.Build()); }
public static string GetAvatarUrl(SocketUser user) { return user.GetAvatarUrl(size: 1024) ?? user.GetDefaultAvatarUrl(); // Get the avatar and resize it 1024x1024. if the user has no avatar, get the default discord logo. }
public static string GetAvatar(this SocketUser user) { var avi = user.GetAvatarUrl(ImageFormat.Auto, 2048); return(avi ?? user.GetDefaultAvatarUrl()); }
private async Task defaultavatar(params string[] args) { if (args.Length == 0) { await ReplyAsync($"Heres your default avatar! {Context.User.GetDefaultAvatarUrl()}"); } if (args.Length == 1) { if (args[0].Contains("@everyone") | args[0].Contains("@here")) { await ReplyAsync("Tsk Tsk"); } else { if (args[0].Contains("@")) { ulong userid = MentionUtils.ParseUser(args[0]); SocketUser user = Program._client.GetUser(userid); await ReplyAsync($"{Program._client.GetUser(userid)}'s avatar is {user.GetDefaultAvatarUrl()}"); } else { await ReplyAsync("You have to mention someone to get their avatar!"); } } } if (args.Length == 2 | args.Length > 2) { await ReplyAsync("Mention only one user!"); } }
public static string GetAvatar(this SocketUser user) => user.GetAvatarUrl() ?? user.GetDefaultAvatarUrl();
public virtual string GetDefaultAvatarUrl() { return(_socketUser.GetDefaultAvatarUrl()); }
public async Task Profile(SocketUser user = null) { if (user == null) { user = Context.User; } using (var db = Database.Open()) { string path = ""; using (Context.Channel.EnterTypingState()) { string name = (user as IGuildUser).Nickname?.Replace("<", "<").Replace(">", ">") ?? user.Username?.Replace("<", "<").Replace(">", ">"); if (!db.Users.Any(p => p.Id == user.Id)) { await db.Users.AddAsync(new UserEntity { Id = user.Id, Name = $"{user.Username}#{user.Discriminator}" }); } var dbUser = db.Features.FirstOrDefault(p => p.UserId == user.Id && p.GuildId == Context.Guild.Id) ?? db.Features.AddAsync(new FeatureEntity { GuildId = Context.Guild.Id, UserId = user.Id, Exp = 0, Goats = 0 }).Result.Entity; int exp = dbUser.Exp; int goat = dbUser.Goats; var level = Helper.GetLevel(exp); var neededExp1 = Helper.GetEXP(level); var neededExp2 = Helper.GetEXP(level + 1); var currentExp = exp - Helper.GetEXP(level); int totalExp = exp; int currentLevelExp = currentExp; int neededLevelExp = neededExp2 - neededExp1; double dblPercent = ((double)currentLevelExp / (double)neededLevelExp) * 100; int percent = (int)dblPercent; string progress = $"{currentLevelExp.ToFormattedString()} | {neededLevelExp.ToFormattedString()}"; if (level == Helper.exp.OrderByDescending(p => p.Key).First().Key) { percent = 100; progress = $"{currentLevelExp.ToFormattedString()}"; } var ranks = db.Features.AsQueryable().Where(p => p.GuildId == Context.Guild.Id && p.HasLeft == false).OrderByDescending(p => p.Exp); int rank = 1; foreach (var Rank in ranks) { if (Rank.UserId == user.Id) { break; } rank++; } string profilePicture = user.GetAvatarUrl(Discord.ImageFormat.Auto, 128); if (profilePicture == null) { profilePicture = user.GetDefaultAvatarUrl(); } bool isAnimated = profilePicture.Contains(".gif"); using (var image = await _imageService.DrawProfileAsync(new UserProfileDto { Exp = exp.ToFormattedString(), AvatarUrl = profilePicture, Name = name, Goats = goat.ToFormattedString(), Level = level.ToString(), LevelInfo = progress, Percent = percent, Rank = rank.ToString() }, isAnimated)) { await Context.Channel.SendFileAsync(image, $"{name}.{(isAnimated ? "gif" : "png")}", $"{Constants.Fire} {_streakService.GetStreakLevel(dbUser)}"); } await db.SaveChangesAsync(); } } }
public static string DisplayAvatarURL(this SocketUser user) { return(user.GetAvatarUrl() ?? user.GetDefaultAvatarUrl()); }
public string UserInfo(SocketUser contextUser, User user, Inventory inventory) { #region Arrays int[] arIDs = new int[] { inventory.ItemID1, inventory.ItemID2, inventory.ItemID3, inventory.ItemID4, inventory.ItemID5, inventory.ItemID6, inventory.ItemID7, inventory.ItemID8 }; int[] arAmounts = new int[] { inventory.Amount1, inventory.Amount2, inventory.Amount3, inventory.Amount4, inventory.Amount5, inventory.Amount6, inventory.Amount7, inventory.Amount8 }; #endregion // Getting User's Avatar Bitmap bmpAvatar; Stream responseStream; if (contextUser.GetAvatarUrl() == null) { System.Net.WebRequest request = System.Net.WebRequest.Create(contextUser.GetDefaultAvatarUrl()); System.Net.WebResponse response = request.GetResponse(); responseStream = response.GetResponseStream(); } else { System.Net.WebRequest request = System.Net.WebRequest.Create(contextUser.GetAvatarUrl()); System.Net.WebResponse response = request.GetResponse(); responseStream = response.GetResponseStream(); } bmpAvatar = new Bitmap(responseStream); Bitmap result = new Bitmap(UserInfoDefault); using (Graphics g = Graphics.FromImage(result)) using (StringFormat sf = new StringFormat()) using (SolidBrush b = new SolidBrush(Color.Black)) { sf.LineAlignment = StringAlignment.Center; sf.Alignment = StringAlignment.Center; List <Bitmap> arItems = CreateItemImages(arIDs, arAmounts); Bitmap bmpInventoryItems = ItemsGrid(arItems, 2, 4); g.DrawImage(bmpAvatar, m_nMargin, m_nMargin, m_nAvatar, m_nAvatar); g.DrawImage(bmpInventoryItems, m_nAvatar + 2 * m_nMargin + 10, m_nMargin); #region Level using (SolidBrush bBg = new SolidBrush(m_clrUserInfoBG)) g.FillPie(bBg, new Rectangle(m_nAvatar, m_nAvatar, 50, 50), 180, 90); using (Font f = new Font(FontCollection.Families[0], 12, FontStyle.Bold)) g.DrawString(user.Level.ToString(), f, b, new Rectangle(148, 159, 40, 18), sf); #endregion #region Username using (Font f = new Font(FontCollection.Families[0], 14, FontStyle.Bold)) g.DrawString(Truncate(contextUser.Username.ToUpper(), 11), f, b, new Rectangle(m_nMargin, m_nAvatar + 2 * m_nMargin, m_nAvatar + 3 * m_nMargin, 28)); #endregion #region XPBar if (user.Level >= Data.Singleton.Levels.Count) { using (SolidBrush bRectFg = new SolidBrush(Color.FromArgb(90, 130, 190))) using (Font fXP = new Font(FontCollection.Families[0], 8, FontStyle.Regular)) { g.FillRectangle(bRectFg, new Rectangle(m_nMargin, m_nMargin + m_nAvatar + 5, m_nAvatar, 20)); g.DrawString("MAX", fXP, b, new RectangleF(m_nMargin, 179, m_nAvatar, 20), sf); } } else { using (SolidBrush bRectFg = new SolidBrush(Color.FromArgb(90, 130, 190))) using (SolidBrush bRectBg = new SolidBrush(Color.FromArgb(150, 180, 240))) using (SolidBrush bXP = new SolidBrush(Color.Black)) using (Font fXP = new Font(FontCollection.Families[0], 8, FontStyle.Regular)) { g.FillRectangle(bRectBg, new Rectangle(m_nMargin, m_nMargin + m_nAvatar + 5, m_nAvatar, 20)); //Calculating XP Progress int nOldLvlGap = 0; if (user.Level != 1) { nOldLvlGap = Data.Singleton.Levels[user.Level - 1].XPGap; } int nLvlGap = Data.Singleton.Levels[user.Level].XPGap; float fWidth = (user.XP - nOldLvlGap) / ((nLvlGap - nOldLvlGap) / 100); fWidth *= 1.5f; g.FillRectangle(bRectFg, new RectangleF(m_nMargin, m_nMargin + m_nAvatar + 5, fWidth, 20)); g.DrawString(user.XP.ToString() + " / " + Data.Singleton.Levels[user.Level].XPGap.ToString(), fXP, b, new RectangleF(m_nMargin, 179, m_nAvatar, 20), sf); } } #endregion #region Stats using (Font f = new Font(FontCollection.Families[0], 12, FontStyle.Regular)) { #region Money string sMoney = String.Empty; if (user.Money >= 100000) { sMoney = "+99999"; } else { sMoney = user.Money.ToString(); } g.DrawString(sMoney, f, b, new RectangleF(20, 270, 75, 17.5f), sf); #endregion #region Messages string sMessages = String.Empty; if (user.Messages >= 100000) { sMessages = "+99999"; } else { sMessages = user.Messages.ToString(); } g.DrawString(sMessages, f, b, new RectangleF(100, 270, 75, 17.5f), sf); #endregion #region Quests string sQuests = String.Empty; if (user.Quests >= 100000) { sQuests = "+99999"; } else { sQuests = user.Quests.ToString(); } g.DrawString(sQuests, f, b, new RectangleF(20, 335, 75, 17.5f), sf); #endregion #region Warnings g.DrawString(user.Warnings.ToString(), f, b, new RectangleF(100, 335, 75, 17.5f), sf); #endregion #region JoinedDate if (user.JoinedDate == String.Empty) { user.JoinedDate = DateTime.Now.ToString("d. MM. yyyy"); } g.DrawString(user.JoinedDate, f, b, new RectangleF(40, 390, 160, 17.5f)); #endregion } #endregion } result.Save(Path.Combine(FilePath, user.UserID + ".png"), ImageFormat.Png); return(user.UserID + ".png"); }
public static string GetAvatarUrl(SocketUser user, ushort size = 1024) { // Get user avatar and resize it. If the user has no avatar, get the default Discord avatar. return(user.GetAvatarUrl(size: size) ?? user.GetDefaultAvatarUrl()); }
private async Task defaultavatar(params string[] args) { if (args.Length == 0) { await ReplyAsync($"Heres your default avatar! {Context.User.GetDefaultAvatarUrl()}"); } if (args.Length == 1) //Makes sure that there isn't an @everyone or a @here to prevent a mass-ping through the bot. { if (args[0].Contains("@everyone") | args[0].Contains("@here")) { await ReplyAsync("Tsk Tsk"); } else { if (args[0].Contains("@")) //Checks to see if there was any ping by looking to see if there was an @ { ulong userid = MentionUtils.ParseUser(args[0]); SocketUser user = Program._client.GetUser(userid); await ReplyAsync($"{Program._client.GetUser(userid).Username}'s avatar is {user.GetDefaultAvatarUrl()}"); } else { await ReplyAsync("You have to mention someone to get their avatar!"); } } } if (args.Length == 2 | args.Length > 2) { await ReplyAsync("Mention only one user!"); } }
private async Task avatar(params string[] args) { if (args.Length == 0) { string avatarurl = Context.User.GetAvatarUrl(); await ReplyAsync($"Heres your avatar! {avatarurl}"); } if (args.Length == 1) { if (args[0].Contains("@everyone") | args[0].Contains("@here")) //Makes sure that there isn't an @everyone or a @here to prevent a mass-ping through the bot. { await ReplyAsync("Tsk Tsk"); } else { if (args[0].Contains("@")) //Checks to see if there was any ping by looking to see if there was an @ { ulong userid = MentionUtils.ParseUser(args[0]); //Parses the mention to get a userid SocketUser user = Program._client.GetUser(userid); //Defines a SocketUser based on that userid if (user.GetAvatarUrl() == null) //If the user doesn't have an avatar { await ReplyAsync($"{Program._client.GetUser(userid).Username}'s avatar is {user.GetDefaultAvatarUrl()}"); } else //If the user *does* have an avatar { await ReplyAsync($"{Program._client.GetUser(userid).Username}'s avatar is {user.GetAvatarUrl()}"); } } else //If there was *not* an @ { await ReplyAsync("You have to mention someone to get their avatar!"); } } } if (args.Length == 2 | args.Length > 2) { await ReplyAsync("Mention only one user!"); } }