Golang TelegramBot

Telegram Bot 作り方 Golang

今回は Telegram BotGolang で作っていきたいと思います。

Telegram Bot も他のボットと基本的には同じように機能しますのでそれらに精通している人は簡単に作成可能だと思われます。

また Golang の Telegram Bot ライブラリは tgbotapi を使用したいと思います。

環境

  • Ubuntu 18.04
  • go version go1.19.1 linux/amd64
  • github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1

Telegram Bot 用 ライブラリ

ボットの作成

ボットを作成しトークンをゲットしていきたいと思います。

Telegram のアカウントは作成済みを前提として話を進めていきます。

まず Telegram では @BotFather という ボットで自分のボットを管理します。

なので そのアカウントとの会話をスタートしてください。

ボットに "/start" と送信すると 使用可能なコマンド一覧を送り返してきてくれます。

"/newbot" とコマンドを送信すること対話型でボットを作成できます。

作成しようとしているボットの名前の最後は必ず "bot" で終わる必要があるようです。

トークンをゲットできたのでコーディングをしていきます。

コード

下記がコマンドに対してメッセージを返すだけの一番シンプルなコードです。

package main

import (
    "log"

    tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
)

func main() {
    bot, err := tgbotapi.NewBotAPI("5625dfasdfasdffdasf-asf---dsa-fsa-dfVL0")
    if err != nil {
        log.Panic(err)
    }

	bot.Debug = true

    log.Printf("Authorized on account %s", bot.Self.UserName)

    u := tgbotapi.NewUpdate(0)
    u.Timeout = 60

    updates := bot.GetUpdatesChan(u)

    for update := range updates {
        if update.Message == nil {
            continue
        }

        if !update.Message.IsCommand() {
            continue
        }

        msg := tgbotapi.NewMessage(update.Message.Chat.ID, "")

        switch update.Message.Command() {
        case "help":
            msg.Text = "I understand /sayhi and /status."
        case "sayhi":
            msg.Text = "Hi :)"
        case "status":
            msg.Text = "I'm ok."
		case "test1":
			msg.Text = "you sent test1 command"
		case "test2":
			msg.Text = "you sent test2 command"
        default:
            msg.Text = "I don't know that command"
        }

        if _, err := bot.Send(msg); err != nil {
            log.Panic(err)
        }
    }
}

実際に対話して上記のようにメッセージが帰ってきたら成功です!

お疲れさまでした~

コマンドの設定方法やさらなる機能の紹介はまた後日追加していきます。

-Golang, TelegramBot