从telegram.ext导入命令处理程序、过滤器、消息处理程序、更新程序
...

定义主要():

updater = Updater(TELEGRAM_TOKEN, use_context=True)
dp = updater.dispatcher

#命令处理程序
dp.add_handler(CommandHandler("help", help_command_handler))
dp.add_handler(CommandHandler("开始", start_command_handler))
dp.add_handler(CommandHandler("reset", reset))

#消息处理程序
dp.add_handler(MessageHandler(Filters.text, echo))
dp.add_handler(MessageHandler(Filters.voice, handle_voice_message))

# 记录所有错误
dp.add_error_handler(错误)

#启动机器人
如果模型 == “webhook”:
updater.start_webhook(
听=“0.0.0.0”,
端口=整数(端口),
url_path= TELEGRAM_TOKEN,
webhook_url = WEBHOOK_URL + TELEGRAM_TOKEN
)

logging.info(f"在端口 {PORT}" 上启动 webhook 模式)
别的:
updater.start_polling()
logging.info(f"开始轮询模式")

updater.idle()

它首先使用Telegram命令和上下文创建一个Updater实例,然后为命令和消息事件设置各种处理程序(例如,使用特定功能应用程序清理,另一个功能处理文档)。如果机器人处在 webhook 模式,它会启动一个webhook服务器并监听传入的请求,否则它会启动轮询Telegram服务器以获取更新。而对于开发和测试我们可以使用 轮询,这是一种重新检查更新的方法,在部委期间我们希望有一个 网钩,以便电报在在可用时将更新更新机器人。。因此,webhook更更更更更更快快,更

铁路:建立数据库

该机器人还使用一个简单的PostgreSQL 数据库来处理用户历史记录。由于ChatGPT 模型没有内置,为了让模型考过去的执行查询,您提示。这就是聊天机器人的记忆方式。这是一个有趣的博客,涵盖了这方面以及如何在Python中处理历史记录。

现在,我们可以开始使用铁路了!使用您的 GitHub 账号登录,单击“开始新项目”,然后配置 PostgreSQL 数据库。

在铁路上创建PostgreSQL

接下来,单击仪表板中的 PostgreSQL 磁贴,然后单击“创建新表”按钮。写下表名,以及列表名和类型。

创造一个新表用户以追踪个人历史记录

创建表后,可以直接查询数据库,复制链接字符串,查看其他信息。

铁道:连接GitHub仓库

铁路允许连接和部交提供特定分支的更改。点击“+ 新” 按按键,”GitHub 回购,” 并选择实际发现您的机器人的存储库。

现在,铁路已准备好部属您的应用程序……但没那么快。
您的应用很可能包含 环境变化量。 在这种情况下,我们需要为 OpenAI 和 Telegram Bot 添加密匙,以及有关 ChatGPT 模型和 Telegram 将用于发送更新的 webhook url 的信息。

.envpython-dotenv

看到这条铁道很有趣 自动注册 您环境中的 PostgreSQL 数量,因此您将能够使用脚连接到数据库。您可以在下面看到我的机器人的看法:

为脚本设置环境变量

如前所示,webhook url 用于从 Telegram 获取更新。 URL 和 PORT 由 Railway 自动生成。因此,您需要前往 设置 > 环境 > 域 并将域 url 复制/粘贴到您的 WEBHOOK_URL 环境变量中。

铁路:构建应用程序

铁路用途 尼克斯包 从根目录构建图像,然后将其使用运行应用程序的环境。它支持多种语言,可以通过环境变化或文件进行配置。

.oga.mp3nitpicks.toml
[阶段.设置]
nixPkgs = ["...", "ffmpeg"] # 从 Nix 安装 ffmpeg 包
aptPkgs = ["...", "wget"] # 使用 apt-get 安装 wget 包
要求.txt
Telegram Bot 的 Nixpacks 构建过程

铁路:我们在直播!

该过程序将构建您的图像并配备您的机器。您现在可以检查日志、服务的使用情况,以及调整整套设置以触及特定分组支持上的部分会议室自动重启!

已部服务的指标选项卡

您可以单击“查询日志”按钮来查询部门日志,其中您的应用程序的所有输出都将被重新确定。

让我们打开 Telegram 并开始使用我们的机器。你可以看到我们可以提出问题,并使用我们的声音继续跟进其他消息。
(我要求机器人用语音消息跟随进入关于室内游乐园的最后一点)

铁路模板:创造自己的助手

我创建了一个铁路模板,它允许您直接创建您的机器,并且无需手动操作。 ChatGPT 正确地说:

Railway 模板是一个预先配置的项目模板,您可以将其用于Railway.app 上构建应用程序的起点。模板包包括流程框架和编写程序语言(例、Railyon 上的Ruby。等)的预定义配置文件和依赖项。通过使用模板,您可以免除从头开始配置项目的运行时过程,并可以专注于构建和自定义的应用程序定需要。

WEBHOOK_URLCHATGPT_MODEL = "gpt-3.5-turbo"。

您可以快速创建自己的机器人,不接受任何代币限制! (由于OpenAI API不是免费的,我需要在一段时间后限制用户访问……)

TelegramBot 模板