博文

目前显示的是标签为“开发”的博文

当检测到关键字时 私信发送对应的贴纸 tg-keyword-react-bot

图片
前言 已经实现了 检测到关键字 在群里发送贴纸 如果直接给用户发送私信呢? 需求 当检测到关键字  naive  时 私信发送贴纸 技术基础 电报 telegram 关键字监控机器人 面向GPT开发 基于以上代码, 增强开发以下功能 当监控频道中出现"naive "时, 向用户私信发送贴纸. 贴纸为 https://t.me/addstickers/fuckgfwnewbie 的第2个贴纸 注意到监控频道的通知信息是有格式的. #FOUND (https://t.me/c/1958152252/300436) "自建" IN Joey Huang Blog(1958152252) FROM jacky jay(5979280761) 自建的节点怎么不能访问X和chatgpt啊 #FOUND (https://t.me/LoonCommunity/161393) "大佬" IN Loon Community(@LoonCommunity) FROM Yang Bo(@Zen_Neng_Bu_Bian_Tai) 大佬们,loon怎么在不开梯子的情况下去除广告啊? 通信信息的第1行格式为 #FOUND (源信息) "匹配关键字" IN xxx (群username或userid) FROM yyy (用户username或userid) 上传Github https://github.com/crazypeace/tg-keyword-react-bot 演示视频 部署 见项目Readme ======== 后记 本次 (2025-11-09) 面向GPT开发, 用到的GPT是 Claude GPT生成的程序有BUG, 获取消息的纯文本 message_text = event.message.message 正确的做法是提取消息的 markdown 文本 from telethon.extensions import markdown message_text = markdown.unparse(event.message.message, event.message.entities)

当检测到关键字 三色图 时 发送贴纸 tg-keyword-react-bot

图片
需求 想做个实验  当检测到关键字 三色图 时 发送贴纸 基础技术 电报 telegram 关键字监控机器人 准备工作 选一个不会影响自己正常使用的小号 来发贴纸 申请 api_id, api_hash https://my.telegram.org/apps 得到 api_id, api_hash 思路 为了不影响现有的关键字机器人, 我们让这个小号关注关键字机器人输出 的频道, 当频道中报告有人在群组中发送"三色图"时, 让这个小号在同一个群组发送贴纸. 面向GPT开发 已经有这样一个频道 会发布这样的关键字监控信息 #FOUND (https://t.me/c/1958152252/300436) "自建" IN Joey Huang Blog(1958152252) FROM jacky jay(5979280761) 自建的节点怎么不能访问X和chatgpt啊 也可能是这样的 #FOUND (https://t.me/LoonCommunity/161393) "大佬" IN Loon Community(@LoonCommunity) FROM Yang Bo(@Zen_Neng_Bu_Bian_Tai) 大佬们,loon怎么在不开梯子的情况下去除广告啊? 需要开发一个telegram机器人 当监控频道中出现"三色图"时, 在源群组中发送贴纸. 贴纸为 https://t.me/addstickers/fuckgfwnewbie 的第1个贴纸 上传Github https://github.com/crazypeace/tg-keyword-react-bot 演示视频 部署 见项目Readme ======== 后记 本次 (2025-11-07) 面向GPT开发, 用到的GPT是 Claude GPT生成的程序有BUG, 获取消息的纯文本 message_text = event.message.message 正确的做法是提取消息的 markdown 文本 from telethon.extensions import markdown message_text = markdown.unparse(event.message.message, event.messa...

极简 GitHub Porxy 支持GitHub脚本的无限嵌套调用

图片
前言 当我看到这个DD系统的项目时 https://github.com/bin456789/reinstall 我被它的安装命令吸引了. curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh || wget -O ${_##*/} $_ 找GPT解析了一下原理, 是为了考虑到有些linux系统默认有wget,有些默认有curl . 我准备把 我的极简一键脚本 的安装方式都改成这样 . curl -LO https://github.com/crazypeace/xray-vless-reality/raw/main/install.sh || wget -O ${_##*/}$_ && bash install.sh 4 8443 然后在脚本的一开始, 安装 curl 和 wget. apt-get -y install curl wget -qq 我倾向于显示错误内容, 这样在小白反馈问题的时候, 直接发截图或日志就行了. 所以curl和wget没有加静默参数. 复杂的脚本命令, 在结合我的ghproxy时, 如果要实现嵌套github脚本调用, 现有的方案会比较难处理. 我准备改用 WJQSERVER-ghproxy 的思路. 在ghproxy 本身的处理过程中, 针对  .sh 的资源, 全量查找替换, 把访问github资源的链接, 都再套一次自己 ghproxy. 然后再返回. 新建一个 github proxy 项目名 ghproxy 不影响 原来使用 gh-proxy 的用户. worker.js 我想了一下,  基于 cloudflare 的 woker, 开发 一个专门 反向代理  github 的工具 1. 本代理 接收的 path部分 应该是一个 http:// 或者 https:// 2. 如果 path部分 不是 http:// 或者 https:// 开头 那么加上 http:// 或者 https://  3. 判断 本代理 接收的 链接 是否 github 判断方法为: 链接 的域名部分 应该是 git 开头的主域名 如  github.com...

Hysteria2 服务端自签证书 V2rayN客户端指定证书指纹 pinSHA256 证书锁定 Certificate Pinning

图片
前言 上一篇我们摸索清楚了 V2ray的客户端配置文件应该怎么写 现在我们在v2rayN的客户端中实现. * 啊, 上一次改动 v2rayN-3.29-VLESS 还是 去年... Hy2 节点的窗体 添加 label 和 textBox (txtPinSHA256) 保存按钮的方法, 添加对 txtPinSHA256 的处理. 相应的 NodeItem 类要添加数据成员. 现在可以测试一下添加节点保存到 guiNConfig.json 文件了. OK. 接下来修改加载 Hy2 节点窗体 AddHy2ServerForm.cs  BindingServer() OK 粘贴生成节点  AddHy2ServerForm.cs ImportConfig() public static NodeItem ImportFromClipboardConfig(string clipboardData, out string msg) OK 生成v2ray配置文件参数 private static int outbound(V2rayNappConfig appConfig, ref V2rayClientConfig v2rayConfig)    private static int boundStreamSettings(V2rayNappConfig appConfig, string iobound, ref StreamSettings streamSettings) 分析得到 public class TlsSettings 定义增加 pinSHA256 这时要参考 V2ray 的文档, 定义成 List<string> 数据成员名也与文档一致 pinnedPeerCertificateChainSha256 再修改 boundStreamSettings() 函数的实现 public class V2rayNappConfig  增加一个函数 public string pinSHA256() 照着上面的 allowInsecure() 的样子写 测试 生成 客户端配置文件, OK 字段原样写入了. 接下来处理 he...

向外访问网络行为次序随机的场景下 预设网络资源 预设替代命令

图片
前言 上一篇 我们处理了 向外访问网络行为次序固定的场景下 预设网络资源 预设替代命令 现在我们来处理 次序随机的场景 典型例子就是 233脚本. https://crazypeace.eu.org/2025/11/fake-curl-wget-sh.html 我们先在无预设命令的条件下, 执行一遍安装过程. cd fake-curl-wget-sh-main source fake-curl-wget-v2.sh cd bash install-233.sh 然后分析日志. 需求 编辑 __fake_net_common.sh , 添加预设命令. 因为网络访问的次序是随机的, 所以我们只能从网络资源的特征入手. 我们要对 wget --no-check-certificate -t 3 -q -c https://github.com/233boy/xray/releases/latest/download/code.zip -O /tmp/tmp.dO84swIzMs/tmpsh  设置预设命令 cp /root/code.zip /tmp/tmp.dO84swIzMs/tmpsh  结合上一篇的 第几个参数 的经验  再问问GPT 怎么在shell脚本中实现匹配关键字. 得到 if printf '%s\n' "$@" | grep -qE '^http.*code\.zip$'; then     # 有参数是 http开头 code.zip结尾     cp /root/code.zip "$8"     has_preset=1 fi 同样的思路, 处理 xray-linux-64.zip, 处理 jq-linux-amd64 再来处理 wget --no-check-certificate -4 -qO- https://one.one.one.one/cdn-cgi/trace 我们要先判断 包含 one.one.one.one 这个特征, 现进行替换. 得到 if printf '%s\n' "$@" | grep -qF 'one.one.one.one'; then   # 有参数是 包含one...

向外访问网络行为次序固定的场景下 预设网络资源 预设替代命令

图片
前言 上一篇 我们实现了 向外访问网络时暂停 使用者进行替代操作 对于这种向外访问网络行为次序固定的场景下  我们可以预设网络资源 预设替代命令 预设网络资源 刚好利用上一篇我们操作过的环境. * 如果你是从头来的话, 基本上就是把上一篇教程操作一遍. 预设替代命令 打开上一篇的操作日志. * Xshell 可以自动记录日志 参考上一篇操作过程中我们输入的替代命令, 设置到 __fake_net_common.sh 中 如, 序号 1 序号 3 序号 5  我们遇到了一个随机字符的问题, 不能写死预设命令. 我们可以用指定第几个参数的方法. 问问GPT 分析下面这样的命令 curl -L -q --retry 5 --retry-delay 10 --retry-max-time 60 -x '' -sSfLo /tmp/tmp.eNF5Sld6Wm -H Accept:\ application/vnd.github.v3+json https://api.github.com/repos/XTLS/Xray-core/releases/latest  "$cmd" 是 curl "$@" 是curl后面所有的参数 我需要用指定第几个参数的方法 提取其中的 /tmp/tmp.eNF5Sld6Wm GPT帮我数了数, 用 "${13}" 的方法引用. __fake_net_common.sh 修改完后. 试试 source fake-curl-wget-v2.sh bash install.sh 有问题, 会卡死. 检查了一下, 是因为在 case 1) 的里面写了 curl. 这里并没有使用系统原本的curl, 而是调用了假的curl. 我们借用之前的经验.  先去掉假的PATH, 执行curl之后, 再恢复假的PATH. 再试试 source fake-curl-wget-v2.sh bash install.sh 还是有问题. 在 cp /root/xxx  yyy 的部分, 报错非法参数. 那我们就把参数 echo 出来. 再根据日志的打印, 对比 curl 原始命令的参数列表, 发现应该用 "${12}" 用这种方式调试完, 就正常了. 小优化 在 /tmp/f...

多shell脚本嵌套调用的环境 向外访问网络时暂停 使用者进行替代操作

图片
前言 上一篇我们将 向外访问网络时暂停 使用者进行替代操作 的方案应用在了 安装233boy 脚本上面 进一步的, 能不能继续拓展应用范围, 用在, 比如, 我自己的 极简一键脚本中? bash <(curl -L https://github.com/crazypeace/xray-vless-reality/raw/main/install.sh) 试试 发现有问题. 我的脚本调用了xray官方安装脚本, 在这个嵌套调用的场景下, 被嵌套调用的脚本里的网络访问就没有被抓到. 去问了好多个GPT, 回答了一堆什么线程啊, 进程啊, 环境啊, 继承啊, ...  给了我几个解决方案, 试了一下也是不行. 说明回答的那些理论就是狗屁. 改进 那就来个根本的方案, 在系统PATH中安插假的 curl 和 wget. 我们上个方案里的 curl, wget, __fake_net_common 函数, 都变成可执行文件, 放到 PATH里去. 逻辑都是现成的, 不用大改. 最终我们得到这样的 4 个脚本 fake-curl-wget-v2.sh #!/usr/bin/env bash # ========================================== # 拦截 curl 和 wget 调用,用于调试/离线测试 # ========================================== # 在PATH中设置假命令 curl wget mkdir -p /tmp/fakebin if [[ ":$PATH:" != *:/tmp/fakebin:* ]]; then   export PATH="/tmp/fakebin:$PATH" fi # 清理调用记数文件 rm /tmp/fakebin/* # 放入假命令文件 cp __fake_net_common.sh /tmp/fakebin/fake_net_common chmod +x $_ cp __fake_curl.sh /tmp/fakebin/curl chmod +x $_ cp __fake_wget.sh /tmp/fakebin/wget chmod +x $_ # -----------------------------...

在网络受限的VPS上 运行一个脚本 向外访问网络时暂停 使用者进行替代操作

图片
前言 上一篇我们解决DD脚本的问题的方案, 其实就可以用来解决所有网络受限的VPS环境运行脚本的问题  ( 当然整个操作看起来比较繁琐. 而且, 上一篇的方案只处理了curl的情况. 而常见的脚本, 有些是用curl访问网络, 有些是用wget. 能力弱一点的朋友, 不知道怎么改成处理wget的情况. 那么, 我们尝试做一个通用一点的方案. 而且考虑如何方便使用. 思路 我们 做一个 fake-curl-wget.sh 脚本. 1) fake-curl-wget.sh 包含一个 curl() 的壳子, 和一个 wget() 的壳子 2) 使用者在终端先 source fake-curl-wget.sh 再执行其它脚本 3) 这样, 后面执行的脚本会调用到 fake-curl-wget.sh 中的 curl()壳子 和 wget()壳子 4) 每次调用 curl 或 wget 时, 打印一个调用序号. 这个序号每次调用时, 自增1 为了避免管道命令导致的序号问题, 使用临时文件保存序号. 5) 对于所有 curl 和 wget 调用, 这个序号是统一.  先调用curl时, 序号为1. 接着调用wget时, 序号为2. 6) 输出 pwd 当前目录 7) 输出 完整的 curl 命令和全部参数 8) 输出 完整的 wget 命令和全部参数 9) 这个curl壳 或 wget壳, 并不去真正访问网络 10) 根据调用序号, 执行预设的命令. 如, cp file1 /path/to/file 或 cat file2 用来替代 curl -LO 或 curl -Lo 的保存文件的命令 或 curl -L 的输出到stdout的命令 11) 这些预设命令是会被人工编辑而增加的. 用case实现 10) 的逻辑. 12) 这个curl壳 或 wget壳, 永远返回成功. 实践与调试 把上面这一大段需求发给GPT. 得到的结果大方向是对的, 但是有小问题. 而且对话几次, 也不能让我满意. 还是要动用我的编码能力, 综合多个GPT的回答. * 也许是我用的免费的GPT, 能力不够. 版本V1 最终得到 fake-curl-wget.sh 文件内容: #!/usr/bin/env bash # ============================...

DD脚本 在日志输出curl被调用的序号 输出curl命令和参数 执行预设的命令

图片
前言 在 DD脚本群 https://t.me/reinstall_os 有群友遇到网络不好, 脚本下载资源时容易中断的问题. 思路 上一篇我们发现不能简单的将某个资源提前放到VPS指定的位置 因为会出现 不同的资源 放到VPS上同一个位置的情况. 那么我们换个思路. 在整个脚本的执行过程中, 所有的curl命令的内容和次序是固定的. 换句话说, 我们每次执行脚本时, 第1句, 第2句, 第3句, ... 第n句curl命令的内容是固定的. 哪怕脚本中某一条curl语句被放在了循环中, 被执行了多次. 但是从展开后的执行序列来说, 每次curl命令的内容是固定的. 实践 所以我们 在已有的脚本头部添加一个这样的curl壳子: 1) 记录并打印一个调用序号. 每次调用序号增1 2) 输出 pwd 当前目录 3) 输出完整的 curl 命令及全部参数 4) 这个curl壳, 并不去真正下载文件. 5) 根据调用序号, 执行预设的命令. 如,  cp file1 /path/to/file 或 cat file2 来替代 curl -LO 或 curl  -Lo 的保存文件的命令 或 curl -L 的输出到stdout的命令 6) 这些预设命令是会被人工编辑而增加的. 用case实现 5) 的逻辑. 7) 这个curl壳, 永远返回成功.  把这个要求发给GPT, 得到 # 全局调用计数器 curl_call_count=0 curl() {     curl_call_count=$((curl_call_count + 1))     # 输出调用序号和当前目录(到 stderr)     echo "[DEBUG] curl call # $curl_call_count" >&2     echo "[DEBUG] Current directory: $(pwd)" >&2     # 输出完整命令(包含所有参数,安全转义)     printf '[DEBUG] Command: curl ' >&2     printf '%q ' "$@" ...

DD脚本 输出所需资源的链接

图片
前言 在 DD脚本群 https://t.me/reinstall_os 有群友遇到网络不好, 脚本下载资源时容易中断的问题. 思路 我有一个想法,  1) 让这个脚本把所有需要下载的资源的链接输出 2) 使用者自己去下载资源, 并上传到VPS上 实践 分析一下这个DD脚本 https://github.com/bin456789/reinstall/raw/refs/heads/main/reinstall.sh 在脚本的开头, 看到作者已经实现了一个 curl 函数, 用于包装系统的curl. 这是一个很好的思路. 我们可以在此基础上, 作如下修改: 1. 输出 pwd 当前目录 2. 输出完整的 curl 命令及全部参数 3. 这个curl壳, 并不去真正下载文件. 4. 这个curl壳, 永远返回成功. 拿着这些去问GPT. 最终修改成这样: curl() {     # 输出当前工作目录     echo "[DEBUG] Current directory: $(pwd)" >&2     # 输出完整命令(含全部参数)     printf 'curl ' >&2     printf '%q ' "$@" >&2     printf '\n' >&2     echo >&2     # 不执行真实下载,只打印信息     # 永远返回成功     return 0 } 我们把修改过的 reinstall-edited.sh 上传到 VPS, 测试 bash reinstall-edited.sh debian 13 *  debian 13  为示例. 日志打印为: [DEBUG] Current directory: /root curl -L http://www.qualcomm.cn/cdn-cgi/trace 我们在脚本中搜索  http://www.qualcomm.cn/cdn-cgi/trace 找到如下代码 我们需要让此处的...

The Hot3 in Last 30 Days

酒馆SillyTavern 玩英文角色卡 也能以中文输出 设置世界书Lorebooks

搭 Docker版 Sub-Store订阅转换专家 带 http-meta 实现 集合订阅 测延迟 排序 筛选 生成新订阅 定时任务上传Gist