iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0
Software Development

我命由我不由語言 java爬蟲挑戰系列 第 17

java爬蟲挑戰 Day 17 - 實作Discord Bot的基本功能 (2)

  • 分享至 

  • xImage
  •  

DiscordBot 傳送文字

為了方便理解,我們將程式碼寫在 DiscordBotRunner,重點是 sendMessage 方法。傳送訊息時需要 JDA頻道ID 以及要傳送的訊息。呼叫 sendMessage 後,訊息就可以被傳輸。
另外剛啟動時,直接傳送訊息似乎會失敗,所以加了三秒的延遲,不過未來我們也會改寫掉這裡的寫法,先暫時這樣處理。

@Override
public void run(ApplicationArguments args) throws Exception {
    JDABuilder builder = JDABuilder.createDefault(discordToken);
    builder.enableIntents(GatewayIntent.MESSAGE_CONTENT); // 啟用 MESSAGE_CONTENT Intent
    builder.addEventListeners(new DiscordBotListener());
    JDA jda = builder.build();
    log.info("Discord bot creation completed.");
    // 延遲三秒,不延遲的話訊息會發不出去
    Thread.sleep(3000);
    sendMessage(jda, "替換成你的Channel ID", "小草您好。");
}

public static void sendMessage(JDA jda,String channelId, String message) {
    TextChannel channel = jda.getTextChannelById(channelId);
    if (channel != null) {
        channel.sendMessage(message).queue();
    }
}

執行結果:
https://ithelp.ithome.com.tw/upload/images/20240903/20168635DNk1qMtK53.png

DiscordBot 標記用戶(Tag)

標記用戶非常簡單,只要知道用戶ID,前後加上 <@ 和 > 即可,讓指定的用戶在訊息中被提及並收到通知。

String taggedMessage = "<@" + userId + "> " + message;

範例程式碼如下:

@Override
public void run(ApplicationArguments args) throws Exception {
    JDABuilder builder = JDABuilder.createDefault(discordToken);
    builder.enableIntents(GatewayIntent.MESSAGE_CONTENT); // 啟用 MESSAGE_CONTENT Intent
    builder.addEventListeners(new DiscordBotListener());
    JDA jda = builder.build();
    log.info("Discord bot creation completed.");

    // 延遲三秒,不延遲的話訊息會發不出去
    Thread.sleep(3000);
    tagUserAndSendMessage(jda, "替換成你的Channel ID", "替換成你的User ID", "小草您好。");
}

public void tagUserAndSendMessage(JDA jda, String channelId, String userId, String message) {
    TextChannel channel = jda.getTextChannelById(channelId);
    if (channel != null) {
        String taggedMessage = "<@" + userId + "> " + message;
        channel.sendMessage(taggedMessage).queue();
    }
}

執行結果:
https://ithelp.ithome.com.tw/upload/images/20240903/20168635JGdty3IMMy.png

git現狀

https://ithelp.ithome.com.tw/upload/images/20240903/20168635beD6xgYmt9.png

小結

通過這幾個核心功能的實作,我們的 Discord bot 可以滿足 591 租屋爬蟲推播程式的需求。未來,如果需要擴展功能,也可以在此基礎上進行開發。關於 Discord Bot 的教學及研究就到這邊了,接下來將著重於設計機器人的互動指令以及租屋推播通知的條件規劃等功能。


上一篇
java爬蟲挑戰 Day 16 - 實作Discord Bot的基本功能 (1)
下一篇
java爬蟲挑戰 Day 18 - Discord Bot增加歡迎詞 & 轉Spring Bean
系列文
我命由我不由語言 java爬蟲挑戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言