前期: Go-TG-Bot开发 – Lean Demo (iepl.cc)
本章完成内容
- 参考文档让机器人发送文档
开始吧
打开CodeServer(参考1-2环境部署)
这个是go-tg-api的参考文档,虽然有点旧了,但不影响使用
文件 - Go Telegram Bot API (go-telegram-bot-api.dev)
这里我们展示其中FileReader的使用方法
FileReader | Use an to provide a file. Lazily read to save memory.io.Reader |
我们先上传一个文件到你的CodeServer文件夹里,直接拖拽到浏览器就可以了
右击文件,点击复制相对路径即
参考手册
FileReader
Use an to provide file contents as needed. Requires a filename for the virtual file.io.Reader
var reader io.Reader
file := tgbotapi.FileReader{
Name: "image.jpg",
Reader: reader,
}
我们将reader赋值为我们要读取的文件,这里我们使用 os.Open 来读取文件,使用 tgbotapi.NewVideo 来发送文件
reader, _ := os.Open("videos/IMG_0953.jpg")
file2 := tgbotapi.FileReader{
Name: "image.jpg",
Reader: reader,
}
msg2 := tgbotapi.NewVideo(update.Message.Chat.ID, file2)
//发送文件
bot.Send(msg2)
结合上回的复读机,我们将上面这段代码插进去
package main
import (
"log"
"os"
"strconv"
tgbotapi "gopkg.in/telegram-bot-api.v5"
)
//tg机器人
func main() {
bot, err := tgbotapi.NewBotAPI("你的机器人密钥")
if err != nil {
log.Panic(err)
}
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
}
//循环接收,判断指令发送
switch update.Message.Command() {
//发送文档方法
//msg1 := tgbotapi.NewDocument(update.Message.Chat.ID, tgbotapi.FilePath("README.md"))
//发送视频方法
//msg2 := tgbotapi.NewVideo(update.Message.Chat.ID, tgbotapi.FilePath("videos/IBW-751.mp4"))
reader, _ := os.Open("videos/IMG_0953.jpg")
file2 := tgbotapi.FileReader{
Name: "image.jpg",
Reader: reader,
}
//发送文档
msg2 := tgbotapi.NewDocument(update.Message.Chat.ID, file2)
if _, err := bot.Send(msg2); err != nil {
log.Panic(err)
}
}
}
Comments NOTHING