Skip to content

Commit 9fe224e

Browse files
committed
Optimize and add more messages
Optimize the log message, and add more message when mentioned. Fixed the bug that can't detect reply mention.
1 parent 792c34b commit 9fe224e

File tree

7 files changed

+41
-35
lines changed

7 files changed

+41
-35
lines changed

src/main/java/cartoland/Cartoland.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,18 @@
1717
public class Cartoland
1818
{
1919
public static final long BOT_CHANNEL_ID = 891703579289718814L; //創聯的機器人頻道
20-
public static final long ZH_CHAT_CHANNEL_ID = 886936474723950611L; //創聯的中文聊天頻道
2120

2221
public static void main(String[] args) throws InterruptedException
2322
{
2423
if (args.length < 1)
2524
return;
2625

2726
JDA jda = JDABuilder.createDefault(args[0])
28-
.addEventListeners(new BotOnline()) //當機器人上線的時候
29-
.addEventListeners(new BotOffline()) //當機器人下線的時候
30-
.addEventListeners(new ChannelMessage()) //當有人在群組傳訊息
31-
.addEventListeners(new PrivateMessage()) //當有人傳私訊給機器人
32-
.addEventListeners(new CommandUsage()) //當有人使用指令
27+
.addEventListeners(new BotOnline(), //當機器人上線的時候
28+
new BotOffline(), //當機器人下線的時候
29+
new ChannelMessage(), //當有人在群組傳訊息
30+
new PrivateMessage(), //當有人傳私訊給機器人
31+
new CommandUsage()) //當有人使用指令
3332
.enableIntents(GatewayIntent.MESSAGE_CONTENT)
3433
.setActivity(Activity.playing("Use /help to check more information")) //正在玩
3534
.build();

src/main/java/cartoland/events/BotOffline.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ public class BotOffline extends ListenerAdapter
1111
public void onShutdown(@NotNull ShutdownEvent event)
1212
{
1313
super.onShutdown(event);
14-
System.out.println("Cartoland Bot is now offline.");
15-
FileHandle.logIntoFile("Cartoland Bot is now offline.");
14+
String logString = "Cartoland Bot is now offline.";
15+
System.out.println(logString);
16+
FileHandle.logIntoFile(logString);
1617
}
1718
}

src/main/java/cartoland/events/BotOnline.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,19 @@ public void onReady(@NotNull ReadyEvent event)
1414
{
1515
super.onReady(event);
1616
TextChannel channel = event.getJDA().getChannelById(TextChannel.class, Cartoland.BOT_CHANNEL_ID); //創聯的機器人頻道
17+
String logString;
1718
if (channel != null)
1819
{
19-
channel.sendMessage("Cartoland Bot is now online.").queue();
20-
System.out.println("Cartoland Bot is now online.");
21-
FileHandle.logIntoFile("Cartoland Bot is now online.");
20+
logString = "Cartoland Bot is now online.";
21+
channel.sendMessage(logString).queue();
22+
System.out.println(logString);
23+
FileHandle.logIntoFile(logString);
2224
}
2325
else
2426
{
25-
System.err.println("Can't find Bot Channel.");
26-
FileHandle.logIntoFile("Can't find Bot Channel.");
27+
logString = "Can't find Bot Channel.";
28+
System.err.println(logString);
29+
FileHandle.logIntoFile(logString);
2730
}
2831
}
2932
}

src/main/java/cartoland/events/ChannelMessage.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package cartoland.events;
22

33
import net.dv8tion.jda.api.entities.Member;
4+
import net.dv8tion.jda.api.entities.Message;
5+
import net.dv8tion.jda.api.entities.Message.MentionType;
46
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
57
import net.dv8tion.jda.api.hooks.ListenerAdapter;
68
import org.jetbrains.annotations.NotNull;
@@ -16,7 +18,12 @@ public class ChannelMessage extends ListenerAdapter
1618
"勸你小心點,我認識這群群主。",
1719
"tag我都小雞雞。",
1820
"不要耍智障好不好。",
19-
"你看看,就是有像你這種臭俗辣。"
21+
"你看看,就是有像你這種臭俗辣。",
22+
"吃屎比較快。",
23+
"在那叫什麼?",
24+
"我知道我很帥,不用一直tag我",
25+
"tag我該女裝負責吧。",
26+
"沒梗的人才會整天tag機器人。"
2027
};
2128

2229
@Override
@@ -27,10 +34,11 @@ public void onMessageReceived(@NotNull MessageReceivedEvent event)
2734
Member member = event.getMember();
2835
if (member == null || member.getUser().isBot()) //獲取成員失敗 或 傳訊息的是機器人
2936
return; //不用執行
30-
String message = event.getMessage().getContentRaw(); //獲取訊息
31-
if (message.equalsIgnoreCase("megumin") || message.contains("惠惠") || message.contains("めぐみん"))
37+
Message message = event.getMessage();
38+
String rawMessage = message.getContentRaw(); //獲取訊息
39+
if (rawMessage.equalsIgnoreCase("megumin") || rawMessage.contains("惠惠") || rawMessage.contains("めぐみん"))
3240
event.getChannel().sendMessage("☆めぐみん大好き!☆").queue();
33-
if (message.contains("<@919939882196033596>")) //有人tag機器人
34-
event.getMessage().reply(replyMention[random.nextInt(replyMention.length)]).mentionRepliedUser(false).queue();
41+
if (message.getMentions().isMentioned(event.getJDA().getSelfUser(), MentionType.USER)) //有人tag機器人
42+
message.reply(replyMention[random.nextInt(replyMention.length)]).mentionRepliedUser(false).queue();
3543
}
3644
}

src/main/java/cartoland/events/PrivateMessage.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import cartoland.Cartoland;
44
import cartoland.utility.FileHandle;
5+
import net.dv8tion.jda.api.entities.User;
56
import net.dv8tion.jda.api.entities.channel.ChannelType;
67
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
78
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
@@ -25,10 +26,13 @@ public void onMessageReceived(@NotNull MessageReceivedEvent event)
2526
super.onMessageReceived(event);
2627
if (event.isFromType(ChannelType.PRIVATE))
2728
{
28-
String message = event.getMessage().getContentRaw();
29-
channel.sendMessage(message).queue();
30-
System.out.println(event.getAuthor().getName() + "(" + event.getAuthor().getId() + ") typed \"" + message + "\" in direct message.");
31-
FileHandle.logIntoFile(event.getAuthor().getName() + "(" + event.getAuthor().getId() + ") typed \"" + message + "\" in direct message.");
29+
String rawMessage = event.getMessage().getContentRaw();
30+
channel.sendMessage(rawMessage).queue();
31+
32+
User author = event.getAuthor();
33+
String logString = author.getName() + "(" + author.getId() + ") typed \"" + rawMessage + "\" in direct message.";
34+
System.out.println(logString);
35+
FileHandle.logIntoFile(logString);
3236
}
3337
}
3438
}

src/main/java/cartoland/events/commands/CommandUsage.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -112,22 +112,15 @@ public void onSlashCommandInteraction(@NotNull SlashCommandInteractionEvent even
112112
{
113113
super.onSlashCommandInteraction(event);
114114
Member member = event.getMember();
115-
if (member == null || member.getUser().isBot() || event.getChannel().getIdLong() == Cartoland.ZH_CHAT_CHANNEL_ID) //不是機器人 and 不要在主頻道用
115+
if (member == null || member.getUser().isBot()) //不是機器人
116116
return;
117117

118118
userID = member.getId();
119119
commands.get(event.getName()).commandProcess(event);
120120

121-
if (argument != null)
122-
{
123-
System.out.println(member.getUser().getName() + "(" + userID + ") used /" + event.getName() + " " + argument + ".");
124-
FileHandle.logIntoFile(member.getUser().getName() + "(" + userID + ") used /" + event.getName() + " " + argument + ".");
125-
}
126-
else
127-
{
128-
System.out.println(member.getUser().getName() + "(" + userID + ") used /" + event.getName() + ".");
129-
FileHandle.logIntoFile(member.getUser().getName() + "(" + userID + ") used /" + event.getName() + ".");
130-
}
121+
String logString = member.getUser().getName() + "(" + userID + ") used /" + event.getName() + (argument != null ? " " + argument + "." : ".");
122+
System.out.println(logString);
123+
FileHandle.logIntoFile(logString);
131124
}
132125

133126
private String minecraftCommandRelated(String jsonKey, @NotNull SlashCommandInteractionEvent event)

src/main/java/cartoland/mini_games/OneATwoB.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ private void restoreZeroToNine()
5858

5959
public int calculateAAndB(String input)
6060
{
61-
System.out.println("input " + input);
6261
guesses++;
6362
if (input == null || !input.matches(digitsRegex)) //不是ANSWER_LENGTH個數字
6463
return ErrorCode.INVALID;
@@ -68,7 +67,6 @@ public int calculateAAndB(String input)
6867
for (int i = 0, digitValueOfInput; i < ANSWER_LENGTH; i++)
6968
{
7069
digitValueOfInput = Character.getNumericValue(input.charAt(i));
71-
System.out.println("digitValueOfInput " + digitValueOfInput);
7270
if (zeroToNine[digitValueOfInput] == -1) //遇過這個數字了
7371
return ErrorCode.NOT_UNIQUE;
7472
else

0 commit comments

Comments
 (0)