[TG開發]簡單的回聲機器人

你好! 如果你想了解如何在Java上編寫Telegram機器人,你來對地方了!

準備啟動

機器人API基于HTTP請求,但在本書中我將使用Rubenlagus的Java庫

安裝庫

你可以使用不同的方法安裝TelegramBots庫, 我這里使用Maven

<dependency><groupId>org.telegram</groupId><artifactId>telegrambots</artifactId><version>Latest</version>
</dependency>

讓我們開始編碼吧

在本節課中,我們將編寫一個簡單的機器人,它會回顯我們發送給它的所有內容。現在,打開inteliidea,創建一個新項目。你可以隨意給它起個名字。

  1. 現在,當你在該項目中后,在src目錄下創建文件MyAmazingBot.java和Main,java。打開MyAmazingBot.java,并開始編寫我們的實際機器人!
  2. 記住! 類必須繼承TelegramLongPollingBot并實現必要的方法。
import org.telegram.telegrambots.api.methods.send.SendMessage;
import org.telegram.telegrambots.api.objects.Update;
import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.exceptions.TelegramApiException;public class MyAmazingBot extends TelegramLongPollingBot {@Overridepublic void onUpdateReceived(Update update) {// TODO}@Overridepublic String getBotUsername() {// TODOreturn null;}@Overridepublic String getBotToken() {// TODOreturn null;}
}
  1. 正如您所理解的,

`getBotUsername()'和`getBotToken ()`必須返回從 @BotFather獲取的機器人的用戶名和令牌。

import org.telegram.telegrambots.api.methods.send.SendMessage;
import org.telegram.telegrambots.api.objects.Update;
import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.exceptions.TelegramApiException;public class MyAmazingBot extends TelegramLongPollingBot {@Overridepublic void onUpdateReceived(Update update) {// TODO}@Overridepublic String getBotUsername() {// Return bot username// If bot username is @MyAmazingBot, it must return 'MyAmazingBot'return "MyAmazingBot";}@Overridepublic String getBotToken() {// Return bot token from BotFatherreturn "12345:qwertyuiopASDGFHKMK";}
}
  1. 現在,讓我們轉到我們機器人的邏輯部分。

如前所述,我們希望它能夠回復我們發送給它的每條文本。`onUpdateReceived(Updateupdate)`方法就是為此而設的。當接收到一條更新時,該方法會被調用。

@Override
public void onUpdateReceived(Update update) {// We check if the update has a message and the message has textif (update.hasMessage() && update.getMessage().hasText()) {// Set variablesString message_text = update.getMessage().getText();long chat_id = update.getMessage().getChatId();SendMessage message = new SendMessage() // Create a message object object.setChatId(chat_id).setText(message_text);try {execute(message); // Sending our message object to user} catch (TelegramApiException e) {e.printStackTrace();}}
}
  1. 該如何運行這個機器人呢? 保存該文件并打開Mainjava。這個文件將實例化TelegramBotsApi并注冊我們的新機器人。
import org.telegram.telegrambots.ApiContextInitializer;
import org.telegram.telegrambots.TelegramBotsApi;
import org.telegram.telegrambots.exceptions.TelegramApiException;
public class Main {public static void main(String[] args) {// TODO Initialize Api Context// TODO Instantiate Telegram Bots API// TODO Register our bot}
}
  1. 現在,讓我們初始化API上下文
import org.telegram.telegrambots.ApiContextInitializer;
import org.telegram.telegrambots.TelegramBotsApi;
import org.telegram.telegrambots.exceptions.TelegramApiException;
public class Main {public static void main(String[] args) {// Initialize Api ContextApiContextInitializer.init();// TODO Instantiate Telegram Bots API// TODO Register our bot}
}
  1. 實例化Telegram機器人API:
import org.telegram.telegrambots.ApiContextInitializer;
import org.telegram.telegrambots.TelegramBotsApi;
import org.telegram.telegrambots.exceptions.TelegramApiException;
public class Main {public static void main(String[] args) {// Initialize Api ContextApiContextInitializer.init();// Instantiate Telegram Bots APITelegramBotsApi botsApi = new TelegramBotsApi();// TODO Register our bot}
}
  1. 并注冊我們的機器人:
import org.telegram.telegrambots.ApiContextInitializer;
import org.telegram.telegrambots.TelegramBotsApi;
import org.telegram.telegrambots.exceptions.TelegramApiException;
public class Main {public static void main(String[] args) {// Initialize Api ContextApiContextInitializer.init();// Instantiate Telegram Bots APITelegramBotsApi botsApi = new TelegramBotsApi();// Register our bottry {botsApi.registerBot(new MyAmazingBot());} catch (TelegramApiException e) {e.printStackTrace();}}
}
  1. 這是我們的所有文件:
import org.telegram.telegrambots.ApiContextInitializer;
import org.telegram.telegrambots.TelegramBotsApi;
import org.telegram.telegrambots.exceptions.TelegramApiException;
public class Main {public static void main(String[] args) {// Initialize Api ContextApiContextInitializer.init();// Instantiate Telegram Bots APITelegramBotsApi botsApi = new TelegramBotsApi();// Register our bottry {botsApi.registerBot(new MyAmazingBot());} catch (TelegramApiException e) {e.printStackTrace();}}
}
import org.telegram.telegrambots.api.methods.send.SendMessage;import org.telegram.telegrambots.api.objects.Update;import org.telegram.telegrambots.bots.TelegramLongPollingBot;import org.telegram.telegrambots.exceptions.TelegramApiException;public class MyAmazingBot extends TelegramLongPollingBot {@Overridepublic void onUpdateReceived(Update update) {// We check if the update has a message and the message has textif (update.hasMessage() && update.getMessage().hasText()) {// Set variablesString message_text = update.getMessage().getText();long chat_id = update.getMessage().getChatId();SendMessage message = new SendMessage() // Create a message object object.setChatId(chat_id).setText(message_text);try {execute(message); // Sending our message object to user} catch (TelegramApiException e) {e.printStackTrace();}}}@Overridepublic String getBotUsername() {// Return bot username// If bot username is @MyAmazingBot, it must return 'MyAmazingBot'return "MyAmazingBot";}@Overridepublic String getBotToken() {// Return bot token from BotFatherreturn "12345:qwertyuiopASDGFHKMK";}
}
  1. 現在我們可以將項目打包成可運行的jar文件,并在我們的計算機/服務器上運行它!
java -jar MyAmazingBot.jar

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93114.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93114.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93114.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ubuntu下快速安裝Tomcat教程

Apache Tomcat 是一個開源的軟件服務器,用于部署和運行 Java Servlet 和 JSP(JavaServer Pages)。本文將詳細介紹如何在 Ubuntu 系統上安裝并配置 Apache Tomcat。無論你是要開發企業級應用還是學習 Java Web 開發,Tomcat 都是一個不可或缺的工具。 Tomcat 基礎功能 Tomca…

并發編程(八股)

概述并行:同一個時間點,多個線程同時執行 并發:同一個時間段,多個線程交替執行,微觀上是一個一個的執行,宏觀上感覺是同時執行 核心問題: 多線程訪問共享數據存在資源競用問題 不可見性 java內存模型(jmm) 變量數據都存在于主內存里,每個線程還有自己的工作內存(本地內存),規定…

如何在 Spring Boot 中設計和返回樹形結構的組織和部門信息

如何在 Spring Boot 中設計和返回樹形結構的組織和部門信息 文章目錄如何在 Spring Boot 中設計和返回樹形結構的組織和部門信息1. 需求分析一、數據庫表設計1.1 organization 表設計1.2 department 表設計1.3 模擬數據二、后端設計2.1 實體類設計Organization 實體類Departmen…

Java畢業設計選題推薦 |基于SpringBoot的水產養殖管理系統 智能水產養殖監測系統 水產養殖小程序

&#x1f525;作者&#xff1a;it畢設實戰小研&#x1f525; &#x1f496;簡介&#xff1a;java、微信小程序、安卓&#xff1b;定制開發&#xff0c;遠程調試 代碼講解&#xff0c;文檔指導&#xff0c;ppt制作&#x1f496; 精彩專欄推薦訂閱&#xff1a;在下方專欄&#x1…

排序概念、插入排序及希爾排序

一、排序基本概念1.就地排序&#xff1a;使用恒定的額外空間來產生輸出就地排序只是在原數組空間進行排序處理&#xff0c;也就是輸入的數組和得到的數組是同一個2.內部排序和外部排序&#xff1a;待排序數據可以一次性載入到內存中為內部排序&#xff0c;反之數據量過大就是外…

【排序算法】④堆排序

系列文章目錄 第一篇&#xff1a;【排序算法】①直接插入排序-CSDN博客 第二篇&#xff1a;【排序算法】②希爾排序-CSDN博客 第三篇&#xff1a;【排序算法】③直接選擇排序-CSDN博客 第四篇&#xff1a;【排序算法】④堆排序-CSDN博客 第五篇&#xff1a;【排序算法】⑤冒…

Android領域驅動設計與分層架構實踐

引言在Android應用開發中&#xff0c;隨著業務邏輯日益復雜&#xff0c;傳統的MVC或簡單MVP架構往往難以應對。領域驅動設計(Domain-Driven Design, DDD)結合分層架構&#xff0c;為我們提供了一種更系統化的解決方案。本文將探討如何在Android項目中應用DDD原則與分層架構&…

Android12 Framework電話功能UI定制

文章目錄簡介代碼中間按鈕Fragment創建VideoCallFragmentFragment管理添加按鍵掛斷電話功能相關文章簡介 Android版本&#xff1a;12 芯片平臺&#xff1a;展銳 如下圖為通話中的UI&#xff0c;打電話出去時顯示的UI與此也差不多&#xff0c;但來電時UI是不一樣的 這個界面是…

高并發場景下分布式ID生成方案對比與實踐指南

高并發場景下分布式ID生成方案對比與實踐指南 在分布式系統中&#xff0c;唯一且全局有序的ID生成器是很多業務的底層組件。隨著系統并發量不斷攀升&#xff0c;如何在高并發場景下保證ID的唯一性、性能、可用性和可擴展性&#xff0c;成為后端架構師需要重點考慮的問題。本文將…

Emscripten 指南:概念與使用

Emscripten 指南&#xff1a;概念與使用 什么是 Emscripten&#xff1f; Emscripten 是一個開源的編譯器工具鏈&#xff0c;用于將 C/C 代碼編譯成高效的 WebAssembly&#xff08;Wasm&#xff09;和 JavaScript。它基于 LLVM 編譯器架構&#xff0c;允許開發者&#xff1a; ?…

使用鏡像網站 打開克隆 GitHub 網站倉庫內容 git clone https://github.com/

GitHub 網站有時因 DNS 解析問題或網絡限制&#xff0c;國內訪問可能會受限。使用鏡像網站打開網站 使用鏡像網站&#xff1a;GitHub 有一些鏡像網站&#xff0c;可替代官網訪問&#xff0c;如https://hub.fastgit.org、https://gitclone.com、https://github.com.cnpmjs.org等…

Linux隨記(二十二)

一、redhat6.5 從openssh5.3 升級到openssh10 - 報錯處理【升級后賬號密碼一直錯誤 和 sshd dead but subsys locked】 虛擬機測試情況 - 正常&#xff1a;情況一、 升級后賬號密碼一直錯誤 情況二、 執行service sshd status出現 sshd dead but subsys locked

機器學習之TF-IDF文本關鍵詞提取

目錄 一、什么是 TF-IDF&#xff1f; 1.語料庫概念理解 二、TF-IDF 的計算公式 1. 詞頻&#xff08;TF&#xff09; 2. 逆文檔頻率&#xff08;IDF&#xff09; 3. TF-IDF 值 三、關鍵詞提取之中文分詞的實現 四、TF-IDF簡單案例實現 &#xff08;1&#xff09;數據集…

Flutter屏幕和字體適配(ScreenUtil)

一、簡介 flutter_screenutil 是一個 Flutter 插件&#xff0c;專門用于處理屏幕適配問題。它簡化了不同設備間尺寸差異的處理&#xff0c;確保你的應用在各種屏幕上都能保持良好的顯示效果。開發者可以通過簡單的調用來設置基于設計圖尺寸的控件寬高和字體大小。 項目地址&a…

mimiconda+vscode

安裝miniconda實現python包管理&#xff0c;并通過vscode進行編寫python代碼 miniconda簡單介紹 Miniconda 是 Anaconda 公司的一個輕量級 Python 發行版本&#xff0c;它包含了最基本的包管理器 conda 和 Python 環境&#xff0c;只帶最核心的組件&#xff0c;沒有額外的大量科…

Windows文件時間修改指南:從手動到自動化

修改文件的時間屬性可以滿足多種需求。比如&#xff0c;它可以幫助整理文件&#xff0c;使得文件按照特定的時間順序排列&#xff0c;有助于更好地管理資料。它的體積真小&#xff0c;才300多KB。能用來調整文件的創建時間、最后訪問和修改時間。文件時間屬性修改_NewFileTime.…

能刷java題的網站

以下是一些適合刷Java題的優質網站&#xff0c;涵蓋從基礎到進階、算法面試及實戰項目等多種需求&#xff1a; ?一、綜合編程練習平臺? ?LeetCode?&#xff08;leetcode.com&#xff09; ?特點?&#xff1a;全球最知名的算法題庫&#xff0c;含海量Java題目&#xff0c;分…

掘金數據富礦,永洪科技為山東黃金定制“數智掘金”實戰營

在黃金開采的轟鳴聲中&#xff0c;另一場靜水深流的“掘金行動”正悄然展開。山東黃金集團&#xff0c;這個行業的巨頭&#xff0c;在深挖地層寶藏的同時&#xff0c;也敏銳捕捉到數據洪流中蘊藏的價值富礦。然而&#xff0c;當海量業務數據匯聚&#xff0c;如何從中精準提煉決…

【論文閱讀】BEVFormer論文解析及Temporal Self-Attention、Spatial Cross-Attention注意力機制詳解及代碼示例

BEVFormer: Learning Bird’s-Eye-ViewRepresentation from Multi-Camera Images via Spatiotemporal Transformers|Temporal Self-Attention、Spatial Cross-Attention注意力機制詳解 BEVFormer&#xff08;Bird’s-Eye-View Former&#xff09;是一種先進的計算機視覺模型&am…

在 Ubuntu 中docker容器化操作來使用新建的 glibc-2.32

在 Ubuntu 中使用容器化操作來使用新建的 glibc-2.32,可以通過創建自定義 Docker 鏡像來實現。以下是完整的解決方案: 方案 1:創建包含 glibc-2.32 的 Docker 鏡像 1. 創建 Dockerfile dockerfile # 使用 Ubuntu 基礎鏡像 FROM ubuntu:20.04# 安裝編譯依賴 RUN apt-get …