logo
Published on

Telegram APIでボットを作成しcurlコマンドでメッセージを送信

Authors

Telegram APIを使用しボットを作成し、LinuxのBashコマンドラインからcurlコマンドでTelegramにメッセージを送信するまでの手順と方法について紹介します。

telegram、便利ですよね。 僕は使い始めて半年くらいになりますが、もうLINEには戻れないかなぁ。 もともとセキュリティ意識してLINEから移行したんですが、APIは簡単だしグループ招待も楽だし、一番のLINEとの差はやはり、複数端末での使用。 LINE使ってる人はわかると思うけど、複数のスマホやパソコンでログインってのがそもそもできないのがLINEクオリティ。

と、いうことでtelegramのAPIの始め方です。

参考文献:Telegram API: Send Message - Personal Notification Bot - ShellHacks

telegramのAPIの作成はちょっと特殊で、telegramクライアントを開いて、チャット形式でbotを作成します。 誰とチャットするのか。他にもあるようですが今回はこれを使います。

Telegram: Contact @BotFather

友だち追加してトークをはじめましょう。

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_527ccb50-14eb-4b99-a6b6-9574fbf161f0.png

では、以下のようにチャットを進めてみてください。

Foobar I, [16.12.18 09:27]
/newbot
BotFather, [16.12.18 09:27]
Alright, a new bot. How are we going to call it? Please choose a name for your bot.
Foobar I, [16.12.18 09:28]
testbot
BotFather, [16.12.18 09:28]
Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.
Foobar I, [16.12.18 09:28]
testbot_bot
BotFather, [16.12.18 09:28]
Sorry, this username is already taken. Please try something different.
Foobar I, [16.12.18 09:29]
yuis_testbot_bot

/newbot ... botの作成 testbot ... botの名前 yuis_testbot_bot ... botのURL(ID)

そうすると、

Done! Congratulations on your new bot. You will find it at t.me/yuis_testbot_bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.

Use this token to access the HTTP API:
696443...VxqS5DB7T4

For a description of the Bot API, see this page: https://core.telegram.org/bots/api

といったメッセージにて、トークンを教えてくれます。

それともうひとつ、チャット室も教えてくれます。: t.me/yuis_testbot_bot

では、t.me/yuis_testbot_botをクリックしてチャットを開始します。/startをしてから、以下コマンド。(<TOKEN>を置き換え)

https://api.telegram.org/bot&lt;TOKEN&gt;/getUpdates

すると、以下のようなレスポンスが帰ってきます。(注意:チャットルームを開いていない状態でURLにアクセスすると正しいレスポンスが届きません。)

{"ok":true,"result":[{"update_id":,
"message":{"message_id":3,"from":{"id":638...737,"is_bot":false,"first_name":"Foobar","last_..."text":"/start","entities":[{"offset":0,"length":6,"type":"bot_command"}]}}]}

"id":638...737がchatIDです。

では改めて、以下のようなコマンドを実行してみましょう。

curl -s -X POST https://api.telegram.org/bot<TOKEN>/sendMessage -d chat_id=<CHAT_ID> -d text="Hello World"

e.g.

curl -s -X POST https://api.telegram.org/bot6964439...lVxqS5DB7T4/sendMessage -d chat_id=63...737 -d text="Hello World"

"Hello World"というメッセージでチャットが届いたかと思います。簡単でしたね。

telegramを一度閉じたりしてもチャットルームを削除しない限り先程のコマンドでメッセージが届きます。 スマホにもtelegramを入れている場合、自動で同様のメッセージが届きます。

GoogleAppsScriptでLINEに送ったりしてたんですが、それを代わりにtelegramにしようと考えたのがきっかけです。 GAS便利なのでGAS記事近い内にまた書くかもしれないですね。