安卓手机安装Termux+AstrBot+NapCat搭建QQ个人机器人【非官方】(简易版)

安卓手机安装Termux+AstrBot+NapCat搭建QQ个人机器人【非官方】(简易版)
前言

       好久不见,亲爱的友友们,这次我来了!这次我学会了用旧安卓手机安装termux软件搭建了一个AstrBotQQ机器人(大模型可能跑不了),我使用的旧安卓手机是vivoY31s标准版,手机型号有点久,到时能用就行了。其实方法都通用差不多。


目录

目录

前言

目录

一、简介

1.Termux

2.AstrBot

3.NapCat 

二、步骤

1. 安装Termux

2. 更新系统包打开 Termux,依次执行以下命令,更新软件源并安装基础工具。

换源 (可选)

3. 申请存储权限

正式部署

安装 proot-distro 及 其他必须组件

登录 Ubuntu环境

添加第三方PPA

安装 Python

克隆 AstrBot 仓库

运行 AstrBot

NapCat.Termux - 安卓 Termux 部署 recommend

Termux

Linux

通过 Docker 部署

连接到 AstrBot

在 AstrBot 配置 aiocqhttp

配置管理员

在 NapCatQQ 中添加 WebSocket 客户端

三、网址

问题一:

结尾


一、简介

1.Termux

Termux 是一款运行于 Android 系统的开源终端模拟器。该软件提供了 Linux 环境[2],即使设备不具备 root 权限也可使用。通过自带的包管理器Pacman、 APT),Termux 可以安装许多现代化的开发和系统维护工具,例如 zshPythonRubyNodeJSMySQL 等软件。

Termux 目前已经恢复在 Google Play 更新,但仍在 F-Droid 和 GitHub 保持更新。

2.AstrBot

AstrBot 致力于成为一个开源的一站式 Agentic 聊天机器人平台及开发框架。通过它,你能够在多种消息平台上部署和开发一个支持大语言模型(LLM)的聊天机器人。

  • 大模型对话。支持接入多种大模型服务。支持多模态、工具调用、MCP、原生知识库、人设等功能。
  • 多消息平台支持。支持接入 QQ、企业微信、微信公众号、飞书、Telegram、钉钉、Discord、KOOK 等平台。支持速率限制、白名单、百度内容审核。
  • Agent。完善适配的 Agentic 能力。支持多轮工具调用、内置沙盒代码执行器、网页搜索等功能。
  • 插件扩展。深度优化的插件机制,支持开发插件扩展功能,社区插件生态丰富。
  • WebUI。可视化配置和管理机器人,功能齐全。

3.NapCat 

基于 TypeScript 构建的 Bot 框架,通过相应的启动器或者框架,主动调用 QQ Node 模块提供给客户端的接口,实现 Bot 的功能。

魔法版:猫猫框架通过魔法的手段获得了 QQ 的发送消息、接收消息等接口。

为了方便使用,猫猫框架将通过一种名为 OneBot 的约定将你的 HTTP / WebSocket 请求按照规范读取,再去调用猫猫框架所获得的 QQ 发送接口之类的接口。

这是通过 NapCatQQ 协议实现端接入 QQ

  • 请合理控制使用频率。过于频繁地发送消息可能会被判定为异常行为,增加触发风控机制的风险。
  • 本项目严禁用于任何违反法律法规的用途。若您意图将 AstrBot 应用于非法产业或活动,我们明确反对并拒绝您使用本项目。

前置准备:

  • 一个 QQ 号(最好不是新创建的 QQ 号)。
  • 一台具有摄像功能的手机以扫码登录 QQ。

NapCat 提供了大量的部署方式,包括 Docker、Windows 一键安装包等等。


    二、步骤

    1. 安装Termux

    • 从 F-Droid 应用商店下载 Termux。不要从 Google Play 下载,那里的版本可能已过时。
    • 链接:F-Droid - Termux
    • 部分安卓手机应用商店会有Termux软件可以直接下载。

    2. 更新系统包
    打开 Termux,依次执行以下命令,更新软件源并安装基础工具。

    pkg update && pkg upgrade pkg install python git wget curl

    换源 (可选)

    建议更换源以获得更好的安装体验 但此换源并不会使git clone变得更快

    termux-change-repo

    选择第一个Mirror group Rotate between several mirrors

    随后选择第三个Mirrors in Chinese Mainland All in Chinese Mainland等待跑完即可

    3. 申请存储权限

    执行以下命令,会弹窗请求文件权限,请务必允许。

    termux-setup-storage

    正式部署

    安装 proot-distro 及 其他必须组件

    首先安装uvgitproot-distro

    pkg install uv git proot-distro

    使用 proot-distro 安装 ubuntu环境

    中国大陆概率访问GitHub,故建议使用加速器或代理。

    proot-distro install ubuntu

    登录 Ubuntu环境

    下载及配置完成会有提示Log in with: proot-distro login ubuntu,输入相同的即可登入:

    proot-distro login ubuntu

    此时便进入了Ubuntu环境,我们需使用apt命令安装软件包了。

    添加第三方PPA

    Python 3.10并不在官方的软件源中,而uv所要求的Python版本为3.10 ,所以进行此步为必须

    使用apt安装software-properties-common (添加PPA前置)

    apt update && apt install software-properties-common

    添加deadsnakes PPA(Python官方维护)

    add-apt-repository ppa:deadsnakes/ppa && apt update

    添加时你可能会看到:Press [ENTER] to continue or Ctrl-c to cancel. ,此时按下回车(换行)即可。

    安装 Python

    在进行完以上步骤后,即可安装Python 3.10

    apt install python3.10

    克隆 AstrBot 仓库

    直到这里,您所处的路径应为 ~# 而不是其他次级目录,以防找不到项目目录:

    git clone https://github.com/AstrBotDevs/AstrBot.git && cd AstrBot

    如果一切顺利的话,您应该进入到了 ~/AstrBot# 下,可以进入到下一步了。

    亲爱的,这步骤遇到 git clone 失败,那么其后的 cd 命令也不会生效。请跳转到问题一。

    运行 AstrBot

    uv run main.py

    如果使用 uv 下载软件包时速度慢,可以更换源 (以 清华源 为例)

    export UV_DEFAULT_INDEX="https://pypi.tuna.tsinghua.edu.cn/simple"

    如果没有报错,那么你可以看到uv在安装所需的包后出现类似 WebUI 已启动,可访问 并附带了几条链接。

    如果有,那么恭喜你,你已经部署好了AstrBot并且运行了,dx接下来你可以尝试访问localhost:6185验证可用性。

    提示:

    Termux与主机共享一个网络,即:Termux的IP地址就是主机的IP地址,你也可使用ifconfig查看主机IP地址

    默认用户名和密码是 astrbot 和 astrbot

    退出

    如需退出proot-distro,可以使用

    exit

    重新启动

    每次重新进入Termux时需重新打开 proot 环境并启动 AstrBot

    可以使用命令如下:

    proot-distro login ubuntu cd AstrBot && uv run main.py

    挂后台

    开启

    如需在一个session里面同时运行多个进程(eg. AstrBot 和 Napcat),可以使用

    uv run main.py & ......

    关闭

    上文运行后会有类似[1] 1145的输出,如需关闭进程,则可使用

    kill -9 1145

    pkill -9 -f "uv run main.py"

    提示:

    也可以使用screen命令,较&更易操控

    apt install screen #安装screen screen -S <name> #创建新的会话 screen -r <name> #重新连接会话 screen -ls #列举会话 screen -X -S <name> quit #关闭会话 Ctrl + a + d #退出当前窗口

    警告:

    在退出时,请注意保存自己的任务,以防数据丢失。

    后台存活

    如需让服务端在后台存活,可以在设置->应用和服务->应用启动管理->Termux改为手动管理允许后台活动(或类似选项)

    接下来,你需要部署任何一个消息平台,才能够实现在消息平台上使用 AstrBot。

    NapCat.Termux - 安卓 Termux 部署 recommend

    Termux

    curl -o napcat.termux.sh https://nclatest.znin.net/NapNeko/NapCat-Installer/main/script/install.termux.sh && bash napcat.termux.sh

    仓库地址: NapCat.installer

    Linux

    看这篇文章:NapCat.Installer - Linux一键使用脚本(支持Ubuntu 20+/Debian 10+/Centos9)

    Napcat WebUI 在哪打开: 在 napcat 的日志里会显示 WebUI 链接。

    如果是 linux 命令行一键部署的napcat:docker log <qq号>

    Docker部署的 NapCat:docker logs napcat

    通过 Docker 部署

    如果用 Docker 部署,将无法正常接收到语音数据文件数据。这意味着语音转文字、沙箱的文件输入功能将无法使用。可以接收到文字消息、图片消息等其他类型的消息。

    默认您安装了 Docker。

    在终端执行以下命令即可一键部署。

    docker run -d \ -e NAPCAT_GID=$(id -g) \ -e NAPCAT_UID=$(id -u) \ -p 3000:3000 \ -p 3001:3001 \ -p 6099:6099 \ --name napcat \ --restart=always \ mlikiowa/napcat-docker:latest

    执行成功后,需要查看日志以得到登录二维码和管理面板的 URL。

    docker logs napcat

    请复制管理面板的 URL,然后在浏览器中打开备用。

    然后使用你要登录的 QQ 扫描出现的二维码,即可登录。

    如果登录阶段没有出现问题,即成功部署。

    连接到 AstrBot

    在 AstrBot 配置 aiocqhttp

    1. 进入 AstrBot 的管理面板
    2. 点击左边栏 消息平台
    3. 然后在右边的界面中,点击 + 新增适配器
    4. 选择 aiocqhttp(OneBotv11)

    弹出的配置项填写:

    配置项填写:

    • ID(id):随意填写,用于区分不同的消息平台实例。
    • 启用(enable): 勾选。
    • 反向 WebSocket 主机地址:请填写你的机器的 IP 地址。一般情况下请直接填写 0.0.0.0
    • 反向 WebSocket 端口:填写一个端口,例如 6199

    点击 保存

    配置管理员

    填写完毕后,进入 配置 页,点击 其他配置 选项卡,找到 管理员 ID,填写你的 QQ 号(不是机器人的 QQ 号)。

    切记点击右下角 保存,AstrBot 重启并会应用配置。

    在 NapCatQQ 中添加 WebSocket 客户端

    切换回 NapCatQQ 的管理面板,点击 网络配置->新建->WebSockets客户端

    在新弹出的窗口中:

    • 勾选 启用
    • URL 填写 ws://宿主机IP:端口/ws。如 ws://localhost:6199/wsws://127.0.0.1:6199/ws
    • 消息格式:Array
    • 心跳间隔: 5000
    • 重连间隔: 5000
    1. 切记后面加一个 /ws!
    2. 这里的 IP 不是 0.0.0.0

    点击 保存

    前往 AstrBot WebUI 控制台,如果出现 aiocqhttp(OneBot v11) 适配器已连接。 相关蓝色的日志,说明连接成功。

    此时,你的 AstrBot 和 NapCatQQ 应该已经连接成功。使用 私聊 的方式在 QQ 对机器人发送 /help 以检查是否连接成功。


    三、网址

    问题一:

    如果 git clone 失败,那么其后的 cd 命令也不会生效,故在运行命令时请注意路径是否正确

    如果需要再次执行如上命令,建议先执行

    rm -r AstrBot

    之后再运行

    git clone https://github.com/AstrBotDevs/AstrBot.git && cd AstrBot

    AstrBot 管理面板具有管理插件、查看日志、可视化配置、查看统计信息等功能。

    【可点击AstrBot 管理面板跳转查看更多详细操作】

    NapCatQQ安装方法【可点击NapCatQQ安装方法跳转查看更多详细操作】


    结尾

    声明根据官方给的方法以及自身手机的环境试验成功同时进行了部分整理,也进行了链接说明,不涉及任何版权问题。

    可惜就是我的安卓机跑不了大模型,明天出云服务器+AstrBot+NapCat制作个人QQ机器人非官方的教程(这也是免费,不会成为vip文)!

    这篇文免费,不会成为vip文,可以转载,感谢!!!

    亲爱的点点赞,证明你来看我啦!

    如果亲爱的根据操作遇到了难题或者是有想法可以在评论区留言讨论哦!

    Read more

    重生之“我打数据结构,真的假的?”--1.顺序表(无习题)

    重生之“我打数据结构,真的假的?”--1.顺序表(无习题)

    C语言中的顺序表详细总结 1. 概述 顺序表(Sequential List)是一种线性数据结构,用于存储具有相同数据类型的一组元素。顺序表采用一段连续的存储空间,使用数组来实现,能够高效地支持随机访问操作。在 C 语言中,顺序表的实现通常基于数组,并且用户需要手动管理内存。顺序表适合用来解决需要快速访问元素的场景,尤其是当元素的数量较为稳定、不需要频繁插入或删除时。本文将详细讨论顺序表的定义、实现、各种操作的具体实现代码,以及顺序表的优缺点和实际应用场景。 2. 顺序表的基本概念 2.1 顺序表的定义 顺序表是一种存储线性表的顺序存储结构,其存储单元采用一段连续的内存区域,可以直接通过索引来访问任意元素。这使得顺序表在进行随机访问时效率非常高,时间复杂度为 O(1)。然而,由于内存是连续的,所以在插入或删除元素时,可能需要移动大量的数据,因此插入和删除操作的时间复杂度较高。 2.2 顺序表的特点 * 连续存储:顺序表的元素存储在连续的内存空间中。 * 随机访问:可以通过下标直接访问元素,时间复杂度为 O(1)

    By Ne0inhk
    【优选算法必刷100题】第023~24题(二分查找算法):寻找/搜索旋转排序数组中的最小值、点名(缺失的数字)

    【优选算法必刷100题】第023~24题(二分查找算法):寻找/搜索旋转排序数组中的最小值、点名(缺失的数字)

    🔥艾莉丝努力练剑:个人主页 ❄专栏传送门:《C语言》、《数据结构与算法》、C/C++干货分享&学习过程记录、Linux操作系统编程详解、笔试/面试常见算法:从基础到进阶 ⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平 🎬艾莉丝的简介: 🎬艾莉丝的算法专栏简介: 目录 023  寻找/搜索旋转排序数组中的最小值 1.1  解法一:暴力查找 1.2  解法二:二分查找 1.2.1  算法思路 1.2.2  算法实现 1.2.3  尝试:选择A点呢? 1.3  博主手记 024  点名(

    By Ne0inhk
    【组合数学 动态规划】P6870 [COCI2019-2020#5] Zapina|普及+

    【组合数学 动态规划】P6870 [COCI2019-2020#5] Zapina|普及+

    本文涉及知识点 组合数学汇总 C++动态规划 [COCI2019-2020#5] Zapina 题目描述 有 n n n 个不同的人和 n n n 道不同的题。 第 i i i 个人开心当且仅当他被分配到 i i i 道题,题号不限。 求让至少一个人开心的分配方案数。 输入格式 一个正整数: n n n。 输出格式 一个数字:你的答案 m o d 10 9 + 7 \bmod 10^9+7 mod109+7。 样例 #1

    By Ne0inhk

    数据结构七大排序算法图解——选择排序动图演示

    系列文章目录 四、选择排序 紧接上一篇交换排序 前言: 1、直接选择排序 思想: 例题: 代码部分: 性能分析 2、树形选择排序 思想: 例题一: 例题二: 性能分析 3、堆排序 定义: 方法: 如何“筛选”? 例题: 如何“建初始堆”? 例题: 代码部分 性能分析 4、总结 直接选择排序 树形排序 堆排序 前言: 选择排序的主要思想是每一趟从待排序列中选取一个关键字值最小的记录,也即第 1 趟从 n 个记录中选取关键字值最小的记录,在第 2 趟中,从剩下的 n-1 个记录中选取关键字值最小的记录,直到整个序列中的记录都选完位置。这样,由选取记录的顺序便可得到按关键字值有序的序列。

    By Ne0inhk