# 真寻 bot:

docker pull ubuntu 下镜像

docker run -it --network=host --name="zhenxunbot" ubuntu 本机网络启动

passwd 设置 root 密码

  • 每次进 docker 都要设置代理:

    export ALL_PROXY='socks5://127.0.0.1:7890'
    export https_proxy="http://127.0.0.1:7890"
    curl cip.cc 查看当前网络代理

  • 安装所需软件

    apt update
    apt install git vim curl python3 python3-pip

  • 换源:

    vim etc/apt/sources.list,加入

    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
    deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
    
  • 安装 gocq,下载源码,启动,选 3,

  • 修改 config.yml 文件,QQ 号和 universal: ws://your_websocket_universal.server

  • vim device.json 换协议为 2,连手机热点,扫码

  • 装数据库 :apt install postgresql postgresql-contrib

  • 启动数据库:service postgresql start 开机自启:update-rc.d postgresql defaults

  • 创建数据库和用户

    sudo su - postgres  # 切换用户
    psql
    # 用户名↓              # 密码↓
    # CREATE USER uname WITH PASSWORD 'zhenxun';      # 创建用户(可不执行)
                                       #密码↓
    alter user postgres with password 'zhenxun_bot';    # 修改 postgres 的密码
            # 数据库名称↓    所有者 (用户名)↓
    CREATE DATABASE zhenxun_bot OWNER postgres;             # 创建数据库
    \q # 退出

    exit

    su - root 切回

  • 下载真寻 bot 源码

  • 安装依赖(在真寻 bot 目录内):

    pip3 install poetry     # 使用 poetry 管理 python 包
    poetry install          # 安装依赖
    poetry shell            # 进入虚拟环境(以下在虚拟环境下执行)
    pip3 install playwright
    playwright install chromium
    playwright install-deps chromium
  • 设置超级用户,打开 .env.dev 文件,在 SUPERUSERS 中添加自己的 QQ

  • # 填写数据库数据

SUPERUSERS=["123456789"]

填写数据库数据

configs 目录并打开 config.py 文件

bind: str = ""  # 数据库连接链接
sql_name: str = "postgres"
user: str = ""  # 数据用户名
password: str = ""  # 数据库密码
address: str = ""  # 数据库地址
port: str = ""  # 数据库端口
database: str = ""  # 数据库名称

修改为:

bind: str = ""  # 数据库连接链接
sql_name: str = "postgres"
user: str = "postgres"
password: str = "zhenxun_bot"
address: str = "127.0.0.1"
port: str = "5432"
database: str = "zhenxun_bot"
  • 启动真寻

  • 依赖模块缺少,比如 nonobot,tortoise,adapter,一般是依赖问题,是执行 poetry shell 时出现报错,如果报错为:PyYAML 安装失败,就修改 pyprojecr.toml 文件(包含所有要下载的依赖)中的 PyYAML=“5.3.0”,然后再次执行 poetry install,如果说有红字不匹配,执行 poetry lock --no-update 后再次执行 poetry install,所有依赖安装完毕后运行,没有问题,均是在虚拟环境中。 poetry show 会显示已安装和未安装的依赖以及版本

  • 开机需保证:go-cq 正常运行(如果报红字,说明还有一个 go-cq 在跑,把它关掉),

    数据库启动,在虚拟环境中。

poetry install          # 安装依赖
poetry shell            # 进入虚拟环境
python3 bot.py

# va_list

是一个 C++ 中用于处理可变数量参数的机制。它是一个指向可变参数列表的类型,用于在函数中访问和处理不定数量的参数。

具体来说,va_list 是一个指向参数列表的指针,它是通过标准头文件中的宏和函数来操作的。使用 va_list,我们可以在函数中按顺序访问和提取可变数量的参数。

下面是一个简单的示例,演示了如何使用 va_list 来处理可变数量的参数:

#include <cstdarg>
#include <iostream>

void printValues(int numArgs, ...)
{
    va_list args;
    va_start(args, numArgs);

    for (int i = 0; i < numArgs; ++i)
    {
        int value = va_arg(args, int);
        std::cout << value << " ";
    }

    va_end(args);
}

int main()
{
    printValues(3, 1, 2, 3); // 输出: 1 2 3

    return 0;
}

在上面的示例中,printValues 函数接收一个整数参数 numArgs,它表示后续可变数量参数的个数。通过使用 va_list,我们可以在函数中使用 va_start 宏来初始化可变参数列表,然后使用 va_arg 宏按顺序提取参数的值,直到达到指定的参数个数。最后,我们使用 va_end 宏来清理可变参数列表。

需要注意的是,使用 va_list 需要小心处理参数类型和个数的一致性,以及遵循正确的使用方式,以避免出现未定义行为或错误。

# const noexcept 和 final

const, noexcept, 和 final 是 C++ 中的关键字,用于修饰函数或类的特性。

  1. const:它用于修饰函数或类的成员函数,表示该函数不会修改对象的状态。在一个 const 成员函数中,不能修改类的非 mutable 成员变量,也不能调用非 const 成员函数,以确保函数的调用不会对对象的状态造成改变。
  2. noexcept:它用于修饰函数,表示该函数不会抛出异常。在 C++ 中,函数可以声明为 noexcept 以指示其不会引发异常。这对于编写异常安全的代码以及进行性能优化很有用。
  3. final:它用于修饰类或虚函数,表示该类不可被继承或该虚函数不可被派生类重写。当一个类被声明为 final 时,它不能作为基类,不能被其他类继承。当一个虚函数被声明为 final 时,派生类将不能重写该虚函数。

这些关键字可以帮助程序员在代码中明确表示其意图,并在一定程度上增加代码的可读性和可靠性。

阅读次数