>所以,今天早上,您醒來了,一個想法是開發一種存儲和標記您閱讀的有趣文章的方法。播放了這個想法後,您認為電報聊天機器人是此問題最方便的解決方案。
>在本指南中,我們將介紹使用JavaScript和Node.js.構建第一個電報聊天機器人所需的一切
開始,我們必須在所謂的Botfather上註冊我們的新機器人才能接收我們的API訪問令牌。>
鑰匙要點API令牌是最重要的步驟,因為這允許您運行可以執行BOT任務的代碼。
可以通過搜索“ Botfather”在電報上找到Botfather。單擊官方的Botfather,並在藍色圓圈中用白色的Checkmark圖標表示。
2。註冊一個新的bot
>
> afterbot將與您的令牌返回成功消息,以訪問電報http api。確保安全存儲這個代幣,當然不會與其他任何人共享。
>>我們可以通過添加描述或設置我們希望該機器人知道的命令來進一步修改機器人。您可以用文本 /setCommands向機器人發送消息。它將向您展示如何使用格式命令1- description。
>輸入命令對於我的機器人,我設置了命令書籤 - 保存有趣的文章URL。
>
可以禁用此設置,這意味著您的機器人可以接收所有發送給組的消息。您將不得不向您的組添加一個機器人才能接收所有這些消息。
>可以在此處找到所有可用命令的列表:
>最後,我們都準備開始編碼。確保已準備就緒API訪問令牌。
>編碼您的第一個bot命令
1。設置項目
開始,請克隆GitHub存儲庫,然後在您喜歡的編輯器中打開項目。接下來,在項目的根部創建一個.env文件,然後添加單行 - token = yourtoken。用您從Botfather那裡收到的令牌替換您的句子。
> 為了確保連接起作用,請導航到終端中項目的根並運行NPM啟動。 NPM啟動命令將運行您的app.js文件,並應連接到您的bot。如果您看不到任何錯誤,我們很高興去!首先,我們必須通過將其傳遞給我們的API訪問令牌並將投票選項設置為TRUE來創建該機器人。這意味著機器人將定期檢查傳入消息。
><span>require('dotenv').config(); </span><span>const TelegramBot = require('node-telegram-bot-api'); </span> <span>const token = process.env.TOKEN; </span> <span>// Created instance of TelegramBot </span><span>const bot = new TelegramBot(token, { </span> <span>polling: true </span><span>}); </span>
>現在已經創建了機器人,讓我們看一下代表我們 /書籤命令的代碼片段。我們設置了一個偵聽器,用於傳入的短信,ONTEXT並指定以尋找以 /書籤開頭的消息,因為我們在Regex String中指定了此消息。
>消息以 /書籤開頭時,我們的代碼將執行。首先,我們存儲聊天ID,因為我們希望能夠將消息發送回該用戶的聊天。接下來,我們檢查用戶是否正確使用了命令。我們希望通過這樣的命令傳遞一個URL: /書籤www.google.com。
如果沒有指定URL,我們將消息發送回存儲的ChatId,告訴用戶為我們提供URL。如果他們確實發送了URL,我們將存儲URL並向他們發送成功消息。
>您可能已經註意到我們正在使用兩個參數用於回調功能msg和匹配。 MSG屬性表示您收到的完整消息,而匹配表示我們定義的正則表達式的結果。下圖顯示了完整的msg,之後----它顯示了匹配項。
<span>// Listener (handler) for telegram's /bookmark event </span>bot<span>.onText(<span>/<span>\/bookmark</span>/</span>, (msg<span>, match</span>) => { </span> <span>const chatId = msg.chat.id; </span> <span>const url = match.input.split(' ')[1]; </span> <span>// 'msg' is the received Message from Telegram </span> <span>// 'match' is the result of executing the regexp above on the text content </span> <span>// of the message </span> <span>if (url === undefined) { </span> bot<span>.sendMessage( </span> chatId<span>, </span> <span>'Please provide URL of article!', </span> <span>); </span> <span>return; </span> <span>} </span> <span>URLs.push(url); </span> bot<span>.sendMessage( </span> chatId<span>, </span> <span>'URL has been successfully saved!', </span> <span>); </span><span>}); </span>
在與機器人聊天中嘗試命令時,我們會收到以下結果:
如果您看到相同的結果,恭喜!您剛剛創建了第一個bot命令。讓我們看一下更高級的選項,例如發送帶有預定義選項的鍵盤。
>>現在我們知道如何創建自定義命令,讓我們更深入地了解鍵盤選項。可以發送帶有命令的預定鍵鍵盤以限制用戶的選項。它可以很簡單,就像限制用戶以Yes或No.
>讓我們看一下以下代碼片段。我們已經在bot.sendmessage函數中添加了第三個參數。此對象定義了我們鍵盤的選項。如果您仔細查看reply_markup.kekeboard,則會找到一個包含更多數組的數組。這裡的每個數組代表一個帶有選項的行。這可以幫助您制定更重要或更長的按鈕文本的格式化選項。
此代碼在將消息 /鍵盤發送到我們的機器人時給出以下結果。
<span>// Listener (handler) for showcasing different keyboard layout </span>bot<span>.onText(<span>/<span>\/keyboard</span>/</span>, (msg) => { </span> bot<span>.sendMessage(msg.chat.id, 'Alternative keybaord layout', { </span> <span>'reply_markup': { </span> <span>'keyboard': [['Sample text', 'Second sample'], ['Keyboard'], ['I\'m robot']], </span> <span>resize_keyboard: true, </span> <span>one_time_keyboard: true, </span> <span>force_reply: true, </span> <span>} </span> <span>}); </span><span>}); </span>
>
<span>require('dotenv').config(); </span><span>const TelegramBot = require('node-telegram-bot-api'); </span> <span>const token = process.env.TOKEN; </span> <span>// Created instance of TelegramBot </span><span>const bot = new TelegramBot(token, { </span> <span>polling: true </span><span>}); </span>
3.2鍵盤回調
callbackquery上的消息屬性包含來自用戶的整個消息。數據屬性包含我們的類別回調數據。
<span>// Listener (handler) for telegram's /bookmark event </span>bot<span>.onText(<span>/<span>\/bookmark</span>/</span>, (msg<span>, match</span>) => { </span> <span>const chatId = msg.chat.id; </span> <span>const url = match.input.split(' ')[1]; </span> <span>// 'msg' is the received Message from Telegram </span> <span>// 'match' is the result of executing the regexp above on the text content </span> <span>// of the message </span> <span>if (url === undefined) { </span> bot<span>.sendMessage( </span> chatId<span>, </span> <span>'Please provide URL of article!', </span> <span>); </span> <span>return; </span> <span>} </span> <span>URLs.push(url); </span> bot<span>.sendMessage( </span> chatId<span>, </span> <span>'URL has been successfully saved!', </span> <span>); </span><span>}); </span>
因此,建議發送回一個符合條件的JSON對象,該對像還設有標籤以識別回調數據所屬的命令。看看以下最佳實踐:
您可以使用命令選項中的數據切換到此命令的特定業務邏輯。
>我們正在成為Telegram Bot Jedis的途中。要成為一名完整的主人,讓我們探索數據請求。<span>// Listener (handler) for showcasing different keyboard layout </span>bot<span>.onText(<span>/<span>\/keyboard</span>/</span>, (msg) => { </span> bot<span>.sendMessage(msg.chat.id, 'Alternative keybaord layout', { </span> <span>'reply_markup': { </span> <span>'keyboard': [['Sample text', 'Second sample'], ['Keyboard'], ['I\'m robot']], </span> <span>resize_keyboard: true, </span> <span>one_time_keyboard: true, </span> <span>force_reply: true, </span> <span>} </span> <span>}); </span><span>}); </span>
3.3數據請求 - 電話號碼
>可以請求數據,例如一個人的電話號碼或地理位置。在本教程中,我們展示瞭如何用替代鍵盤請求電話號碼。
>
<span>// Listener (handler) for telegram's /label event </span>bot<span>.onText(<span>/<span>\/label</span>/</span>, (msg<span>, match</span>) => { </span> <span>const chatId = msg.chat.id; </span> <span>const url = match.input.split(' ')[1]; </span> <span>if (url === undefined) { </span> bot<span>.sendMessage( </span> chatId<span>, </span> <span>'Please provide URL of article!', </span> <span>); </span> <span>return; </span> <span>} </span> tempSiteURL <span>= url; </span> bot<span>.sendMessage( </span> chatId<span>, </span> <span>'URL has been successfully saved!', </span> <span>{ </span> <span>reply_markup: { </span> <span>inline_keyboard: [[ </span> <span>{ </span> <span>text: 'Development', </span> <span>callback_data: 'development' </span> <span>}, { </span> <span>text: 'Lifestyle', </span> <span>callback_data: 'lifestyle' </span> <span>}, { </span> <span>text: 'Other', </span> <span>callback_data: 'other' </span> <span>} </span> <span>]] </span> <span>} </span> <span>} </span> <span>); </span><span>}); </span>
這是我們提供訪問後的外觀:
>終於!您是一個完整的電報機器人絕地。目前,可以在此處找到更多信息和資源:
私人消息和公共消息之間的區別
不同類型的事件
Hosein2398在github>
如何處理髮送給我的機器人的消息? Node-telegram-bot-api軟件包提供了一種ONTEXT方法,您可以使用該方法來處理髮送給機器人的短信。此方法將正則表達式和回調函數作為參數。每當接收到正則表達式匹配的消息時,都會調用回調函數。消息對像傳遞給回調函數,您可以使用該函數來響應該消息。>我如何部署我的bot?
>如何將自定義命令添加到我的bot?
以上是如何使用node.js構建第一個電報聊天機器人的詳細內容。更多資訊請關注PHP中文網其他相關文章!