抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

如何创建一个TG机器人?

前言

TG机器人是什么?

  • TG机器人是一个完全在Telegram应用程序内运行的小型应用程序,机器人支持任何类型的任务或服务

我可以创建TG机器人吗?

  • 当然,每个人都可以创建属于自己的TG机器人

我需要准备什么?

  • 只需要一台计算机(用于开发与调试)和VPS(如果你想要长期托管)

通过本教程,我将学到什么

  • 通过本教程,你将学到创建TG机器人账户并管理TOKEN的方法,以及如何使用GO开发TG机器人程序

🪧 如果你来自中国大陆地区,可能无法访问本文部分链接和Telegram,请参考突破网络封锁

Step1-申请机器人账户

首先我们需要到@BotFather申请机器人账户

开始对话

点击Stat开始对话

起名

输入/newbot命令,然后它会让我们给机器人起名,可使用任意文字

设定用户名

接着我们给机器人设定用户名,只允许使用英文、数字和_,用户名用于让别人找到这个机器人
机器人用户名通常需要bot后缀,我们还需要加上bot后缀

这时候我们得到了机器人的TOKEN(令牌,用于登陆机器人)

如果遗失了TOKEN

如果遗失了TOKEN同样可以通过@BotFather找回

输入/mybot并点击我们的机器人

点击API TOKEN

然后找回了TOKEN

如果泄漏了TOKEN

⚠️ 如果你认为TOKEN已泄漏或者机器人出现了异常,请及时重置TOKEN

  1. @BotFather发送/mybots并点击你的机器人

  1. 点击API TOKEN

  1. 点击revoke current token

  1. 重置成功,你也获取到了新TOKEN

注意事项

⚠️ 警告:任何拥有该TOKEN的人都可以控制你的机器人,请存储在安全的地方
🪧 详细讯息可以到官网查阅

Step2-编写第一个机器人程序

你应该掌握至少一种编程语言的技能,如果还没有也没关系

现在就可以去学
我比较推荐GO语言
GO 中文教程
GO 官方教程
GO english tutorial

这个链接 列出了一些常见编程语言的社区框架

包括

你可以使用你最熟悉的编程语言,并选择合适的框架来进行开发

一般框架的repo README会写出一些示例代码方便快速上手

本教程将使用GO语言的Telebot框架和VSCodeIDE进行开发

获取telebot

1
go get -u gopkg.in/telebot.v3

编写代码

接下来编写第一个机器人程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package main

import (
"log"
"time"

tele "gopkg.in/telebot.v3"
)

func main() {
pref := tele.Settings{
Token: "这里替换为机器人的TOKEN",
Poller: &tele.LongPoller{Timeout: 10 * time.Second},
}

b, err := tele.NewBot(pref)
if err != nil {
log.Fatal(err)
return
}

b.Handle("/hello", func(c tele.Context) error {
return c.Send("Hello!")
})

b.Start()
}

如果你不知道在哪里输入代码和编译运行请点击这里

运行效果

Tele示例

你可以参考下面的一些例子然后构建你的机器人

命令模块化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//main.go

package main

import (
"log"
"test-tgbot/commands"
"time"

tele "gopkg.in/telebot.v3"
)

func main() {
pref := tele.Settings{
Token: "这里替换为机器人的TOKEN",
Poller: &tele.LongPoller{Timeout: 10 * time.Second},
}

b, err := tele.NewBot(pref)
if err != nil {
log.Fatal(err)
return
}

b.Handle("/hello", commands.OnGetImg())

b.Start()
}
1
2
3
4
5
6
7
8
9
10
11
//commands/GetImgCommand.go

package commands

import "gopkg.in/telebot.v3"

func OnGetImg() telebot.HandlerFunc {
return func(c telebot.Context) error {
return c.Send("Hello")
}
}

发送图片

1
2
3
//main.go

b.Handle("/getimg", commands.OnGetImg())
1
2
3
4
5
6
7
8
9
10
11
12
13
//commands/GetImgCommand.go

package commands

import "gopkg.in/telebot.v3"

func OnGetImg() telebot.HandlerFunc {
return func(c telebot.Context) error {
photo := &telebot.Photo{File: telebot.FromURL("https://avatars.githubusercontent.com/u/78346594")}
photo.Caption = "这是一张图片"
return c.Send(photo)
}
}

遇到不懂的欢迎到我的tg群组提问@pmaru_top

//Done 2023/8/1 16:06

评论