注册回调函数和定制定时任务的注意事项
注册回调函数和定制定时任务是对 QQBot 进行扩展的唯一方式,在编写这些函数时,请注意以下事项:
回调函数的函数名、参数名、参数数量、参数顺序都不得更改
定时任务的函数名可以自己定义,但参数有且只有一个,参数名必须为 bot ,为一个 QQBot 对象。
所有回调函数和定时任务都将在主线程中被依次调用,因此不必担心全局变量的线程安全问题。
回调函数和定时任务的运行时间应尽量短,尽量不要再这些函数中进行阻塞式的操作,否则会阻塞整个程序的运行。一般来说,每个函数的运行时间在 5 秒以内是可以接受的。
绝对不要 在回调函数、定时任务或 qqbot 主线程的内部调用 os.system 执行 本 QQ 号对应的 qq 命令 ( 如 os.system('qq send buddy jack hello') )或请求 本 QQ 号对应的 HTTP-API 接口 ,否则整个程序会形成死锁(因为 os.system 要等 qq 命令执行完成后才返回、而 qq 命令要等 os.system 返回后才会被执行)。请直接使用 bot 的 SendTo/List/GroupXXX 等接口。
二维码管理器、QQBot 配置、命令行参数以及工作目录
二维码的显示模式
WebQQ 登录时需要用手机 QQ 扫描二维码图片,在 QQBot 中,二维码图片可以通过以下四种模式显示:
GUI模式: 在 GUI 界面中自动弹出二维码图片
邮箱模式: 将二维码图片发送到指定的邮箱
服务器模式: 在一个 HTTP 服务器中显示二维码图片
文本模式: 在 Term 中以文本形式展示二维码(需要自行安装 pillow 和 wcwidth 库)
GUI 模式是默认的模式,只适用于个人电脑。邮箱模式可以适用于个人电脑和远程服务器。服务器模式一般只在有公网 ip 的系统中使用。如果使用 QQ 邮箱来接收二维码,则发送二维码图片之后,手机 QQ 客户端会立即收到通知,在手机 QQ 客户端上打开邮件,再长按二维码就可以扫描了。文本模式方便在开发过程或者服务器部署时使用,为开发者提供快捷方式登陆 QQ 。
注意:当开启了 邮箱模式/服务器模式/文本模式 时, GUI 模式是关闭的,登陆时不会自动弹出二维码图片。
每次登录时会创建一个二维码管理器 ( QrcodeManager 对象) ,二维码管理器会根据配置文件及命令行参数来选择二维码图片的显示方式。
配置文件的使用方法
配置文件为 ~/.qqbot-tmp/v2.x.conf ,第一次运行 QQBot 后就会自动创建这个配置文件,其中内容如下:
{
# QQBot 的配置文件
# 使用 qqbot -u somebody 启动程序时,依次加载:
# 根配置 -> 默认配置 -> 用户 somebody 的配置 -> 命令行参数配置
# 使用 qqbot 启动程序时,依次加载:
# 根配置 -> 默认配置 -> 命令行参数配置
# 用户 somebody 的配置
"somebody" : {
# QQBot-term (HTTP-API) 服务器端口号(该服务器 IP 为 127.0.0.1 )
# 设置为 0 则不会开启本服务器(此时 qq 命令和 HTTP-API 接口都无法使用)。
"termServerPort" : 8188,
# 二维码 http 服务器 ip,请设置为公网 ip 或空字符串
"httpServerIP" : "",
# 二维码 http 服务器端口号
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-65875-8.html
官网买啊