指南:如何為程式設計初學者使用 JS 製作一個簡單的 Telegram 機器人

就在三週前,我才開始沉浸在 IT 世界。 說真的,三週前我甚至不懂 HTML 文法,而我對程式語言的介紹就以 10 年前的 Pascal 學校課程結束了。 然而,我決定去一個 IT 訓練營,在那裡孩子們製作一個機器人會很好。 我決定這並不那麼困難。

這開始了我的漫長旅程:

  • 使用Ubuntu部署了雲端伺服器,
  • 在 GitHub 上註冊,
  • 學習了基本的 JavaScript 語法,
  • 閱讀大量英語和俄語文章,
  • 終於做了一個機器人
  • 我終於寫這篇文章了。

最終結果看起來像這樣:

指南:如何為程式設計初學者使用 JS 製作一個簡單的 Telegram 機器人

我會立即說這是一篇針對初學者的文章 - 只是為了了解如何從頭開始做基本的事情。

而且 - 對於高級程式設計師 - 只是為了讓他們笑一下。

1.如何用JS寫程式碼?

我明白至少值得先了解該語言的語法。 選擇落在了 JavaScript 上,因為我的下一步是在 ReactNative 中建立一個應用程式。 我開始於 課程 在 Codecademy 上,我非常高興。 前 7 天免費。 真實的項目。 我建議。 完成大約花了25個小時。 事實上,並非所有這些都有用。 這就是課程的結構和第一部分的詳細結構。

指南:如何為程式設計初學者使用 JS 製作一個簡單的 Telegram 機器人

2. 如何註冊機器人?

這在一開始對我幫助很大 本文 來自某個Archakov的部落格。 他從頭開始咀嚼。 但最重要的是有註冊機器人的說明。 我無法寫得更好,因為這是最簡單的部分,所以我只寫要點。 您需要創建一個機器人並獲取其 API。 這是透過另一個機器人 - @BotFather 完成的。 在 telegram 上找到他,寫信,按照簡單的路徑獲取(保存!)API 密鑰(這是一組數字和字母)。 後來就派上用場了。

指南:如何為程式設計初學者使用 JS 製作一個簡單的 Telegram 機器人

3. 機器人程式碼是什麼樣的?

在研究了很長時間的文章後,我意識到使用某種函式庫(模組格式的第三方程式碼)是值得的,這樣我就不必擔心學習 Telegram API 和從頭開始創建大段程式碼。 我找到了框架 電報,它需要以某種方式連接到使用npm或yarn的東西。 這就是我當時對機器人部署的大致理解。 在這裡笑。 我不會被冒犯。 在隨後創建機器人的過程中,頁面底部的範例對我幫助最大:

指南:如何為程式設計初學者使用 JS 製作一個簡單的 Telegram 機器人

3.如何用100盧布創建自己的雲端伺服器

經過大量搜索,我意識到上圖中的「npm」命令指的是命令列。 命令列無所不在,但為了能夠執行它,您需要安裝 NodePackageManager。 問題是我正在使用 ChromeOS 的 PixelBook 上進行程式設計。 我將在這裡跳過一大塊關於我如何學習 Linux 的內容——對於大多數人來說,它是空的並且沒有必要。 如果您有 Windows 或 MacBook,那麼您就已經擁有了控制台。

簡而言之,我透過 Crostini 安裝了 Linux。

然而,在這個過程中,我意識到,為了讓機器人持續工作(而不僅僅是當我的電腦打開時),我需要一個雲端伺服器。 我選擇了 vscale.io 我花了100盧布買了最便宜的Ubuntu伺服器(見圖)。

指南:如何為程式設計初學者使用 JS 製作一個簡單的 Telegram 機器人

4. 如何準備伺服器來運行機器人

之後,我意識到我需要在伺服器上建立某種資料夾,將帶有程式碼文字的檔案放入其中。 為此,在控制台中(透過「開啟控制台」按鈕直接在網站上運行),我輸入

mkdir bot

bot - 這成為我的資料夾的名稱。 之後,我安裝了 npm 和 Node.js,這將允許我從具有 *.js 解析度的檔案中執行程式碼

sudo apt update
sudo apt install nodejs
sudo apt install npm

我強烈建議在此階段透過控制台設定與伺服器的連線。 這裡 指令 這將允許您直接透過電腦的控制台使用伺服器。

5. 如何為您的第一個機器人編寫程式碼。

但現在這對我來說只是一個發現。 任何程式都只是文字行。 它們可以插入到任何地方,並用所需的擴展名保存,僅此而已。 你很美麗。 我用了 原子,但實際上,您可以在標準記事本中書寫。 最主要的是稍後將檔案儲存為所需的副檔名。 這就像在 Word 中編寫文字並保存一樣。

我創建了一個新文件,在其中插入了 telegraf 頁面上範例中的程式碼,並將其保存在 index.js 文件中(通常不需要以這種方式命名文件,但這是慣例)。 重要提示 - 請插入第二段中的 API 金鑰,而不是 BOT_TOKEN。

const Telegraf = require('telegraf')

const bot = new Telegraf(process.env.BOT_TOKEN)
bot.start((ctx) => ctx.reply('Welcome!'))
bot.help((ctx) => ctx.reply('Send me a sticker'))
bot.on('sticker', (ctx) => ctx.reply(''))
bot.hears('hi', (ctx) => ctx.reply('Hey there'))
bot.launch()

6.如何透過github上傳程式碼到伺服器

現在我需要以某種方式將此程式碼上傳到伺服器並運行它。 這對我來說成了一個挑戰。 結果,經過多次磨難,我意識到在 github 上建立一個允許您使用控制台中的命令更新程式碼的檔案會更容易。 我註冊了一個帳戶 GitHub上 並做了 新專案,我上傳文件的地方。 之後,我需要弄清楚如何設定將文件從我的帳戶(打開!)上傳到伺服器的 bot 資料夾中(如果你突然離開它,只需寫 cd bot )。

7.如何透過github上傳檔案到伺服器第2部分

我需要在伺服器上安裝一個程式來從 git 下載檔案。 我透過在控制台中輸入來在伺服器上安裝 git

apt-get install git

之後我需要設定檔上傳。 為此,我在命令列中輸入

git clone git://github.com/b0tank/bot.git bot

結果,項目中的所有內容都被上傳到伺服器。 此階段的錯誤是我實質上在現有的 bot 資料夾中建立了第二個資料夾。 文件的位址類似 */bot/bot/index.js

我決定忽略這個問題。

若要載入我們在第一行程式碼中要求的 telegraf 庫,請在控制台中鍵入命令。

npm install telegraf

8. 如何啟動機器人

為此,在包含文件的資料夾中(要透過控制台從一個資料夾移動到另一個資料夾,請執行 format 命令 cd bot 為了確保您位於所需位置,您可以輸入一個命令,該命令將在控制台中顯示所有檔案和資料夾 ls -a

首先,我進入控制台

node index.js

如果沒有錯誤,一切都很好,機器人正在工作。 在電報上尋找他。 如果有錯誤,請運用第 1 點的知識。

9. 如何在後台運行機器人

很快您就會意識到,只有當您坐在控制台中時,該機器人才能工作。 為了解決這個問題我使用了指令

screen

之後,將出現一個帶有一些文字的螢幕。 這意味著一切都很好。 您位於雲端伺服器上的虛擬伺服器上。 為了更好地理解這一切是如何運作的 - 這是文章。 只需轉到您的資料夾並輸入命令即可啟動機器人

node index.js

10. 機器人如何運作以及如何擴展其功能

我們的範例機器人可以做什麼? 他可以

bot.start((ctx) => ctx.reply('Welcome!'))

說“歡迎!” 在開始時(嘗試更改文字)

bot.help((ctx) => ctx.reply('Send me a sticker'))

回應標準 /help 命令,發送訊息“給我發送貼紙”

bot.on('sticker', (ctx) => ctx.reply(''))

發送批准以回應貼紙

bot.hears('hi', (ctx) => ctx.reply('Hey there'))

如果他們給他寫“嗨”,請回答“嘿”
機器人.launch()

指南:如何為程式設計初學者使用 JS 製作一個簡單的 Telegram 機器人

如果你看一下程式碼 GitHub上,那你很快就會明白我離這個功能還沒太遠。 主動使用的是函數 ctx.replyWithPhoto 它允許您發送指定的照片或 gif 來回應特定的文字。

程式碼的很大一部分是由 11 至 13 歲的兒童編寫的,我向他們授予了對機器人的存取權。 他們輸入了他們的使用者案例。 我認為很容易看出哪一部分是他們製作的。

例如,訊息「Jake」將收到帶有卡通探險活寶中著名角色的 GIF。

指南:如何為程式設計初學者使用 JS 製作一個簡單的 Telegram 機器人

若要進一步開發機器人,您需要連接鍵盤,請參閱範例,例如,

11. 如何更新程式碼並重啟機器人

不要忘記,你不僅需要更新github上的程式碼,還需要更新伺服器上的程式碼。 這很容易做到 - 停止機器人(按 ctrl+c),

- 在目標資料夾中進入控制台, git pull
— 我們使用以下指令再次啟動機器人 node index.js

結束

該文件中描述的許多內容對於高級程式設計師來說都是非常明顯的。 然而,當我自己試圖一舉跨越鴻溝進入機器人世界時,我真的很懷念這樣一個指引。 該指南不會錯過對任何 IT 專家來說顯而易見且簡單的事情。

將來,我計劃寫一篇關於如何以相同風格在 ReactNative 上製作第一個應用程式的文章,訂閱!

來源: www.habr.com

添加評論