python QQ聊天机器人,qqbot 使用简介

一、介绍

qqbot 是一个用 python 实现的、基于腾讯 SmartQQ 协议的 QQ 机器人框架,可运行在 Linux 、 Windows 和 Mac OSX 平台下。

你可以通过扩展 qqbot 来实现:

  • 监控、收集 QQ 消息
  • 自动消息推送
  • 聊天机器人
  • 通过 QQ 远程控制你的设备

二、安装方法

在 Python 2.7/3.4+ 下使用,用 pip 安装:

pip install qqbot

三、 实例

在此例子中,通过判断对方发过来的文字内容进行特定内容回复,同时,为了丰富回复内容,我将QQ自带的大量表情也添加到了规则库当中,这样对方即使给你发送一些聊天表情,比如笑脸,哭脸,等各种表情,这边都会有所监听,都可做相应回复,因为这个例子就是最简单的测试demo,所以会监听所有聊天消息,可能会给群里发大量消息,所以,慎用。

四、消息监听回复端

#!/usr/bin/env python  
# encoding: utf-8  
""" 
@version: v1.0 
@author: W_H_J 
@license: Apache Licence  
@contact: [email protected] 
@site:  
@software: PyCharm 
@file: qqRoboot.py 
@time: 2018/7/23 14:55 
@describe: qq机器人
"""
import random

import re
from qqbot import QQBotSlot as qqbotslot, RunBot

from dictList import dictList


@qqbotslot
def onQQMessage(bot, contact, member, content):
    res_url = '[^.*?[]]'
    link = re.findall(res_url, str(content), re.I | re.S | re.M)
    res_url2 = '/Emoji.*?'
    link2 = re.findall(res_url2, str(content), re.I | re.S | re.M)
    print('*****',link)
    if 'hello' in str(content):
        bot.SendTo(contact, str(random.choice(dictList["niHao"])))
    elif '在' in str(content):
        bot.SendTo(contact, str(random.choice(dictList["zai"])))
    elif '你好' in str(content):
        bot.SendTo(contact, str(random.choice(dictList["niHao"])))
    elif '啊' in str(content):
        bot.SendTo(contact,  str(random.choice(dictList["a"])))
    elif '嗯' in str(content):
        bot.SendTo(contact,  str(random.choice(dictList["en"])))
    elif '哦' in str(content):
        bot.SendTo(contact, str(random.choice(dictList["everyThing"])))
    elif '没事' in str(content):
        bot.SendTo(contact,  str(random.choice(dictList["everyThing"])))
    elif '/表情' in str(content):
        bot.SendTo(contact,  str(random.choice(dictList["everyThing"])))
    elif '/白眼' in str(content):
        bot.SendTo(contact,  str(random.choice(dictList["baiYan"])))
    elif '什么' in str(content):
        bot.SendTo(contact,  str(random.choice(dictList["shenMe"])))
    elif '确' in str(content):
        bot.SendTo(contact,  str(random.choice(dictList["everyThing"])))
    elif '拜拜' in str(content):
        bot.SendTo(contact, '你确定要和我说再见了吗?')
    elif len(link):
        bot.SendTo(contact, str(random.choice(dictList["everyThing"])))
    elif '/偷笑' in str(content):
        bot.SendTo(contact, str(random.choice(dictList["everyThing"])))
    elif '..' in str(content):
        bot.SendTo(contact, str(random.choice(dictList["everyThing"])))
    elif '。。。' in str(content):
        bot.SendTo(contact, str(random.choice(dictList["everyThing"])))
    elif len(link2):
        bot.SendTo(contact, str(random.choice(dictList["everyThing"])))
    elif '哈' in str(content):
        bot.SendTo(contact, str(random.choice(dictList["everyThing"])))
    #特殊标记字符,停止监听
    elif '++' in content:
        bot.SendTo(contact, '晚安,好梦')
        bot.Stop()


if __name__ == '__main__':
    RunBot()

五、 消息自动回复语料库,数据来源《网易情话墙》

#!/usr/bin/env python  
# encoding: utf-8  
""" 
@version: v1.0 
@author: W_H_J 
@license: Apache Licence  
@contact: [email protected] 
@site:  
@software: PyCharm 
@file: dictList.py
@time: 2018/7/25 16:54 
@describe: 语料库
"""
dictList = {
    "niHao": ['在想你呀!', '在静静的等你发消息!', '在呀,亲,有什么吩咐?', '在的,殿下,很高兴为您服务!', '您所呼叫的用户尚在厕所中,稍后请拿厕纸给他!', '你终于来啦,我找你N年了,去火星干什么了?我现在去冥王星,回头跟你说个事,别走开啊。' , '你好、我去杀几个人,很快回来。', '想跟我聊天?我会的不多,就这一句了!', '你好,我是主人的美女秘书,有什么事就跟我说吧,等他回来我会转告他的。', '嗨——我现在不在,如果有事请在听到“嘟”的一声后留言……嘟!--请留言:嘟', '对不起!我已经死了!不过谢谢你来看我!今天晚上12点我也去看你!'],
    "zai": ['从此寻花问柳,闭口不谈一生厮守。 从此红灯绿酒,再也不想牵谁的手。 从此人海漂流,闭口不谈爱到白头。 从此单打独斗,再也不会彻夜泪流。 从此放下离愁,生生世世酒敬自由。', '我想,你我之间的关系比陌生人多一点儿,比好朋友少一点儿,比擦肩而过复杂点儿,比萍水相逢简单点儿。', '八戒啊,为师正与嫦娥仙子奔月中,待会儿去高老庄找你……', '对不起,由于服务器的原因,您刚才发的信息丢失,请重发一次。', '对不起,你所联系的用户因为太过帅气,已被腾讯公司删除。详情请咨询110,谢谢,再见。', '我去吃饭了,如果你是帅哥,请一会联系我,如果你是美女……就算你是美女,我也要先吃饱肚子啊!', '洗澡中,请勿打扰,偷窥请购票,个体四十,团体八折,订票电话:一般人我不告诉他!', '人有三急,若半分钟以后回复,说明我在嘘嘘,一分钟以内回复,说明我在便便,一小时之外未回复,请帮我打120。', '你终于来啦,我找你N年了,去火星干什么了?我现在去冥王星,回头跟你说个事,别走开啊。'],
    "a": ['“我想给你讲一个很长的故事。”,“讲。”,“我喜欢你。”','破例说个秘密。其实我不用看到你的脸才能喜欢你,也不用听到你的声音,不用知道你有什么消息。我所知道的是,在生活中不多见的闪光的时刻我会想到你,烟花升起来,雪落下去,人们围上来拥抱我,这样的时刻。我猜你和世界上所有的美好连在一起。所以我想尽量去看一些好的东西,这就是我喜欢你的方式。', '你在屏幕里 我却抱不到你。', '哪里有什么突然好想你,你一直都在我心里。', '我昨晚做了一个梦我穿越回到了一个陌生的学校上学,我到了班级门口,然后我回头一看,看见了你也在,你梳着那时的马尾,没有戴眼镜。可是那时你已经不认识我了,我上去问一句,你以前是涟中的吧。你说不是。我说你记得我吗?你说不认识我。我笑了一下,摸摸你的头,你也笑了一下,和我刚认识的你一样。', '你是我的单曲循环 而我却是你的随机播放。', '我只有一点点喜欢你了,我很乖了。我没有闹了,我也没有和别人提到你了。我想了一千遍一万遍,我们在一起的样子。又觉得,这辈子都不要和你在一起了。我喜欢你,死不悔改,认真又怂。', '春风十里 五十里 一百里 体测八百米 海底两万里 德芙巧克力 香草味八喜 可可布朗尼 榴莲菠萝蜜 芝士玉米粒 鸡汁土豆泥 黑椒牛里脊 黄焖辣子鸡 红烧排骨酱醋鱼 不如你 全都不如你'],
    "shenMe": ['扔过那么多的东西, 离开过那么多的人, 身边的人来来往往, 忘记过那么多熟悉的脸, 熬过无数个深夜和黎明, 义无反顾撞过那么多南墙, 皆是黄粱一梦的空欢喜一场, 到头来却忘记自己是个极其念旧的人。', '但愿你已经睡着 一觉醒来的时候是飒爽的早晨 而不是四下无人的夜,愿你能早日拥有强大的内心,好抵御未来那些未知的风雨,愿你成为自己的太阳,无需凭借谁的光.但愿你今后都好 独闯的日子里不得孤单坚持走完这一场.','我主动来找你 是因为我太喜欢你 我已经不主动找你 因为你每一句回复都敷衍得那么不走心 不是不喜欢你了 只是不敢再那样喜欢了', '你看过《月亮与六便士》吗?里面有一句台词是:“我用尽全力,过着平凡的一生。”我当时觉得那是一句悲伤的台词。但只需要加上一个限定词,就可以让它堂而皇之的满足我关于美好人生的所有幻想的,那就是——“和你。', '以前,给你的备注是十二,朋友十二画恋人十二画,爱人十二画,家人十二画。所以,十二的名字,叫做难忘。 后来,给你的备注是十一,爱人差一点,家人差一点,恋人差一点,朋友差一点,所以十一是遗憾,十二是爱你!', '“当初不加你好友, 就不会有后来那么多事” ', '找一个成熟的男生 谈一场成熟的恋爱吧 短信要发给能马上回复你的人 电话要打给不犹豫马上接起的人 说话要说给会给你反应的人 微笑留给亲朋爱人 不需要热脸贴冷屁股委屈自己 别为他找借口 忙算什么 你永远不知道等的滋味 在恋爱里打动...', '走不通的路就回头 爱而不得的人就放手 得不到回应的热情就适可而止 别把一厢情愿当成满腔孤勇 也别把厌倦当成欲擒故纵'],
    "en": ['这个世界上,从来就没有最好的,只有最合适的。比如云朵和天空,微风和草地,比如我眼中的你,以及,你眼中的我', '生活画风浓烈,恰逢诗意如你', '如果你再聪明一点,就会知道我同你的彻夜长聊和插科打诨,都是拐着弯的在说爱你。别看那江水九曲回肠,说到底,它们还不是奔向同一片汪洋。 不过糊涂些也好,毕竟很多心事晦涩隐秘,那些胆怯和斤斤计较,我也怕你知道。', '当你在深夜醒来,发现自己因想念某人而胸口发疼,你,把它叫做什么?', '暑假过后到了新学校,我就再也见不到你了,终于可以心无旁骛的收起喜欢,收起面对你的时候那种卑微,如果三年前没有遇见你,一年前不会那样喜欢你,就不会老想那么多以后以后。我想要收心了,再也不会喜欢你了,你高高在上的样子让我...', '“下辈子我想倒着活一回 ,第一步就是死亡 ,然后把它抛在脑后 .在敬老院睁开眼 ,一天比一天感觉好 ,直到太健康被踢出去 .开始领养老金 ,然后开始工作 .40年后 ,够年轻了 ,和那个熟悉的人 ,从分手开始 ,越来越恩爱 ,直到第一次见面 ,相视一笑然后各自转头 .”', '嘿 你好哇 今天开始你的每一个笑都是因为开心吧 每一次眼眶微红都是因为起风了吧 你偷偷流下的每一滴泪都会变成珍珠哦 在西伯利亚旷野的风吹起之前 蒙特利尔的枫叶一点点被染红 北冰洋的白鲸正跃出海面 那座会发光会唱歌的瓷塔依然伫立在安徒生的童话里这些,你要记得去看哦', '我好想咻地一下飞到你怀里 可是那样太丑了 我还是慢慢走到你面前 让你仔细看看我 我再扑到你怀里 我好想你'],
    "baiYan": ['“最甜的事情就是,他醒来后第一个找的人是我,睡觉前最后一个说话的人还是我,他的世界全都是我我我我我。”', "你尽然给我白眼!", '那天,路过煎饼果子摊,大叔照常笑着给我打招呼“两套煎饼果子?都不放辣?” 我笑了笑,“不,一套,放辣。” 我吃了一口,真的好辣。 我都辣出泪了', '那个八面玲珑 情商高 朋友多 阳光开朗 表现得什么都无所谓的人真的不是我 那个在夜里焦虑的爆炸的人是我 那个因为一句话难过的不知所谓的人是我 那个自己嫌弃的人是我 其实我没那么强 只是不再习惯用脸表达 永远笑着是我对这个世界的讽刺'],
    "everyThing":[ "十年前第一次和你说晚安,我激动的失眠了一整夜,十年后的今晚和你说晚安,不再失眠,但你的头压得我胳膊好酸。","我从未拥有过你一秒钟,心里却失去过你千万次。", "我在最没有能力的年纪,碰见了最想照顾一生的人。", "你若安好  ,我备胎到老。", "不在一起就不在一起吧,反正一辈子也没多长。", "18岁的时候可以为了一个牵手激动地整夜睡不早觉,20岁的时候会为了一个谎言流泪到深夜,而现在所有事情都显得那么无关紧要。", "我希望她三十岁没嫁,我也不希望她三十岁没嫁。", "一房两人,三餐四季。", "当你老了,我也老了,平行而进,平行而尽。", "若是相互羁绊  ,不如各奔天涯。", "你别皱眉,我走就好。", "有个姑娘说,你听的歌都太矫情,我说,你一定是爱情里被爱的那一个。","等一个不爱自己的人,就像在机场等一艘船。", "灯泡灭了,我仔细检查了下,钨丝并没有断。我重新按下开关,  灯泡闪了两下又灭了。我问,你怎么了,不开心么,灯泡回答,等会儿,有个蛾子在窗外看我好久了。我说,那不挺好,有人看得上你。灯泡说,我不是火,别让她看错了,误了人一辈子。", "友情以上,恋人未满,不甘朋友,不敢恋人。", "校服是我和她唯一穿过的情侣装,毕业照是我和她唯一的合影。", "今天鼓起勇气给他发了消息,我说了一长串话,他回了个嗯。","真羡慕他,这么快就放下,哪像我这么傻。", "她的手只有我的手四分之三那么大,可我还是没能抓住。", "手机上存满了分手的歌,好像我谈过恋爱似的。", "你那么擅长安慰他人,一定度过了很多自己安慰自己的日子吧。", "确实,喜欢上一个人,第一感觉是自卑。", "高三语文老师在我一篇关于爱情的读后感上写下“爱过  ,就是一生一世”,后来我知道,错过,才是一生一世。", "你那么善解人意,想必没有人爱你。", "一个人久了,煮个饺子看见两个粘在一起的也要给它分开。", "请在对不起中加两个字使其更加悲伤—“对三,要不起”。", "好喜欢你啊可以和我在一起吗不可以的话那我过会再来问吧  。",  "我不喜欢这世界,我只喜欢你。", "我想做一个能在你的葬礼上描述你一生的人。", "喜欢这种东西,捂住嘴巴,也会从眼睛里跑出来。", "谢谢你陪我校服到礼服。", "“你还记得她吗?”“早忘了,哈哈”“我还没说是谁”。", "周杰伦把爱情比喻成龙卷风,我觉得特别贴切,因为很多人像我,一辈子都没见过龙卷风。", "如果有一天,我有机会碰上喜欢的男孩子,愿意一起过一生的男孩子,就用这首作婚礼背景曲吧。","关于爱情,关于婚礼,我什么都想好了,你要快点出现才好。", "我听过一万首歌,看过一千部电影,读过一百本书,却从未俘获一个人的心。", "你那么孤独,却说一个人真好。", "多少人以朋友的名义默默地爱着。", "究竟有多喜欢才会温柔成这个样子。", "祝你们幸福是假的,祝你幸福是真的。", "我喜欢我望向别处时你落在我身上的目光。",  "好怀念做早操时总是会偷看自己喜欢的人。", "不爱了  连回忆 都是负荷。","我说,我要用一生学这首歌,然后唱给她听,问她愿意陪我吗?她说,她会陪我一起学 。","耳机里面是喜欢但还不会唱的歌  手机屏幕上的照片是喜欢但还没在一起的人。", "记得当年他没说出的告白,却成了那个年纪青涩的最美。", "“你知道深爱一个人是什么感觉吗”“就像房间里黑了你不是先去找灯,而是先去找他。", "有时候听歌被感动不是因为旋律有多棒,歌词有多好,而是因为想起了以前听这首歌时你做的事,你和谁听了这首歌。", "体育课上带你去小卖店买糖吃,你高兴的马尾蹦哒了一路。", "如果有一天你表白成功了  绝不是因为你感动了我 而是我笃定我可以爱你更多。", "余生好长,你好难忘。", "任他们多漂亮,未及你矜贵。", "初恋的味道,一人一只耳机,倚在树下,两手慢慢靠近…… 。",  "多数人25岁就死了,但直到75岁才埋。", "今天去看了大圣归来。我旁边有个小孩儿问他妈妈 “这个不是动画片么?为什么有这么多大人来看?” 他妈妈回答:  “因为他们一直在等大圣归来啊,等啊等啊,就长大了。",  "要么荣归故里,要么客死他乡。", "小时候想要快快长大,真正长大以后才会懂得还是小时候最开心,可惜一旦错过了就永远都回不去了。", "你说少年明媚如昨,怎知年少时光如梦。", "一人北漂快两年,成为了我最不想成为的人模狗样,想想租过的地下室,洗了双袜子,4天没干,而我无奈的笑了笑之后给穿上了。", "曾听一个长者对我说,你看男人在外辛苦打拼,其实回家所求无多,只不过想下班回家有口热饭吃,有口热汤喝,有人在家等你,你累时有句宽慰的话。","所谓的高官厚禄、锦衣玉食、宝马貂裘都比不上这个。","我深以为然。,你那么孤独,却说一个人真好。", "光阴似箭催人老,日月如移越少年。", "茕茕白兔,东走西顾,衣不如新,人不如故。", "年龄越来越大,朋友越来越多,兄弟越来越少。", "从小我就有一个梦想:戴着墨镜,开着兰博基尼,衣锦还乡。经过三十年的努力,我,终于实现了梦想的一半:拥有了墨镜。", "人生的出场顺序太重要了。", "年轻时我想变成任何人,除了我自己。", "理想就是离乡。", "世界如此广阔,人类却走进了悲伤的墙角。", "当你觉得孤独无助时,想一想还有十几亿的细胞只为你一个人而活。", "哭着吃过饭的人,是能够走下去的。", "十年前你说生如夏花般绚烂,十年后你说平凡才是唯一的答案。", "最怕一生碌碌无为,还说平凡难能可贵。", "别人刚一注意你,你就敞开心扉,你觉得这是坦率,其实这是孤独。","小时候刮奖刮出“谢”字还不扔,非要把“谢谢惠顾”都刮的干干净净才舍得放手,和后来太多的事一模一样。", "现在纯种的杀马特越来越少了,一定要顽强的活下去啊!不要让白发人送赤橙黄绿青蓝紫发人啊。", "哭着吃过饭的人,是能够走下去的。", "每个人的裂痕,最后都会变成故事的花纹。", "喜欢一个人孤独的时刻  但不能喜欢太多。", "有多少人戴着耳机听着自己情有独钟的音乐,孤独的在拥挤的公交车上日日夜夜在不是自己的城市里孤独的生活着。", "等我嗨死后把我的骨灰撒到海里,不是怕有人在坟头蹦迪,也不为大海更宽广,只是为了我死了也能浪起来。", "成功的速度一定要快过父母老去的速度。", "马上就要结束一年的单身生活,开始新一年的单身生活啦。",  "06年本科毕业,中午会餐,和人喝了一瓶白酒,而后稀里糊涂睡了过去,一觉醒来,发现室友已走了大半,床头的手机响个不停,接通之后好兄弟边哭边骂“老子都上火车了,老子再也看不到你了”霎时,泪如雨下,也许因为酒太多,鼻血也流个不停,平生第一次,感觉到心揪着痛,那种滋味一辈子也忘不了。", "毕业前的一个晚上,我们宿舍的6个人默默喝了20多瓶啤酒。,第二天起床,谁也没叫谁,谁先起来先静静离开,我闭着眼听着他们5个人全部走了,默默起床收拾卫生,打扫最后一次宿舍,下楼梯交钥匙给阿姨的时候流眼泪了。", "那时候没有手机没有网络,只能通过书信来往,才会有这样依依不舍,现在的人很难感受到那种离别后再无音讯的难舍了。", "最后的一节语文课,老师听写,听写的是全班人的名字。", "每当坐火车回家的时候我都会听这首曲子,看着窗外一闪而过却又绵绵不绝的田野,说不出的酸甜苦辣,讲不出的思乡之情。", "昨天上班时间,我装着西服站在二楼窗前看着路上来来往往的人们,觉得城市里天空太窄,忽然想回家种地,可是离我退休年龄还很遥远,我的影子说想杀死我,然后替代我好好生活。", "女儿出嫁时父亲对她说:“女儿,一定要尊重你的丈夫,你甚至可以崇拜他,但是要记住,你们之间矛盾和不高兴的事情不要跟我讲,因为你终会原谅他,而我不会”。", "小时候,暑假都要去农村外婆家,外婆揹着我踏过麦田坎儿去一口浅井打水洗衣服,井里好多小虾,20多年过去了,她80岁了,得了抑郁症和老年痴呆,再也背不动我了,还好,我能背得动她。", "1岁孩子把屎尿拉裤子里往往被原谅,而80岁老人则会被责备,1岁的孩子不愁没人喂养,80岁的老人却担心没人赡养,孩子怎样成长,老人就怎样退化,他们没有“痴呆”,只是回归孩子的状态,当他们忘记往事,忘记如何吃饭,忘记如何说话,请耐心对待,这就是生命的轮回。", "“妈,你为什么那么爱笑啊?”  “因为妈生了你啊” 。","爸爸妈妈问你智能手机怎么用的时候,请不要不耐烦,因为他们曾经不厌其烦的教你怎么用筷子。",  "我离天空最近的一次,是你把我高高地举过了你的肩头。", "我已经过了餐桌上有只鸡就一定能吃到鸡腿的年纪了。", "想对早起的室友说,丑八怪啊啊啊,能否别把灯打开。", "那年上初中,夏天是好漫长的,西瓜是吃不完的,作业是最后两天才赶的。", "小时候总是骗爸妈自己没钱了,现在骗他们自己还有钱。"]

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章