电报机器人:如何做自我更新
本文关键字:何做 自我 更新 机器人 | 更新日期: 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文件。