# 真寻 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.servervim 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++ 中的关键字,用于修饰函数或类的特性。
- const:它用于修饰函数或类的成员函数,表示该函数不会修改对象的状态。在一个 const 成员函数中,不能修改类的非 mutable 成员变量,也不能调用非 const 成员函数,以确保函数的调用不会对对象的状态造成改变。
- noexcept:它用于修饰函数,表示该函数不会抛出异常。在 C++ 中,函数可以声明为 noexcept 以指示其不会引发异常。这对于编写异常安全的代码以及进行性能优化很有用。
- final:它用于修饰类或虚函数,表示该类不可被继承或该虚函数不可被派生类重写。当一个类被声明为 final 时,它不能作为基类,不能被其他类继承。当一个虚函数被声明为 final 时,派生类将不能重写该虚函数。
这些关键字可以帮助程序员在代码中明确表示其意图,并在一定程度上增加代码的可读性和可靠性。