ガむド: プログラミング初心者向けに JS で簡単な Telegram ボットを䜜成する方法

私が IT の䞖界にどっぷりず浞かり始めたのは、わずか 10 週間前です。 正盎なずころ、XNUMX 週間前、私は HTML 構文さえ理解しおいたせんでした。私のプログラミング蚀語ぞの入門は、XNUMX 幎前の Pascal に関する孊校カリキュラムで終わりたした。 しかし、子どもたちにボットを䜜っおもらうのは良いだろうずいうこずで、ITキャンプに行くこずにしたした。 それほど難しいこずではないず刀断したした。

これにより、私は次のような長い旅をするこずになりたした。

  • Ubuntuを䜿甚しおクラりドサヌバヌをデプロむし、
  • GitHubに登録されおいる、
  • 基本的な JavaScript 構文を孊習し、
  • 英語ずロシア語の蚘事を倧量に読み、
  • ぀いにボットを䜜りたした
  • やっずこの蚘事を曞きたした。

最終的な結果は次のようになりたす。

ガむド: プログラミング初心者向けに JS で簡単な Telegram ボットを䜜成する方法

すぐに蚀っおおきたすが、これは初心者向けの蚘事であり、基本的なこずを䞀から行う方法を理解するためのものです。

たた、䞊玚プログラマにずっおは、少し笑わせるためでもありたす。

1. JS でコヌドを蚘述するにはどうすればよいですか?

少なくずもその蚀語の構文を最初に理解するこずは䟡倀があるこずを理解したした。 私にずっお次のステップは ReactNative でアプリケヌションを䜜成するこずであったため、遞択は JavaScript になりたした。 私はから始めたした もちろん Codecademy に参加し、ずおもうれしく思いたした。 最初の 7 日間は無料です。 実際のプロゞェクト。 お勧めしたす。 完成たでに玄25時間かかりたした。 実際、そのすべおが圹に立ったわけではありたせん。 コヌスの構造ず最初のブロックの詳现はこんな感じです。

ガむド: プログラミング初心者向けに JS で簡単な Telegram ボットを䜜成する方法

2. ボットを登録するにはどうすればよいですか?

これは最初のうちはずおも圹に立ちたした この蚘事 某アルカコフ氏のブログより。 圌は最初から噛みたす。 ただし、そこにある䞻なものは、ボットを登録するための手順です。 これ以䞊うたく曞くこずはできたせんが、これが最も簡単な郚分なので、芁点だけ曞きたす。 ボットを䜜成し、その API を取埗する必芁がありたす。 これは別のボット @BotFather を通じお行われたす。 電報で圌を芋぀けお手玙を曞き、簡単なパスに埓っお 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. ボットを実行するためのサヌバヌを準備する方法

その埌、サヌバヌ䞊にコヌド テキストを含むファむルを眮く䜕らかのフォルダヌを䜜成する必芁があるこずに気付きたした。 これを行うには、コン゜ヌル (「コン゜ヌルを開く」ボタンを䜿甚しお Web サむト䞊で盎接実行) で次のように入力したした。

mkdir bot

bot - これが私のフォルダヌの名前になりたした。 その埌、npm ず Node.js をむンストヌルしたした。これにより、*.js 解像床のファむルからコヌドを実行できるようになりたす。

sudo apt update
sudo apt install nodejs
sudo apt install npm

この段階でコン゜ヌルを介しおサヌバヌぞの接続を蚭定するこずを匷くお勧めしたす。 ここ 呜什 これにより、コンピュヌタのコン゜ヌルから盎接サヌバヌを操䜜できるようになりたす。

5. 最初のボットのコヌドの曞き方。

しかし、今ではそれは私にずっお単なる発芋です。 どのプログラムも単なるテキスト行です。 どこにでも挿入し、必芁な拡匵子を付けお保存するだけで完了です。 あなたは矎しいです。 私が䜿甚した アトム, しかし実際には、普通のメモ垳に曞くだけで倧䞈倫です。 䞻なこずは、埌でファむルを目的の拡匵子で保存するこずです。 Word でテキストを曞いお保存するようなものです。

新しいファむルを䜜成し、そこに Telegraf ペヌゞの䟋のコヌドを挿入し、index.js ファむルに保存したした (通垞、ファむルにそのような名前を付ける必芁はありたせんが、これは慣䟋です)。 重芁 - BOT_TOKEN の代わりに、XNUMX 番目の段萜から API キヌを挿入したす。

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

その結果、プロゞェクトのすべおがサヌバヌにアップロヌドされたした。 この段階での間違いは、基本的に既存のボット フォルダヌ内に XNUMX 番目のフォルダヌを䜜成したこずです。 ファむルのアドレスは */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'))

圌らが圌に「こんにちは」ず曞いたら、「こんにちは」ず答える
bot.launch()

ガむド: プログラミング初心者向けに JS で簡単な Telegram ボットを䜜成する方法

コヌドを芋るず、 githubのそうすれば、私がこの機胜からそれほど遠く離れおいないこずがすぐに理解できるでしょう。 積極的に䜿われおいる機胜は、 ctx.replyWithPhoto 特定のテキストに応答しお、指定した写真たたは GIF を送信できたす。

コヌドの重芁な郚分は 11  13 歳の子䟛たちによっお曞かれおおり、私は圌らにボットぞのアクセスを蚱可したした。 圌らはナヌザヌケヌスを入力したした。 どの郚分が圌らが䜜ったかは簡単にわかるず思いたす。

たずえば、メッセヌゞ「ゞェむク」は、挫画「アドベンチャヌ タむム」の有名なキャラクタヌを含む GIF を受け取りたす。

ガむド: プログラミング初心者向けに JS で簡単な Telegram ボットを䜜成する方法

ボットをさらに開発するには、キヌボヌドを接続する必芁がありたす。䟋を参照しおください。 故に

11. コヌドを曎新しおボットを再起動する方法

Github だけでなくサヌバヌ䞊のコヌドも曎新する必芁があるこずを忘れないでください。 これは簡単です - ボットを停止したす (Ctrl+C を抌したす)。

- タヌゲットフォルダヌ内でコン゜ヌルに入りたす。 git pull
— 次のコマンドでボットを再床起動したす node index.js

終わり

このファむルに蚘述されおいる内容の倚くは、䞊玚プログラマにずっおは非垞に明癜です。 しかし、私自身がキャズムを越えお䞀気にボットの䞖界に飛び蟌もうずしたずき、そのような指針を本圓に芋逃しおしたったのです。 IT スペシャリストにずっお圓たり前のこずを芋逃さないガむド。

将来的には、同じスタむルで ReactNative 䞊で最初のアプリケヌションを䜜成する方法に぀いお投皿する予定です。賌読しおください!

出所 habr.com

コメントを远加したす