45

基于Python来开发一个QQ机器人,原来这么简单!

 5 years ago
source link: http://developer.51cto.com/art/201806/575795.htm?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本篇教大家如何用Python来实现QQ机器人,如有不足欢迎在评论方指出!

ZjuQ7bi.jpg!web

简单介绍

maEJvej.jpg!web

安装方法

可在 Python个版本下使用,用 pip 安装:

pip install qqbot

InEJzqN.jpg!web

使用方法

一、启动 QQBot

NrA3a2n.jpg!web

NNfeQn3.jpg!web

二、操作 QQBot

QQBot 启动后,在另一个控制台窗口使用 qq 命令来操作 QQBot ,目前提供以下命令:

vUZB3iz.jpg!web

A7Jruiv.jpg!web

list 命令提供强大的联系人查询功能,例如:

jUVBNny.jpg!web

MFBJFjb.jpg!web

如:

qq list group 机器人测试

rYriAvE.jpg!web

例如:

EjIvq2n.jpg!web

yEjiEfr.jpg!web

实现我们自己的 QQ 机器人

要实现咱们自己的QQ 机器人超级简单,我们只要注册一个自己的消息响应函数。代码示范:

IZzqa2J.jpg!web

bmemaq.jpg!web

aUnaEvA.jpg!web

uUb67z2.jpg!web

iueAjee.jpg!web

假如按插件的形式加载 sample.py ,那么这个文件的内容可以简化成:

NRN3Yfu.jpg!web

BBrmuq7.jpg!web

QQBot 对象的接口

rEfm2iJ.jpg!web

(1) bot.List(tinfo, [cinfo]) --> [contact0, contact1, ..., ]/[]/None

UfmEjaU.jpg!web

示例:

Z7Jr2m2.jpg!web

List 接口的第一个参数 tinfo 也可以是一个 ctype 等于 'group'/'discuss' 的 QContact 对象,此时,返回的是该 群/讨论组 的成员列表,如以下第二句和第三句分别返回 群“456班” 的成员列表和该群中名片为 “jack” 的成员列表:

INNFz2r.jpg!web

注意第三句不允许是 bot.List(g, card='jack') 的格式。

List 接口的内部执行顺序:

7V7r6jn.jpg!web

List 接口返回值的含义:

qaEfqeU.jpg!web

2、 bot.SendTo(contact, content) --> '向 xx 发消息成功'/'错误:...'

m6rYNbr.jpg!web

(3) bot.GroupXXX(group, membs[, arg]) --> ['成功:...', '成功:...', '错误:...']

3IjuEv6.jpg!web

(1) bot.List(tinfo, [cinfo]) --> [contact0, contact1, ..., ]/[]/None

IBJ3qaB.jpg!web

示例:

3A7Frmb.jpg!web

2u2a2qe.jpg!web

2QRjAby.jpg!web

注意上面第三句不允许是 bot.List(g, card='jack') 的格式。

List 接口的内部执行顺序:

Z3AJJjZ.jpg!web

List 接口返回值的含义:

YRZbInf.jpg!web

(2) bot.SendTo(contact, content) --> '向 xx 发消息成功'/'错误:...'

Qr6fM32.jpg!web

(3) bot.GroupXXX(group, membs[, arg]) --> ['成功:...', '成功:...', '错误:...']

fmAJbmB.jpg!web

QjeUFbE.jpg!web

注册回调函数、被他人 @ 的通知、定制定时任务

注册回调函数

V3QrQfA.jpg!web

U7rUrqv.jpg!web

eMVf2eY.jpg!web

Vva6Rfr.jpg!web

yeiae2m.jpg!web

iyQNV3e.jpg!web

iuYbaae.jpg!web

67VBni2.jpg!web

Yr6fArB.jpg!web

定制定时任务

从 2.1.13 起, qqbot 中提供一个功能强大的函数装饰器 -- QQBotSched 来定制定时任务,示例代码:

EjIFFf6.jpg!web

fMzYRrV.jpg!web

36ZNZv6.jpg!web

RbueqyN.jpg!web

二维码管理器、QQBot 配置及命令行参数

二维码的显示模式

67Vvqyu.jpg!web

jEfaai7.jpg!web

配置文件的使用方法

ze2aqui.jpg!web

EjInYnV.jpg!web

邮箱模式的配置( mailAccount 和 mailAuthCode )

iaqqMzf.jpg!web

服务器模式的配置( httpServerIP 和 httpServerPort )

EZnyaym.jpg!web

自动登录的 QQ 号码( qq )

F7RnMfA.jpg!web

掉线后自动重启( restartOnOffline )

AfemQ3N.jpg!web

联系人列表更新的间歇时间( fetchInterval )

raU7viy.jpg!web

联系人列表获取完成后再启动( startAfterFetch )

Rr6Zv23.jpg!web

QQBot-term 服务器端口号( termServerPort )

2yInu2R.jpg!web

如:

732yQvn.jpg!web

Qjm6Bza.jpg!web

文本模式显示二维码(cmdQrcode)

IFNr2qj.jpg!web

调试模式( debug )

若 debug 项设置为 True ,则运行过程中会打印调试信息。

需要被监视的联系人列表( monitorTables )

iuIva2n.jpg!web

插件的配置( pluginPath 和 plugins )

6jaeQ3m.jpg!web

命令行参数及配置的优先级

yeqYFjI.jpg!web

3AjuI3A.jpg!web

其中:根配置 是固定的,用户无法修改; 默认配置 和 用户配置 可由用户在 v2.1.conf 文件中进行修改;最后,还可以在 命令行参数 中输入配置。

smartqq 协议支持及限制

INF7BvJ.jpg!web

nuyy6jm.jpg!web

因 smartqq 协议的限制,以下问题无解决办法

ieQJRnE.jpg!web

参考资料

qINJFre.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK