Go语言Telegram机器人:从构思到部署只需30分钟

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

为什么Go是Telegram机器人的理想语言

如果你曾经用Python写过机器人,你就会知道:一切正常,直到你遇到性能瓶颈。Go在架构层面解决了这个问题。它快速、轻量,并且不需要虚拟环境。Go语言Telegram机器人不仅仅是一个玩具,而是一个完整的服务,能够每秒处理数千个请求,并且内存消耗极低。

在本文中,我们将从零开始创建一个Golang机器人,它将能够响应命令、处理消息,甚至与外部API交互。没有多余的理论——只有可以直接运行的代码。



步骤1:环境准备

在编写Go语言Telegram机器人之前,请确保您已安装Go 1.20或更高版本。可以通过以下命令检查:

go version

如果尚未安装Go,请从官方网站下载。安装只需2分钟。

您还需要一个机器人令牌。打开Telegram,找到BotFather并执行以下命令:

/newbot

输入机器人的名称和用户名。创建完成后,BotFather会发送一个令牌——请保存它,连接Telegram Bot API时会用到。



步骤2:项目结构

创建一个项目文件夹并初始化模块:

mkdir my-telegram-botcd my-telegram-botgo mod init my-telegram-bot

我们将使用tgbotapi库与Telegram交互——这是最流行的Go语言Telegram库。安装它:

go get github.com/go-telegram-bot-api/telegram-bot-api/v5

现在创建main.go文件。基本结构如下:

package main

import ( "log" "os" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5")

func main() { token := os.Getenv("TELEGRAM_BOT_TOKEN") bot, err := tgbotapi.NewBotAPI(token) if err != nil { log.Panic(err) }

bot.Debug = true log.Printf("机器人 @%s 已启动", bot.Self.UserName)

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

updates := bot.GetUpdatesChan(u)

for update := range updates { if update.Message != nil { log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text) msg := tgbotapi.NewMessage(update.Message.Chat.ID, "你好!我正在用Go运行!") bot.Send(msg) } }}

启动机器人:

export TELEGRAM_BOT_TOKEN="你的令牌"go run main.go

在Telegram中给机器人发消息——它应该会回复。如果一切正常,我们进入下一步。



步骤3:命令处理

仅仅回复“你好”很无聊。让我们添加Telegram机器人命令处理功能。实现/start和/help命令:

for update := range updates {    if update.Message != nil {        switch update.Message.Command() {        case "start":            msg := tgbotapi.NewMessage(update.Message.Chat.ID, "欢迎!我是Go机器人。使用 /help 查看命令列表。")            bot.Send(msg)        case "help":            msg := tgbotapi.NewMessage(update.Message.Chat.ID, "可用命令:/start - 欢迎/help - 帮助/echo - 重复消息")            bot.Send(msg)        default:            msg := tgbotapi.NewMessage(update.Message.Chat.ID, "未知命令。请使用 /help")            bot.Send(msg)        }    }}

现在机器人可以响应命令了。但这只是开始。Golang Telegram机器人的真正优势在于处理高负载时的性能。



步骤4:与外部API交互

让我们添加一个有用的功能

博客

书籍推荐