Skip to content

Commit e243f42

Browse files
removed Flag Icon from Welcome Image, cleaned up Welcome Image Generation
1 parent 48697b2 commit e243f42

File tree

2 files changed

+68
-176
lines changed

2 files changed

+68
-176
lines changed

src/main/java/com/javadiscord/javabot/commands/configuation/welcome_system/subcommands/GetList.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ private void send(SlashCommandEvent event) {
4949
event.getHook().sendMessageEmbeds(eb.build())
5050
.addFile(
5151
new ByteArrayInputStream(
52-
new UserJoin().generateImage(event, false, false)),
52+
new UserJoin().generateImage(event.getGuild(), event.getMember())),
5353
event.getMember().getId() + ".png")
5454
.queue();
5555
} catch (Exception e) { e.printStackTrace(); }

src/main/java/com/javadiscord/javabot/events/UserJoin.java

Lines changed: 67 additions & 175 deletions
Original file line numberDiff line numberDiff line change
@@ -29,143 +29,80 @@
2929

3030
public class UserJoin extends ListenerAdapter {
3131

32-
public byte[] generateImage(Object ev, boolean forceFlag, boolean forceBot) throws MalformedURLException {
32+
public static final float NAME_SIZE = 120;
33+
public static final float MEMBERCOUNT_SIZE = 72;
34+
public static final float MAX_STRING_SIZE = 1300;
3335

34-
Guild guild = null;
35-
Member member = null;
36-
37-
if (ev instanceof GuildMessageReceivedEvent event) {
38-
39-
guild = event.getGuild();
40-
member = event.getMember();
41-
}
42-
43-
if (ev instanceof GuildMemberJoinEvent event) {
44-
45-
guild = event.getGuild();
46-
member = event.getMember();
47-
}
48-
49-
if (ev instanceof SlashCommandEvent event) {
50-
51-
guild = event.getGuild();
52-
member = event.getMember();
53-
}
36+
public byte[] generateImage(Guild guild, Member member) throws Exception {
5437

5538
var config = Bot.config.get(guild).getWelcome();
39+
var avatarConfig = config.getImageConfig().getAvatarConfig();
5640

57-
int stringWidth;
58-
int imgW = config.getImageConfig().getWidth();
59-
int imgH = config.getImageConfig().getHeight();
60-
int avX = config.getImageConfig().getAvatarConfig().getX();
61-
int avY = config.getImageConfig().getAvatarConfig().getY();
62-
int avW = config.getImageConfig().getAvatarConfig().getWidth();
63-
int avH = config.getImageConfig().getAvatarConfig().getHeight();
41+
URL overlayURL = new URL(config.getImageConfig().getOverlayImageUrl());
42+
URL bgURL = new URL(config.getImageConfig().getBackgroundImageUrl());
6443

65-
int primCol = config.getImageConfig().getPrimaryColor();
66-
int secCol = config.getImageConfig().getSecondaryColor();
44+
BufferedImage overlayImage = ImageIO.read(overlayURL);
45+
BufferedImage bgImage = ImageIO.read(bgURL);
6746

68-
float memberSize = 120;
69-
float countSize = 72;
47+
BufferedImage bufferedImage = new BufferedImage(config.getImageConfig().getWidth(),
48+
config.getImageConfig().getHeight(), BufferedImage.TYPE_INT_RGB);
49+
Graphics2D g2d = bufferedImage.createGraphics();
50+
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);
51+
g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
7052

71-
Font CountFont, MemberFont;
72-
URL overlayURL, bgURL, avatarURL;
73-
BufferedImage flagImage = null, botImage = null, avatarImage = null, bgImage = null, overlayImage = null;
53+
URL avatarURL = new URL(member.getUser().getEffectiveAvatarUrl() + "?size=4096");
54+
BufferedImage avatarImage = ImageIO.read(avatarURL);
55+
BufferedImage botIcon = ImageIO.read(Objects.requireNonNull(UserJoin.class.getClassLoader().getResourceAsStream("images/BotIcon.png")));
7456

75-
try {
76-
overlayURL = new URL(config.getImageConfig().getOverlayImageUrl());
77-
} catch (MalformedURLException e) {
78-
overlayURL = new URL(iae);
79-
}
57+
Font memberCountFont, nameFont;
8058

8159
try {
82-
bgURL = new URL(config.getImageConfig().getBackgroundImageUrl());
83-
} catch (MalformedURLException e) {
84-
bgURL = new URL(iae);
60+
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
61+
62+
nameFont = Font.createFont(Font.TRUETYPE_FONT, Objects.requireNonNull(UserJoin.class.getClassLoader()
63+
.getResourceAsStream("fonts/Uni-Sans-Heavy.ttf"))).deriveFont(NAME_SIZE);
64+
memberCountFont = Font.createFont(Font.TRUETYPE_FONT, Objects.requireNonNull(UserJoin.class.getClassLoader()
65+
.getResourceAsStream("fonts/Uni-Sans-Heavy.ttf"))).deriveFont(MEMBERCOUNT_SIZE);
66+
67+
ge.registerFont(nameFont);
68+
ge.registerFont(memberCountFont);
69+
} catch (IOException | FontFormatException e) {
70+
nameFont = new Font("Arial", Font.PLAIN, (int) NAME_SIZE);
71+
memberCountFont = new Font("Arial", Font.PLAIN, (int) MEMBERCOUNT_SIZE);
8572
}
8673

87-
try {
88-
overlayImage = ImageIO.read(overlayURL);
89-
} catch (IOException e) { e.printStackTrace();}
90-
74+
g2d.drawImage(bgImage, 0, 0, null);
75+
g2d.drawImage(avatarImage, avatarConfig.getX(), avatarConfig.getY(), avatarConfig.getWidth(), avatarConfig.getHeight(), null);
76+
g2d.drawImage(overlayImage, 0, 0, null);
9177

92-
try {
93-
bgImage = ImageIO.read(bgURL);
94-
} catch (IOException e) { e.printStackTrace();}
78+
g2d.setColor(new Color(config.getImageConfig().getPrimaryColor()));
79+
g2d.setFont(nameFont);
9580

96-
BufferedImage bufferedImage = new BufferedImage(imgW, imgH, BufferedImage.TYPE_INT_RGB);
97-
Graphics2D g2d = bufferedImage.createGraphics();
98-
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);
99-
g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
100-
101-
try {
102-
103-
avatarURL = new URL(member.getUser().getEffectiveAvatarUrl() + "?size=4096");
104-
avatarImage = ImageIO.read(avatarURL);
105-
botImage = ImageIO.read(UserJoin.class.getClassLoader().getResourceAsStream("images/BotIcon.png"));
106-
flagImage = ImageIO.read(UserJoin.class.getClassLoader().getResourceAsStream("images/FlagIcon.png"));
107-
108-
} catch (IOException e) { e.printStackTrace(); }
109-
110-
try {
111-
MemberFont = Font.createFont(Font.TRUETYPE_FONT, UserJoin.class.getClassLoader().getResourceAsStream("fonts/Uni-Sans-Heavy.ttf")).deriveFont(memberSize);
112-
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
113-
114-
ge.registerFont(MemberFont);
115-
} catch (IOException | FontFormatException e) {
116-
MemberFont = new Font("Arial", Font.PLAIN, 120);
117-
}
118-
119-
try {
120-
CountFont = Font.createFont(Font.TRUETYPE_FONT, UserJoin.class.getClassLoader().getResourceAsStream("fonts/Uni-Sans-Heavy.ttf")).deriveFont(countSize);
121-
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
122-
123-
ge.registerFont(CountFont);
124-
} catch (IOException | FontFormatException e) {
125-
CountFont = new Font("Arial", Font.PLAIN, 120);
126-
}
127-
128-
g2d.drawImage(bgImage, 0, 0, null);
129-
g2d.drawImage(avatarImage, avX, avY, avW, avH, null);
130-
g2d.drawImage(overlayImage, 0, 0, null);
131-
132-
g2d.setColor(new Color(primCol));
133-
g2d.setFont(MemberFont);
81+
int stringWidth = g2d.getFontMetrics().stringWidth(member.getUser().getAsTag());
13482

83+
while (stringWidth > MAX_STRING_SIZE) {
84+
Font currentFont = g2d.getFont();
85+
Font newFont = currentFont.deriveFont(currentFont.getSize() - 1F);
86+
g2d.setFont(newFont);
13587
stringWidth = g2d.getFontMetrics().stringWidth(member.getUser().getAsTag());
88+
}
13689

137-
while (stringWidth > 1300) {
138-
139-
Font currentFont = g2d.getFont();
140-
Font newFont = currentFont.deriveFont(currentFont.getSize() - 1F);
141-
g2d.setFont(newFont);
142-
stringWidth = g2d.getFontMetrics().stringWidth(member.getUser().getAsTag());
143-
}
144-
145-
g2d.drawString(member.getUser().getAsTag(), 550, 305);
146-
147-
g2d.setColor(new Color(secCol));
148-
g2d.setFont(CountFont);
149-
g2d.drawString("Member #" + guild.getMemberCount(), 550, 380);
150-
151-
if (member.getUser().isBot() || forceBot) {
152-
g2d.drawImage(botImage, 340, 400, null);
153-
}
154-
155-
if (member.getUser().getTimeCreated().isAfter(OffsetDateTime.now().minusDays(7)) || forceFlag) {
156-
g2d.drawImage(flagImage, 340, 350, null);
157-
}
158-
159-
g2d.dispose();
160-
161-
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
90+
g2d.drawString(member.getUser().getAsTag(), 550, 305);
16291

163-
try {
164-
ImageIO.write(bufferedImage, "png", outputStream);
165-
} catch (IOException e) { e.printStackTrace(); }
92+
g2d.setColor(new Color(config.getImageConfig().getSecondaryColor()));
93+
g2d.setFont(memberCountFont);
94+
g2d.drawString("Member #" + guild.getMemberCount(), 550, 380);
16695

167-
return outputStream.toByteArray();
96+
if (member.getUser().isBot()) {
97+
g2d.drawImage(botIcon, 340, 400, null);
16898
}
99+
g2d.dispose();
100+
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
101+
102+
try { ImageIO.write(bufferedImage, "png", outputStream);
103+
} catch (IOException e) { e.printStackTrace(); }
104+
return outputStream.toByteArray();
105+
}
169106

170107
@Override
171108
public void onGuildMemberJoin(GuildMemberJoinEvent event) {
@@ -176,74 +113,29 @@ public void onGuildMemberJoin(GuildMemberJoinEvent event) {
176113
TextChannel welcomeChannel = event.getGuild().getTextChannelById(welcomeConfig.getChannelId());
177114

178115
if (!ServerLock.lockStatus(event)) {
179-
180116
ServerLock.checkLock(event, user);
181-
182117
CompletableFuture.runAsync(() -> {
183118

184-
try {
185-
186-
if (welcomeConfig.isEnabled()) {
187-
String welcomeMessage = Objects.requireNonNull(welcomeConfig.getJoinMessageTemplate())
188-
.replace("{!member}", event.getMember().getAsMention())
189-
.replace("{!membertag}", event.getMember().getUser().getAsTag())
190-
.replace("{!server}", event.getGuild().getName());
191-
192-
welcomeConfig.getChannel().sendMessage(welcomeMessage)
193-
.addFile(new ByteArrayInputStream(generateImage(event, false, false)), event.getMember().getId() + ".png").queue();
194-
}
195-
196-
StatsCategory.update(event.getGuild());
119+
if (welcomeConfig.isEnabled()) {
120+
String welcomeMessage = Objects.requireNonNull(welcomeConfig.getJoinMessageTemplate())
121+
.replace("{!member}", event.getMember().getAsMention())
122+
.replace("{!membertag}", event.getMember().getUser().getAsTag())
123+
.replace("{!server}", event.getGuild().getName());
197124

198-
} catch (Exception e) { e.printStackTrace(); }
125+
try {
126+
welcomeConfig.getChannel().sendMessage(welcomeMessage)
127+
.addFile(new ByteArrayInputStream(generateImage(event.getGuild(), event.getMember())), event.getMember().getId() + ".png").queue();
128+
} catch (Exception e) { e.printStackTrace(); }
129+
}
130+
StatsCategory.update(event.getGuild());
199131
});
200-
201-
202132
} else {
203-
204-
user.openPrivateChannel().complete().sendMessage(ServerLock.lockEmbed(event.getGuild())).queue();
133+
if (user.hasPrivateChannel()) user.openPrivateChannel().complete()
134+
.sendMessageEmbeds(ServerLock.lockEmbed(event.getGuild())).queue();
205135
event.getMember().kick().complete();
206136

207137
String diff = new TimeUtils().formatDurationToNow(event.getMember().getTimeCreated());
208138
welcomeChannel.sendMessage("**" + event.getMember().getUser().getAsTag() + "**" + " (" + diff + " old) tried to join this server.").queue();
209-
210-
}
211-
}
212-
213-
@Override
214-
public void onGuildMessageReceived(GuildMessageReceivedEvent event) {
215-
try { if (event.getMember().getUser().isBot() || event.getMember() == null) return; }
216-
catch (NullPointerException ignored) { return; }
217-
218-
String[] args = event.getMessage().getContentDisplay().split(" ");
219-
220-
if (args[0].equalsIgnoreCase("!generateImage") && event.getMember().getId().equals("810481402390118400")) {
221-
222-
boolean imgFlag = false;
223-
boolean imgBot = false;
224-
225-
if (args.length > 1) {
226-
switch (args[1]) {
227-
case "imgBot":
228-
imgBot = true;
229-
break;
230-
case "imgFlag":
231-
imgFlag = true;
232-
break;
233-
default:
234-
}
235-
}
236-
237-
boolean finalImgFlag = imgFlag;
238-
boolean finalImgBot = imgBot;
239-
240-
CompletableFuture.runAsync(() -> {
241-
242-
try {
243-
event.getChannel().sendFile(new ByteArrayInputStream(generateImage(event, finalImgFlag, finalImgBot)), event.getMember().getId() + ".png").queue();
244-
}
245-
catch (MalformedURLException e) { e.printStackTrace(); }
246-
});
247139
}
248140
}
249141
}

0 commit comments

Comments
 (0)