From 70849058f911df03ec529546ccebe482afde46db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=90=8C=E6=A3=AE?= Date: Mon, 29 Jul 2024 17:26:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E5=91=8A=20&&=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=BA=94=E7=94=A8=20LinkDing=20Docker=20Mailserver=20Pixman=20?= =?UTF-8?q?DeepLX=20API=20Cookie=20Cloud=20Telegram=20Bot=20Api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 萌森 --- .github/ISSUE_TEMPLATE/01-idea.yml | 72 ++++++++++++++++++ .github/README.md | 11 +++ README.md | 60 ++++++++++++--- apps/cookie-cloud/README.md | 2 +- apps/cookie-cloud/latest/docker-compose.yml | 5 +- apps/cookie-cloud/latest/scripts/init.sh | 5 ++ apps/cookie-cloud/latest/scripts/upgrade.sh | 5 ++ apps/deeplx/0.9.5.1/docker-compose.yml | 9 ++- apps/deeplx/0.9.5.1/scripts/init.sh | 5 ++ apps/deeplx/0.9.5.1/scripts/upgrade.sh | 5 ++ apps/deeplx/README.md | 2 +- apps/deeplx/data.yml | 2 +- apps/linkding/logo.png | Bin 1739 -> 25358 bytes apps/telegram-bot-api/7.7/data.yml | 46 +++++++++++ apps/telegram-bot-api/7.7/docker-compose.yml | 31 ++++++++ apps/telegram-bot-api/7.7/scripts/init.sh | 15 ++++ .../telegram-bot-api/7.7/scripts/uninstall.sh | 10 +++ apps/telegram-bot-api/7.7/scripts/upgrade.sh | 15 ++++ apps/telegram-bot-api/README.md | 40 ++++++++++ apps/telegram-bot-api/data.yml | 18 +++++ apps/telegram-bot-api/logo.png | Bin 0 -> 12125 bytes 21 files changed, 340 insertions(+), 18 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/01-idea.yml create mode 100644 apps/telegram-bot-api/7.7/data.yml create mode 100644 apps/telegram-bot-api/7.7/docker-compose.yml create mode 100644 apps/telegram-bot-api/7.7/scripts/init.sh create mode 100644 apps/telegram-bot-api/7.7/scripts/uninstall.sh create mode 100644 apps/telegram-bot-api/7.7/scripts/upgrade.sh create mode 100644 apps/telegram-bot-api/README.md create mode 100644 apps/telegram-bot-api/data.yml create mode 100644 apps/telegram-bot-api/logo.png diff --git a/.github/ISSUE_TEMPLATE/01-idea.yml b/.github/ISSUE_TEMPLATE/01-idea.yml new file mode 100644 index 00000000..1ce7b909 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/01-idea.yml @@ -0,0 +1,72 @@ +name: 提交应用 +description: 提交您想要添加到 1Panel 的应用 +title: "[应用提交]" +labels: app +assignees: qyg2297248353 +body: + - type: markdown + id: environment + attributes: + value: "## 基本信息" + - type: input + id: version + validations: + required: true + attributes: + label: "1Panel 版本号" + description: "请提供您的 1Panel 版本号" + - type: input + id: email + validations: + required: true + attributes: + label: "邮箱" + description: "请提供您的邮箱" + - type: markdown + id: details + attributes: + value: "## 需求应用信息" + - type: dropdown + id: app_type + attributes: + label: "应用类型" + multiple: true + options: + - 开源 + - 闭源 + - type: input + id: app_url + validations: + required: true + attributes: + label: "Docker Hub 或 GitHub 链接" + description: "请提供应用的 Docker Hub 或 GitHub 链接" + - type: input + id: app_name + validations: + required: true + attributes: + label: "应用名称" + description: "请提供应用的名称" + - type: input + id: app_version + validations: + required: true + attributes: + label: "应用版本" + description: "请提供应用的版本" + - type: markdown + id: details + validations: + required: true + attributes: + label: "应用描述" + description: "请提供应用的描述" + - type: checkboxes + id: authorization + attributes: + label: 上架通知授权 + description: "是否授权 1Panel 在应用上架时通知您" + options: + - label: "是" + required: true diff --git a/.github/README.md b/.github/README.md index bbf3dbcb..4559a17d 100644 --- a/.github/README.md +++ b/.github/README.md @@ -5,6 +5,17 @@ 本仓库中的所有应用不会与 `1Panel` 官方应用商店冲突(存在相同应用并不影响后续的安装与升级,择优选择你需要的版本即可) ,我们会定期更新应用,如果您有任何问题,请联系我们。 +> [!NOTE] +> ## 2024年07月29日 公告 +> +> 版本 `v1.10.13-lts` 已经支持 `env_file` 文件,但是迫于稳定性考虑,我们依旧采用固定环境变量文件的方式解决问题。 +> +> 近期我们上架了很多新应用,如果您有任何问题,请联系我们。 +> +> 欢迎投稿,我们会根据您的需求,上架更多的应用。 +> +> 🥰 [新疆萌森软件开发工作室](https://blog.lifebus.top/) 祝您生活愉快! + > [!NOTE] > ## 2024年07月17日 公告 > diff --git a/README.md b/README.md index ee68ab07..35a1bdf5 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,16 @@ 本仓库中的所有应用不会与 `1Panel` 官方应用商店冲突(存在相同应用并不影响后续的安装与升级,择优选择你需要的版本即可) ,我们会定期更新应用,如果您有任何问题,请联系我们。 +--- + +
+

2024年07月29日 公告

+

版本 v1.10.13-lts 已经支持 env_file 文件,但是迫于稳定性考虑,我们依旧采用固定环境变量文件的方式解决问题。

+

近期我们上架了很多新应用,如果您有任何问题,请联系我们。

+

欢迎投稿,我们会根据您的需求,上架更多的应用。

+

🥰 新疆萌森软件开发工作室 祝您生活愉快!

+
+

2024年07月17日 公告

正式开始维护,新老用户推荐使用自动化脚本完成软件订阅。

@@ -49,6 +59,8 @@

警告 请勿升级 1Panelv1.10.10-lts 版本,否则会导致应用商店无法使用!

+--- + ## 维护状态 | 状态 | 图标 | 应用名称 | 应用官网 | 短的描述 | 集合 | @@ -56,8 +68,8 @@ | 🟢 | | AList | https://alist.nn.ci/ | 一款支持多重存储的文件列表程序 | | | 🟢 | | Bark | https://bark.day.app/ | 一款注重隐私、安全可控的自定义通知推送工具 | | | 🟢 | | Casdoor | https://casdoor.org/ | 身份和访问管理(IAM)/单点登录(SSO)平台 | | -| 🔴 | | Cookie Cloud | https://github.com/easychen/CookieCloud/ | CookieCloud是一个和自架服务器同步浏览器Cookie和LocalStorage的小工具 | | -| 🔴 | | DeepLX | https://deeplx.owo.network/ | DeepL免费API(无需TOKEN) | | +| 🟢 | | Cookie Cloud | https://github.com/easychen/CookieCloud/ | CookieCloud是一个和自架服务器同步浏览器Cookie和LocalStorage的小工具 | | +| 🟢 | | DeepLX | https://deeplx.owo.network/ | DeepL免费API(无需TOKEN) | | | 🟢 | | Dockge | https://dockge.kuma.pet/ | 面向堆栈的管理器 | | | 🟢 | | Elasticsearch | https://www.elastic.co/elasticsearch/ | Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎 | Elastic | | 🟢 | | Kibana | https://www.elastic.co/kibana/ | Kibana 针对大规模数据快速运行数据分析 | Elastic | @@ -92,6 +104,7 @@ | 🔴 | | SpeedTest | https://www.speedtest.net/ | 互联网速度测试 | SpeedTest | | 🔴 | | SpeedTest-Tracker | https://docs.speedtest-tracker.dev/ | Speedtest Tracker 是一款自托管互联网性能跟踪应用程序,可针对 Ookla 的 Speedtest 服务运行速度测试检查 | | | 🟢 | | Stream-Rec | https://github.com/hua0512/stream-rec/ | Stream-rec是一个用于各种流媒体服务的自动流媒体录制工具 | | +| 🟢 | | Telegram Bot Api | https://telegram.org/ | 自建 Telegram Bot API 服务器 | | | 🟢 | | Transmission | https://transmissionbt.com/ | 快速、简单、免费的 Bittorrent 客户端 | | | 🟢 | | Uptime Kuma | https://uptime.kuma.pet/ | 自托管监控工具 | | | 🟢 | | Umami | https://umami.is/ | 为速度和效率而构建的网站分析 | | @@ -104,6 +117,8 @@ > > 维护状态:🟢 维护中 🔴 未维护 🟡 表示不定期维护 +--- + ## 应用安装 > 温馨提示: @@ -111,9 +126,11 @@ > > 我们建议您在安装之前备份您的数据,或手动安装。 -### 方案一:自动化安装 +### 自动化安装 -如果您不想每次都手动执行命令,可以使用一键式安装。我们优先推荐此方式。 +一键式安装,无需手动操作,自动完成 1Panel应用 上架应用商店。 + +每三小时自动更新一次应用列表。 ```shell curl -sSL https://install.lifebus.top/auto_install.sh | bash @@ -133,33 +150,38 @@ curl -sSL https://install.lifebus.top/auto_uninstall.sh | bash + 应用数据目录:`${应用持久化目录}` -### 方案二:手动安装 +### 手动安装模式 -应用的升级与更新均需要重新执行安装脚本。 - -#### 手动执行模式 +更新时机由自己把握,手动执行命令。 ```shell curl -sSL https://install.lifebus.top/app_install.sh | bash ``` -### 方案三:计划任务模式 +### 计划任务模式 将内容写入Shell计划任务中,设定定期执行。 ```shell #!/bin/bash +# 此处可以定义代理方案 + script_url="https://install.lifebus.top/app_install.sh" echo "Downloading and executing script from $script_url..." bash <(curl -sL "$script_url") echo "Script execution completed." + ``` #### 配置脚本网络代理 +如果您的网络环境需要代理,请在脚本执行前配置代理。 + +可将以下脚本插入到 `计划任务模式` 的脚本中。 + ```sh proxy_protocols="http" proxy_server="server address" @@ -168,6 +190,8 @@ export http_proxy="$proxy_protocols://$proxy_server:$proxy_port" export https_proxy="$proxy_protocols://$proxy_server:$proxy_port" ``` +--- + ## 安装 `Pre 尝鲜版` 应用 > 说明: @@ -186,6 +210,20 @@ curl -sSL https://install.lifebus.top/pre_app_install.sh | bash curl -sSL https://install.lifebus.top/pre_app_uninstall.sh | bash ``` +--- + +## 卸载所有本地应用 + +通过此脚本,您可以卸载所有本地应用,但是不会删除数据。 + +可能您的库中遗留了一些无用的应用,您可以通过此脚本进行清理。该脚本不影响 `自动化脚本` 的应用更新。 + +```sh +curl -sSL https://install.lifebus.top/local_app_uninstall.sh | bash +``` + +--- + ## 常见问题 + 升级失败 @@ -203,12 +241,16 @@ curl -sSL https://install.lifebus.top/pre_app_uninstall.sh | bash + 关于 `前置检查` 依旧需要填写 `数据库` 相关连接信息,是因为其提供的能力并不是完全可靠,避免后期出现问题,我们采用持久化的方式存储。 + 如果您的环境符合要求,但是依旧无法安装,请联系我们。 +--- + ## 温馨提示 安装应用前请查看应用说明,了解应用的使用方法和注意事项。 当前第三方库应用均为开源应用,我们不对应用的安全性和稳定性负责。 如果您在使用过程中遇到问题,请查看应用的官方文档或社区,或者联系我们。 +--- + ## 联系我们 diff --git a/apps/cookie-cloud/README.md b/apps/cookie-cloud/README.md index ef0fa387..4746bd83 100644 --- a/apps/cookie-cloud/README.md +++ b/apps/cookie-cloud/README.md @@ -3,7 +3,7 @@ CookieCloud 是一个用于将 cookie 与您的自托管服务器同步的小工具,允许您将浏览器 cookie 和本地存储同步到您的手机和云端。它具有内置的端到端加密功能,并允许您设置同步间隔。 -![CookieCloud](https://github.com/easychen/CookieCloud/blob/master/images/20230121092535.png) +![CookieCloud](https://file.lifebus.top/imgs/cookie_cloud_cover.png) ## 浏览器插件 diff --git a/apps/cookie-cloud/latest/docker-compose.yml b/apps/cookie-cloud/latest/docker-compose.yml index aa678ed6..14bdaa54 100644 --- a/apps/cookie-cloud/latest/docker-compose.yml +++ b/apps/cookie-cloud/latest/docker-compose.yml @@ -15,7 +15,8 @@ services: - 1panel-network ports: - ${PANEL_APP_PORT_HTTP}:8088 + env_file: + - /etc/1panel/envs/global.env + - ${ENV_FILE:-/etc/1panel/envs/default.env} volumes: - ${COOKIECLOUD_ROOT_PATH}/data:/data/api/data - env_file: - - .env diff --git a/apps/cookie-cloud/latest/scripts/init.sh b/apps/cookie-cloud/latest/scripts/init.sh index c86c4fbc..77b84912 100644 --- a/apps/cookie-cloud/latest/scripts/init.sh +++ b/apps/cookie-cloud/latest/scripts/init.sh @@ -3,6 +3,11 @@ if [ -f .env ]; then source .env + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "Check Finish." else diff --git a/apps/cookie-cloud/latest/scripts/upgrade.sh b/apps/cookie-cloud/latest/scripts/upgrade.sh index c86c4fbc..77b84912 100644 --- a/apps/cookie-cloud/latest/scripts/upgrade.sh +++ b/apps/cookie-cloud/latest/scripts/upgrade.sh @@ -3,6 +3,11 @@ if [ -f .env ]; then source .env + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "Check Finish." else diff --git a/apps/deeplx/0.9.5.1/docker-compose.yml b/apps/deeplx/0.9.5.1/docker-compose.yml index 18812d58..b3ceac9c 100644 --- a/apps/deeplx/0.9.5.1/docker-compose.yml +++ b/apps/deeplx/0.9.5.1/docker-compose.yml @@ -14,8 +14,9 @@ services: networks: - 1panel-network ports: - - ${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP:-1188} - environment: - - PORT=${PANEL_APP_PORT_HTTP:-1188} + - ${PANEL_APP_PORT_HTTP}:1188 env_file: - - .env + - /etc/1panel/envs/global.env + - ${ENV_FILE:-/etc/1panel/envs/default.env} + environment: + - PORT=1188 diff --git a/apps/deeplx/0.9.5.1/scripts/init.sh b/apps/deeplx/0.9.5.1/scripts/init.sh index c86c4fbc..77b84912 100644 --- a/apps/deeplx/0.9.5.1/scripts/init.sh +++ b/apps/deeplx/0.9.5.1/scripts/init.sh @@ -3,6 +3,11 @@ if [ -f .env ]; then source .env + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "Check Finish." else diff --git a/apps/deeplx/0.9.5.1/scripts/upgrade.sh b/apps/deeplx/0.9.5.1/scripts/upgrade.sh index c86c4fbc..77b84912 100644 --- a/apps/deeplx/0.9.5.1/scripts/upgrade.sh +++ b/apps/deeplx/0.9.5.1/scripts/upgrade.sh @@ -3,6 +3,11 @@ if [ -f .env ]; then source .env + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "Check Finish." else diff --git a/apps/deeplx/README.md b/apps/deeplx/README.md index 19a6f228..a7245ba0 100644 --- a/apps/deeplx/README.md +++ b/apps/deeplx/README.md @@ -2,7 +2,7 @@ 强大的 DeepL 翻译 API -![DeepLX](https://static.deepl.com/img/appDownload/macos_app_download.svg) +![DeepLX](https://file.lifebus.top/imgs/deeplx_cover.png) ## 简介 diff --git a/apps/deeplx/data.yml b/apps/deeplx/data.yml index 71525533..2819edb8 100644 --- a/apps/deeplx/data.yml +++ b/apps/deeplx/data.yml @@ -6,7 +6,7 @@ additionalProperties: key: deeplx name: DeepLX tags: - - WebSite + - Tool - Middleware - Local shortDescZh: DeepL 免费API diff --git a/apps/linkding/logo.png b/apps/linkding/logo.png index 4eef9ed19955cdf9afd66b25cebc2fe495b8d14f..fe99a6cdc8874fca9fd01867d9631fc734f76bfc 100644 GIT binary patch literal 25358 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 literal 1739 zcmV;+1~mDJP)`G&-EOxVR8Tf1{6s|K~!jgwVLUct11vikKA3BElMzCc!dPEOlj!;_K_yoP=cOh_40 zAAt8Cq9va7zks(l@iBVDi(C6Cyjr*Qd{AC}1iu`_Z_)1|4wrR!dt`rMBgBr5Y3A^& z__ax3P;p&`pW|Q6dr|6M@ zK|F6~@LSN}mTomGI6gV(VQhYsKzf_P`=C*5w$zQq)5ji0sVJhi;Ylzxkb}dHZT4kr zFNP;c$1JhnWhk^Q-KncPKQ)Zd#+uuQvazJXp=mP3B?#wB1&B&b>nTAY&HB8 z5Du|3*iG9+FCI^3p5jNSV3dK$3E&}%le_jo3Vxz>?`!)Z8vlcL#!`Bs;FaIUEt@os z?kb+%ObIx*G|ZS&-|)uk<0f_z(W|Hs|-ilNO)1N=+?1gbbB6QAf_8{uZt1x z^+S)JEa@IC@sd~1qx82oqG*?TtYZAcuyt8Ax3?OY$#}YqpGDK%053c;eEz-0Hc^j9 zKN7_N?_FPU*=SYwTWlxq$fUpY13Yt*gd003)@yV>Nru!eSZOM6*^iURvIuRQ>}Fyo zL3FOWpZEzSxs}y1l}3M!aC+RJd~Ow@i@u}*-7jFDCpMw)v|#Eej5Zb=@f@`?6I!u@ zU7JkOKV{>J^5p8rF>r=a%ID%1ou|s(*s*obY@$}HrxHO_f>K$HpV592LMAupxfIr1 zdf8EQm$X{_pd^qz%Ix`cW5=?|v`DqsnbgOWCxW4AhB^ywY+`i30&J$)D*IrretD=z zX@?F5&Kg&Dh|P^|HEFf_#4U#TJ)p+8DTiEWbngN2oW+i=wv=up9_k039dLtE{e;dk zN$T;FfK5O*FX3UMA~kTB4=Z*;y1A=6({D4YNvh3)VfHu7wMl3$wQjJ9?XH7aU_xO@ z+jYR!HQTce_~64~+co|$q2P*8kHCCbY`(_UHfind$>53*M76wpQ6z5I;&b+7lQ9I5 z3V*PQ63!k0wi7!RyO=g-hVWMl7f~Ug$_&~lpTCNg*a_GKjSH7r36#lmSjJd7(yx3a zb~re2RLt8E!;-6#MJyjH^yrmbipj&5h z(NT`xE-c5w4aEsCNBXW91-(2lxd(*F+GLY z{p-N*nemf_UbWjmvs-@zmC%ETlK#f^1rF`b%L3ci`m>vsn2GpSzFzwuTH9$CbNSLF z=!2oA<*eOG86jl8Lds_9r3teG?bhW+v88>H9cmOWx41R^xu`qX;$Cjf!}ALVYKzVJ z?;b0B_dw+T9Oa~|M>*d;go?g;d=`E8;BOc```VFZ^xebO=&Q%Xqx$b1aF64ANAu(O h;vW^r@z+0x_z(B+T@e|g@E`yH002ovPDHLkV1lfkd4T`` diff --git a/apps/telegram-bot-api/7.7/data.yml b/apps/telegram-bot-api/7.7/data.yml new file mode 100644 index 00000000..9facd808 --- /dev/null +++ b/apps/telegram-bot-api/7.7/data.yml @@ -0,0 +1,46 @@ +additionalProperties: + formFields: + - default: "/home/telegram-bot-api" + edit: true + envKey: TELEGRAM_BOT_API_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 8082 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: API 端口 + labelEn: API port + required: true + rule: paramPort + type: number + - default: 8081 + edit: true + envKey: PANEL_APP_PORT_HTTPS + labelZh: API 端口 (HTTPS) + labelEn: API port (HTTPS) + required: true + rule: paramPort + type: number + - default: "" + edit: true + envKey: TELEGRAM_API_ID + labelZh: Telegram Bot 应用 ID + labelEn: Telegram Bot Application ID + required: true + type: text + - default: "" + edit: true + envKey: TELEGRAM_API_HASH + labelZh: Telegram Bot 应用 Hash + labelEn: Telegram Bot Application Hash + required: true + type: password + - default: "" + edit: true + envKey: TELEGRAM_PROXY + labelZh: 网络代理 + labelEn: Network proxy + required: false + type: text diff --git a/apps/telegram-bot-api/7.7/docker-compose.yml b/apps/telegram-bot-api/7.7/docker-compose.yml new file mode 100644 index 00000000..2b8767fa --- /dev/null +++ b/apps/telegram-bot-api/7.7/docker-compose.yml @@ -0,0 +1,31 @@ +version: "3.8" + +networks: + 1panel-network: + external: true + +services: + telegram-bot-api: + image: aiogram/telegram-bot-api:7.7 + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTPS}:8081 + - ${PANEL_APP_PORT_HTTP}:8082 + env_file: + - /etc/1panel/envs/global.env + - ${ENV_FILE:-/etc/1panel/envs/default.env} + volumes: + - ${TELEGRAM_BOT_API_ROOT_PATH}/data:/var/lib/telegram-bot-api + - ${TELEGRAM_BOT_API_ROOT_PATH}/logs:/var/log/telegram-bot-api + environment: + - TELEGRAM_STAT=1 + - TELEGRAM_LOCAL=1 + - TELEGRAM_VERBOSITY=1 + - TELEGRAM_MAX_WEBHOOK_CONNECTIONS=100000 + - TELEGRAM_LOG_FILE=/var/log/telegram-bot-api/telegram-bot-api.log + - TELEGRAM_MAX_CONNECTIONS=1024 diff --git a/apps/telegram-bot-api/7.7/scripts/init.sh b/apps/telegram-bot-api/7.7/scripts/init.sh new file mode 100644 index 00000000..77b84912 --- /dev/null +++ b/apps/telegram-bot-api/7.7/scripts/init.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/telegram-bot-api/7.7/scripts/uninstall.sh b/apps/telegram-bot-api/7.7/scripts/uninstall.sh new file mode 100644 index 00000000..c86c4fbc --- /dev/null +++ b/apps/telegram-bot-api/7.7/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/telegram-bot-api/7.7/scripts/upgrade.sh b/apps/telegram-bot-api/7.7/scripts/upgrade.sh new file mode 100644 index 00000000..77b84912 --- /dev/null +++ b/apps/telegram-bot-api/7.7/scripts/upgrade.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/telegram-bot-api/README.md b/apps/telegram-bot-api/README.md new file mode 100644 index 00000000..74b5566e --- /dev/null +++ b/apps/telegram-bot-api/README.md @@ -0,0 +1,40 @@ +# Telegram Bot API 服务器 + +Telegram Bot API 提供了一个 HTTP API 用于创建电报机器人。 + +机器人是小应用程序完全在 Telegram 应用程序中运行。用户通过以下方式与机器人交互灵活的接口可以支持任何类型的任务或服务。 + +## 特性 + ++ 下载文件没有大小限制。 ++ 上传最多 2000 MB 的文件。 ++ 使用本地路径上传文件并文件 URI 方案。 ++ 使用 Webhook 的 HTTP URL。 ++ 使用 Webhook 的任何本地 IP 地址。 ++ 使用 Webhook 的任何端口。 ++ 放最大网络钩子连接数最多 100000。 ++ 接收绝对本地路径作为值文件路径字段,无需下载文件后获取文件要求。 + +Telegram Bot API 服务器仅接受 HTTP 请求,因此需要使用 TLS 终止代理来处理远程 HTTPS 请求。 + +## 使用说明 + +### 获取 `api_id` + +为了获得API ID并使用 Telegram API 开发您自己的应用程序,您需要执行以下操作: + ++ 使用任何应用程序注册 Telegram。 ++ 登录您的 Telegram 核心: [https://my.telegram.org](https://my.telegram.org) 。 ++ 去《API开发工具》并填写表格。 ++ 您将获得基本地址以及 `api_id` 和 `api_hash` 用户授权所需的参数。 ++ 目前每个号码只能有一个 `api_id` 连接到它。 + +我们将向您在此过程中使用的电话号码发送重要的开发者通知,因此请使用连接到您的活跃 Telegram 帐户的最新号码。 + +### 使用 `api_id` + +在使用 MTProto Telegram API 之前,请注意,所有 API 客户端库都受到严格监控,以防止滥用。 + +如果您使用 Telegram API 进行洪泛、垃圾邮件、伪造订阅者和查看频道计数器,您将被 `永久禁止`。 + +由于过度滥用 Telegram API,所有帐户使用非官方 Telegram API 客户端注册或登录的用户会自动放入在监视下以避免违反规定服务条款。 diff --git a/apps/telegram-bot-api/data.yml b/apps/telegram-bot-api/data.yml new file mode 100644 index 00000000..863e4d5b --- /dev/null +++ b/apps/telegram-bot-api/data.yml @@ -0,0 +1,18 @@ +name: Telegram Bot Api +title: Telegram Bot API 服务器 +description: Telegram Bot API 服务器 +additionalProperties: + key: telegram-bot-api + name: Bark + tags: + - Middleware + - Tool + - Local + shortDescZh: Telegram Bot API 服务器 + shortDescEn: Telegram Bot API Server + type: tool + crossVersionUpdate: true + limit: 0 + website: https://telegram.org/ + github: https://github.com/tdlib/telegram-bot-api/ + document: https://core.telegram.org/bots/ diff --git a/apps/telegram-bot-api/logo.png b/apps/telegram-bot-api/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..53f07ffece7122be3e33d0b41c309325aa0b36e1 GIT binary patch literal 12125 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 TGK`wB00000NkvXXu0mjfcii4_ literal 0 KcmV+b0RR6000031