mirror of
https://github.com/anten-ka/gotelegram_pro.git
synced 2026-05-19 12:16:01 +00:00
Auto-update existing Telegram bot during upgrade
This commit is contained in:
26
install.sh
26
install.sh
@@ -963,6 +963,31 @@ bot_service_status() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto_update_bot_if_possible() {
|
||||||
|
[ -d "$SCRIPT_DIR/gotelegram-bot" ] || return 0
|
||||||
|
[ "$(bot_service_status)" = "not_installed" ] && return 0
|
||||||
|
[ -f "$BOT_DIR/.env" ] || return 0
|
||||||
|
|
||||||
|
local needs_update=0
|
||||||
|
[ -f "$SCRIPT_DIR/gotelegram-bot/bot.py" ] && \
|
||||||
|
! cmp -s "$SCRIPT_DIR/gotelegram-bot/bot.py" "$BOT_DIR/bot.py" && needs_update=1
|
||||||
|
[ -f "$SCRIPT_DIR/gotelegram-bot/i18n.py" ] && \
|
||||||
|
! cmp -s "$SCRIPT_DIR/gotelegram-bot/i18n.py" "$BOT_DIR/i18n.py" && needs_update=1
|
||||||
|
[ -f "$SCRIPT_DIR/gotelegram-bot/requirements.txt" ] && \
|
||||||
|
! cmp -s "$SCRIPT_DIR/gotelegram-bot/requirements.txt" "$BOT_DIR/requirements.txt" && needs_update=1
|
||||||
|
|
||||||
|
local lang_file lang_name
|
||||||
|
for lang_file in "$SCRIPT_DIR"/gotelegram-bot/lang/*.json; do
|
||||||
|
[ -e "$lang_file" ] || continue
|
||||||
|
lang_name=$(basename "$lang_file")
|
||||||
|
! cmp -s "$lang_file" "$BOT_DIR/lang/$lang_name" && needs_update=1
|
||||||
|
done
|
||||||
|
|
||||||
|
[ "$needs_update" = "1" ] || return 0
|
||||||
|
bot_install >/dev/null 2>&1 || \
|
||||||
|
log_warning "Telegram bot auto-update failed; run menu 12 → Telegram-bot → Install/update"
|
||||||
|
}
|
||||||
|
|
||||||
menu_bot() {
|
menu_bot() {
|
||||||
local st
|
local st
|
||||||
st=$(bot_service_status)
|
st=$(bot_service_status)
|
||||||
@@ -1788,6 +1813,7 @@ main() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
auto_migrate_legacy_state || true
|
auto_migrate_legacy_state || true
|
||||||
|
auto_update_bot_if_possible || true
|
||||||
auto_install_admin_web_if_possible || true
|
auto_install_admin_web_if_possible || true
|
||||||
|
|
||||||
# First-run language picker (before banner so banner appears in chosen lang)
|
# First-run language picker (before banner so banner appears in chosen lang)
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ from pathlib import Path
|
|||||||
ROOT = Path(__file__).resolve().parents[1]
|
ROOT = Path(__file__).resolve().parents[1]
|
||||||
BOT_PATH = ROOT / "gotelegram-bot" / "bot.py"
|
BOT_PATH = ROOT / "gotelegram-bot" / "bot.py"
|
||||||
CATALOG_PATH = ROOT / "templates_catalog.json"
|
CATALOG_PATH = ROOT / "templates_catalog.json"
|
||||||
|
INSTALL_PATH = ROOT / "install.sh"
|
||||||
|
|
||||||
|
|
||||||
class BotFeatureTests(unittest.TestCase):
|
class BotFeatureTests(unittest.TestCase):
|
||||||
@@ -79,6 +80,23 @@ class BotFeatureTests(unittest.TestCase):
|
|||||||
self.assertIn("await get_telemt_version()", body)
|
self.assertIn("await get_telemt_version()", body)
|
||||||
self.assertNotIn('sh("telemt", "--version")', body)
|
self.assertNotIn('sh("telemt", "--version")', body)
|
||||||
|
|
||||||
|
def test_installer_auto_updates_existing_bot_files(self):
|
||||||
|
source = INSTALL_PATH.read_text(encoding="utf-8")
|
||||||
|
auto_body = re.search(
|
||||||
|
r"auto_update_bot_if_possible\(\).*?(?=\n\n[A-Za-z0-9_]+\(\) |\n\n#)",
|
||||||
|
source,
|
||||||
|
flags=re.S,
|
||||||
|
)
|
||||||
|
self.assertIsNotNone(auto_body)
|
||||||
|
|
||||||
|
auto_text = auto_body.group(0)
|
||||||
|
self.assertIn('bot_service_status', auto_text)
|
||||||
|
self.assertIn('bot_install', auto_text)
|
||||||
|
self.assertIn('cmp -s "$SCRIPT_DIR/gotelegram-bot/bot.py" "$BOT_DIR/bot.py"', auto_text)
|
||||||
|
self.assertIn('cmp -s "$SCRIPT_DIR/gotelegram-bot/i18n.py" "$BOT_DIR/i18n.py"', auto_text)
|
||||||
|
self.assertIn('cmp -s "$SCRIPT_DIR/gotelegram-bot/requirements.txt" "$BOT_DIR/requirements.txt"', auto_text)
|
||||||
|
self.assertIn('auto_migrate_legacy_state || true\n auto_update_bot_if_possible || true\n auto_install_admin_web_if_possible || true', source)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|||||||
Reference in New Issue
Block a user