Skip to content

Commit ba04843

Browse files
committed
Finish doing lj-bot example
1 parent 011f09a commit ba04843

File tree

14 files changed

+139
-23
lines changed

14 files changed

+139
-23
lines changed

annotations/src/main/java/com/javadiscord/jdi/core/processor/validator/EventListenerValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ public class EventListenerValidator {
308308
EXPECTED_PARAM_TYPES_MAP.put(
309309
ThreadCreate.class,
310310
new String[] {
311-
"com.javadiscord.jdi.core.gateway.handlers.events.codec.models.channel.Thread",
311+
"com.javadiscord.jdi.internal.gateway.handlers.events.codec.models.channel.Thread",
312312
"com.javadiscord.jdi.core.Discord",
313313
"com.javadiscord.jdi.core.Guild"
314314
}

api/src/main/java/com/javadiscord/jdi/core/api/ChannelRequest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.javadiscord.jdi.core.api.builders.*;
77
import com.javadiscord.jdi.core.models.channel.Channel;
88
import com.javadiscord.jdi.core.models.channel.ThreadMember;
9+
import com.javadiscord.jdi.core.models.emoji.Emoji;
910
import com.javadiscord.jdi.core.models.invite.Invite;
1011
import com.javadiscord.jdi.core.models.message.Message;
1112
import com.javadiscord.jdi.core.models.message.MessageReaction;
@@ -65,7 +66,7 @@ Message.class, new CreateMessageBuilder(channelId).embeds(embeds).build()
6566
public AsyncResponse<MessageReaction> createReaction(
6667
long channelId,
6768
long messageId,
68-
String emoji
69+
Emoji emoji
6970
) {
7071
return responseParser.callAndParse(
7172
MessageReaction.class, new CreateReactionRequest(channelId, messageId, emoji)

api/src/main/java/com/javadiscord/jdi/internal/api/channel/CreateReactionRequest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package com.javadiscord.jdi.internal.api.channel;
22

3+
import com.javadiscord.jdi.core.models.emoji.Emoji;
34
import com.javadiscord.jdi.internal.api.DiscordRequest;
45
import com.javadiscord.jdi.internal.api.DiscordRequestBuilder;
56

67
public record CreateReactionRequest(
78
long channelId,
89
long messageId,
9-
String emoji
10+
Emoji emoji
1011
) implements DiscordRequest {
1112
@Override
1213
public DiscordRequestBuilder create() {

example/lj-discord-bot/src/main/java/com/javadiscord/bot/Main.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.javadiscord.bot;
22

3-
import com.javadiscord.bot.commands.slash.jshell.JShellService;
43
import com.javadiscord.bot.utils.chatgpt.ChatGPT;
4+
import com.javadiscord.bot.utils.jshell.JShellService;
55
import com.javadiscord.jdi.core.Discord;
66
import com.javadiscord.jdi.core.annotations.Component;
77

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1-
package com.javadiscord.bot.commands.slash.jshell;
1+
package com.javadiscord.bot.commands.slash;
22

33
import java.awt.*;
44

5+
import com.javadiscord.bot.utils.jshell.JShellResponse;
6+
import com.javadiscord.bot.utils.jshell.JShellService;
7+
import com.javadiscord.bot.utils.jshell.JShellSnippet;
58
import com.javadiscord.jdi.core.CommandOptionType;
69
import com.javadiscord.jdi.core.annotations.CommandOption;
710
import com.javadiscord.jdi.core.annotations.Inject;
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package com.javadiscord.bot.listeners;
2+
3+
import java.awt.*;
4+
import java.util.ArrayList;
5+
import java.util.List;
6+
7+
import com.javadiscord.bot.utils.chatgpt.ChatGPT;
8+
import com.javadiscord.jdi.core.Guild;
9+
import com.javadiscord.jdi.core.annotations.EventListener;
10+
import com.javadiscord.jdi.core.annotations.Inject;
11+
import com.javadiscord.jdi.core.annotations.MessageCreate;
12+
import com.javadiscord.jdi.core.annotations.ThreadCreate;
13+
import com.javadiscord.jdi.core.models.message.Message;
14+
import com.javadiscord.jdi.core.models.message.embed.Embed;
15+
import com.javadiscord.jdi.core.models.message.embed.EmbedAuthor;
16+
import com.javadiscord.jdi.internal.gateway.handlers.events.codec.models.channel.Thread;
17+
18+
@EventListener
19+
public class QuestionListener {
20+
private final List<Long> channelsThatNeedChatGpt = new ArrayList<>();
21+
22+
@Inject
23+
private ChatGPT chatGPT;
24+
25+
@ThreadCreate
26+
public void onQuestionCreate(Thread thread, Guild guild) {
27+
if (thread.newlyCreated() && thread.parentId() == 1245064991275618511L) {
28+
29+
guild.channel().sendEmbed(
30+
thread.id(), new Embed.Builder()
31+
.description(
32+
"""
33+
# Important
34+
Please make sure your question has enough details for a helper to understand the problem.
35+
36+
* If you are asking for help with code, please use a code block.
37+
* If you are asking for help with an error, please include the full error message.
38+
* Screenshots may also be useful. Please do not post screenshots of code, however.
39+
"""
40+
)
41+
.image(
42+
"https://media.tenor.com/LoNa2zOMxoAAAAAC/its-very-important-it-matters.gif"
43+
)
44+
.build()
45+
);
46+
47+
guild.channel().sendEmbed(
48+
thread.id(), new Embed.Builder()
49+
.description(
50+
"""
51+
Once your question has been answered, please close this thread by doing `/close`.
52+
"""
53+
).build()
54+
);
55+
56+
channelsThatNeedChatGpt.add(thread.id());
57+
}
58+
}
59+
60+
@MessageCreate
61+
public void sendChatGptAnswer(Message message, Guild guild) {
62+
if (channelsThatNeedChatGpt.contains(message.id())) {
63+
channelsThatNeedChatGpt.remove(message.id());
64+
65+
StringBuilder answer = new StringBuilder();
66+
answer.append("## Here is an attempted answer by ChatGPT\n\n");
67+
68+
chatGPT.ask(message.content())
69+
.ifPresentOrElse(
70+
strings -> {
71+
for (String string : strings) {
72+
answer.append(string).append("\n");
73+
}
74+
},
75+
() -> guild.channel().sendMessage(
76+
message.channelId(),
77+
"ChatGPT is currently unavailable."
78+
)
79+
);
80+
81+
Embed embed =
82+
new Embed.Builder()
83+
.author(
84+
new EmbedAuthor("", null, "https://chat.openai.com/favicon-32x32.png", null)
85+
)
86+
.color(Color.CYAN)
87+
.description(answer.toString())
88+
.build();
89+
90+
guild.channel().sendEmbed(message.channelId(), embed);
91+
}
92+
}
93+
}

example/lj-discord-bot/src/main/java/com/javadiscord/bot/listeners/SpamListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class SpamListener {
1616

1717
@MessageCreate
1818
public void onMessage(Message message, Guild guild) {
19-
if (!message.author().bot() && CurseWords.containsCurseWord(message.content())) {
19+
if (message.fromUser() && CurseWords.containsCurseWord(message.content())) {
2020
guild.channel().deleteMessage(message.channelId(), message.id());
2121
guild.user()
2222
.createDM(message.id())

example/lj-discord-bot/src/main/java/com/javadiscord/bot/listeners/SuggestionListener.java

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,39 @@
33
import com.javadiscord.jdi.core.Guild;
44
import com.javadiscord.jdi.core.annotations.EventListener;
55
import com.javadiscord.jdi.core.annotations.MessageCreate;
6-
import com.javadiscord.jdi.core.api.builders.StartThreadWithoutMessageBuilder;
6+
import com.javadiscord.jdi.core.api.builders.StartThreadFromMessageBuilder;
77
import com.javadiscord.jdi.core.models.message.Message;
88

99
@EventListener
1010
public class SuggestionListener {
1111

1212
@MessageCreate
1313
public void onMessage(Message message, Guild guild) {
14-
if (message.author().bot()) {
14+
if (message.fromBot()) {
1515
return;
1616
}
1717

1818
if (message.channelId() != 1244690778505216154L) {
1919
return;
2020
}
2121

22-
guild.channel().createReaction(message.channelId(), message.id(), "thumbup");
23-
guild.channel().createReaction(message.channelId(), message.id(), "thumbsdown");
22+
// guild.channel().createReaction(message.channelId(), message.id(), "thumbup");
23+
// guild.channel().createReaction(message.channelId(), message.id(),
24+
// "thumbsdown");
2425

25-
guild.channel().startThreadWithoutMessage(
26-
new StartThreadWithoutMessageBuilder(
26+
String title =
27+
message.content().length() > 60
28+
? message.content().substring(0, 60)
29+
: message.content();
30+
31+
guild.channel().startThreadFromMessage(
32+
new StartThreadFromMessageBuilder(
2733
message.channelId(),
28-
"Suggestion!"
34+
message.id(),
35+
title
2936
)
30-
);
37+
).onError(System.err::println)
38+
.onSuccess(System.out::println);
3139
}
3240

3341
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.javadiscord.bot.commands.slash.jshell;
1+
package com.javadiscord.bot.utils.jshell;
22

33
import java.util.List;
44

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.javadiscord.bot.commands.slash.jshell;
1+
package com.javadiscord.bot.utils.jshell;
22

33
import java.io.IOException;
44
import java.net.URI;

0 commit comments

Comments
 (0)