电报机器人:如何做自我更新

本文关键字:何做 自我 更新 机器人 | 更新日期: 2023-09-27 18:17:29

我有一个Telegram帐户,并创建了Telegram bot来在远程机器上执行一些操作。它工作得很好。我在机器人中固定了一些代码,并希望在所有计算机上更新所有机器人?

。机器人理解命令"/update",但如何将新的。exe从我的计算机传递给所有机器人并进行自我更新?

电报机器人:如何做自我更新

我也编写了这样一个具有自我更新机制的bot。

要更新bot,我只需要通过Telegram发送新的。exe,但任何其他方法都可以。

基本上,我做了以下操作:

  • 用file_id调用getFile获取路径
  • 用不同的可执行文件启动新进程。在我的例子中,我也传递了文件下载的URL。
  • 退出旧进程。
  • 新进程取代旧的可执行文件并(重新)启动bot。

在windows上,你不能在.exe运行时更改它。

编辑:

我将bot作为windows服务运行,这让事情变得更复杂,但也更容易:

  • 在退出进程之前,我告诉scm服务已经停止。
  • 更新后,我再次通过scm启动服务,而不是使用CreateProcess。

如果bot以SYSTEM用户运行,权限/UAC不是问题。否则,允许业务用户写入可执行文件并启动进程。

如果您从桌面运行程序,那么UAC可能是一个问题;如果以管理员身份运行,则没有问题。启动的进程继承管理权限。如果不是以管理员身份运行…运行bot的用户需要对可执行文件进行写访问。

您需要cmd的外部脚本,该脚本将由您的bot在获得"/update"命令后运行。这个脚本应该首先停止你的bot并替换。exe文件并运行新的。exe文件。