telegram重新登录(telegram操作频繁)

未标题-1-4 (1).png

本文将探讨如何使用Golang构建Telegram聊天机器人,并将其与Cohere API集成以进行自然语言生成。

获取Cohere API密钥在Cohere网站)上注册账户。一旦您拥有一个账户,请按照以下步骤获取API密钥:登录您的Cohere账户。导航到账户设置中的API密钥部分。如果您没有API密钥,请生成一个API密钥。将生成的API密钥复制到您的代码中以使用。设置你的Telegram机器人打开Telegram应用并搜索BotFather。与BotFather开始聊天并按照指示操作。使用/newbot命令创建一个新的机器人。为你的机器人提供一个名称。选择一个机器人的用户名。

一旦你的机器人被创建,BotFather将为你提供一个机器人令牌。我们将保留这一点,以便以后使用。

在我们开始之前,请确保你的机器上已经安装了Go。你可以从Go的官方网站下载并安装它。

或者你可以像我一样使用GitHub Codespaces。

设置你的项目 为你的项目创建一个新的目录并导航到它。创建一个名为main.go的文件,将所有的花哨代码放进去。touch main.go使用以下命令初始化一个新的Go模块:go mod init <module-name>运行以下命令在终端中安装所需的依赖项:go get github.com/NicoNex/echotron/v3
go get github.com/cohere-ai/cohere-go让我们看看代码

导入依赖项:

导入所需的包和依赖项以供我们的聊天机器人使用。log: 用于记录消息strings: 用于字符串操作time: 用于与时间相关的操作echotron: 使用Go编写的Telegram机器人API库cohere-go: 使用Go编写的Cohere

package main import

类型定义:

type stateFn func stateFn

在这里,我们定义了一个自定义类型 stateFn,它表示一个以 echotron.Update为参数并返回另一个 stateFn 函数的函数。

Bot 结构体:

type bot struct { chatID int64 echotron.API cohereClient *cohere.Client state stateFn

我们定义一个bot结构体,封装了我们的聊天机器人所需的必要字段,例如:

chatID 存储聊天的 IDechotron.API 与 Telegram Bot API 进行交互cohereClient 与 Cohere API 进行交互state 用于跟踪当前状态函数。

API密钥和命令:

var

这里,我们声明了用于Telegram Bot API的API密钥和用于Cohere API的API密钥的变量。

此外,我们定义了一个包含echotron.BotCommand结构体的数组,以表示机器人命令及其描述。

func newBot echotron.Bot { cohereClient, err := cohere.CreateClient if err != nil { log.Fatalln } b := &bot{ chatID: chatID, API: echotron.NewAPI, cohereClient: cohereClient, } b.state = b.handleMessage return b }

这个函数由Echotron调度程序调用,为每个与其交互的聊天创建一个新的机器人实例。

它初始化一个新的Cohere客户端,使用提供的chatID创建一个机器人实例,设置Echotron API与Telegram Bot API token,并将初始状态设置为handleMessage。

处理提示:

func handlePrompt stateFn { b.SendChatAction response, err := b.generateText) if err != nil { log.Println b.SendMessage return b.handleMessage } b.SendMessage return b.handleMessage }

这个方法处理用户提示并使用Cohere API生成响应。

它发送一个“typing”聊天动作来指示机器人正在处理请求,根据用户提示使用generateText方法生成响应,并将响应发送回聊天。

如果在文本生成过程中发生错误,它会记录错误,发送错误消息,并转换回handleMessage状态。

处理消息:

func handleMessage stateFn { switch m := message; { case strings.HasPrefix: b.SendMessage case strings.HasPrefix: b.SendMessage return b.handlePrompt } return b.handleMessage }

这个方法处理机器人接收到的不同消息命令。

它使用 switch 语句检查消息内容。如果消息以“/start”开头:它向聊天发送“Hello world”消息。如果消息以“/generate”开头:它会提示用户输入一个提示并转换到 handlePrompt 状态。如果没有满足条件的情况,它将保持在 handleMessage 状态。

更新机器人状态:

func Update { b.state = b.state }

这种方法需要实现echotron.Bot接口。它会根据接收到的更新更新机器人的当前状态。

使用Cohere API生成文本:

func generateText { options := cohere.GenerateOptions{ Model: "command", Prompt: prompt, MaxTokens: 300, Temperature: 0.9, K: 0, StopSequences: []string{}, ReturnLikelihoods: "NONE", } response, err := b.cohereClient.Generate if err != nil { return "", err } return response.Generations[0].Text, nil }

这个方法使用 Cohere 的 API 生成文本。

它以提示作为输入,并返回生成的文本或错误。它创建了一个 GenerateOptions 结构,其中包含各种文本生成选项,例如模型、提示、蕞大标记、温度等。然后它调用 cohereClient 的 Generate 方法,根据提供的选项生成文本。如果在生成过程中出现错误,则返回错误。否则,它返回生成的文本。

提取消息:

func message string { if u.Message != nil { return u.Message.Text } else if u.EditedMessage != nil { return u.EditedMessage.Text } else if u.CallbackQuery != nil { return u.CallbackQuery.Data } return "" }

此函数从给定的更新中提取消息。

它检查更新的不同消息类型,并返回相应的文本。如果没有满足条件,则返回一个空字符串。

主要函数:

func main { echotron.NewAPI.SetMyCommands dsp := echotron.NewDispatcher for { err := dsp.Poll if err != nil { log.Println } time.Sleep } }

main 函数作为我们聊天机器人的入口点。

它使用 Telegram Bot API token 初始化 Echotron 并设置机器人命令。它使用 token 和 newBot 函数作为参数创建新的调度程序。调度程序不断轮询更新并相应地处理它们。如果在轮询过程中发生错误,则记录错误日志。程序在重试轮询过程之前休眠 5 秒。

使用.gitignore保护API密钥:

为了保护您的API密钥并防止它们被提交和推送到远程存储库,您可以使用.gitignore文件。下面是您可以执行的步骤:

在项目的根目录中创建一个名为.gitignore的新文件。打开 .gitignore 文件并添加以下行:tgtoken
chtoken这些行指定Git应忽略的文件或模式。保存.gitignore文件。

通过将tgtoken和chtoken添加到.gitignore文件中,Git将忽略这些文件并不会包含在您的代码库中。

请确保将您的API密钥存储在单独的文件中,并将它们添加到.gitignore文件中以保持私密。

运行您的代码:

go run main.go

我觉得我在这里漏掉了什么,但是 go run main.go 运行正常,所以……

测试您的机器人:

以下是 main.go 的代码:

package main import type stateFn func stateFn type bot struct { chatID int64 echotron.API cohereClient *cohere.Client state stateFn } var func newBot echotron.Bot { cohereClient, err := cohere.CreateClient if err != nil { log.Fatalln } b := &bot{ chatID: chatID, API: echotron.NewAPI, cohereClient: cohereClient, } b.state = b.handleMessage return b } func handlePrompt stateFn { b.SendChatAction response, err := b.generateText) if err != nil { log.Println b.SendMessage return b.handleMessage } b.SendMessage return b.handleMessage } func handleMessage stateFn { switch m := message; { case strings.HasPrefix: b.SendMessage case strings.HasPrefix: b.SendMessage return b.handlePrompt } return b.handleMessage } // This method is needed to implement the echotron.Bot interface. func Update { b.state = b.state } // Generate text using the Cohere API func generateText { options := cohere.GenerateOptions{ Model: "command", Prompt: prompt, MaxTokens: 300, Temperature: 0.9, K: 0, StopSequences: []string{}, ReturnLikelihoods: "NONE", } response, err := b.cohereClient.Generate if err != nil { return "", err } return response.Generations[0].Text, nil } // Returns the message from the given update. func message string { if u.Message != nil { return u.Message.Text } else if u.EditedMessage != nil { return u.EditedMessage.Text } else if u.CallbackQuery != nil { return u.CallbackQuery.Data } return "" } func main { echotron.NewAPI.SetMyCommands // This is the entry point of echotron library. dsp := echotron.NewDispatcher for { err := dsp.Poll if err != nil { log.Println } // In case of connection issues, wait 5 seconds before trying to reconnect. time.Sleep } }

结论

太棒了!我们使用Cohere的API创建了一个文本生成机器人,并在Telegram上部署了它。

你现在可以拿着这个并扩展你的聊天机器人的功能。

你可以在这里了解更多关于Echotron的内容。

海外精品引流脚本–最强海外引流  

官网:www.facebook18.com

唯一TG:https://t.me/Facebook181818

Facebook.png

更多海外引流脚本方案

如果你需要脚本演示、部署咨询或海外获客方案,可以通过下面入口继续查看。

官网首页 | 演示视频 | TG 在线客服 | TG 频道

相关阅读

© 版权声明
广告也精彩

相关文章