Q群江湖之续命——写一个你自己的QQ机器人

上个周末给个妹子发了信息说算了吧,然后不知道是不是被鬼上身了整个礼拜都浑浑噩噩,魂不守舍什么都不想干,游戏机都不想玩了。我琢磨着这样下去不就废了,得找点能够吸引自己的事情做。闲得无聊突然想起之前在知乎上看到一篇回答说有一个Q群写了个R点机器人。巧了,之前找不到那个机器人的包现在一搜就搜到了。
pip install qqbot
我们开始吧

jianghu.jpg

首先我新建了个sample.py 然后只是简单的写了个逻辑,R点!当点数大于6的时候可以禁言一分钟你指名的那个人,否则反噬,自己被禁言五分钟。


微信图片_20170913195902.png
微信图片_20170913195945.png

然后觉得太简单不够好玩,然后我琢磨着加点功能。
1.1版本应运而生!!
新增加了随机指名,以命为赌本的功能,并细化了R点功能。当赌注大于5分钟时,R点要大于等于8点才能禁对方,否则反噬。赌注小于5分钟时,R点要大于等于6点才能禁对方,否则反噬。

微信图片_20170913200739.png

玩了一上午,群里开始有意见了,说要屏蔽群了。我想了想不能影响大家学习呢,就把机器人关了。然后继续闭关!!
这次我要建立个人角色系统,有生命值,有击杀数,还有排行榜!
然后写到下班,终于写完了!

微信截图_20170913201241.png

正式上线!!

微信截图_20170913201414.png
微信截图_20170913201521.png

到现在为止,不想再更新了。。。。万一再更下去。。。可能要写一个狼人杀或者三国杀了。。。。代码分享出来给大家,需搭配qqbot使用,代码无法直接运行!!

# -*- coding: utf-8 -*-
import random
import re
from MCG import MGClient#这是我写一个模块,用来连接mongodb的


def onQQMessage(bot, contact, member, content):
    if content == '-hello':
        bot.SendTo(contact, '你好,我是QQ机器人')
    elif content == '-stop':
        bot.SendTo(contact, 'QQ机器人已关闭')
        bot.Stop()
    if '@ME' in content:
        db = MGClient().get_mongo_client()
        if not db.qqfight.find_one({'name':member.name}):
            db.qqfight.insert({'name':member.name,'life':0,'kill':0})
        player1 = db.qqfight.find_one({'name': member.name})
        player2 = db.qqfight.find_one({'name': content.split(' ')[-2]})
        bot.SendTo(contact, member.name + ',让我们来开始续命游戏吧,输入命令 -h 进入帮助菜单,新增续命,排行榜功能')
        gl = bot.List('group', 'Python自学技术交流')

        if '-续命' in content:
            if not db.qqfight.find_one({'name': content.split(' ')[-2]}):
                db.qqfight.insert({'name': content.split(' ')[-2], 'life': 0, 'kill': 0})
            num=random.randint(0, 9)
            time = int(content.split(' ')[-1])
            if time*60>10*60:
                bot.SendTo(contact, member.name + '玩这么大,想被踢出群?')
            elif time*60 >= 5*60:
                if num >=8:
                    db.qqfight.update({'name': member.name},{'$set':{'life':player1['life']+time}})
                    db.qqfight.update({'name': member.name}, {'$set': {'kill': player1['kill'] + 1}})
                    name = content.split(' ')[-2]
                    if name =='random':
                        name=re.findall(r'“(.*?)”',str(random.choice(bot.List(gl[0]))))[0]
                        if not db.qqfight.find_one({'name': name}):
                            db.qqfight.insert({'name': name, 'life': 0, 'kill': 0})
                    bot.SendTo(contact,member.name + ' 当前生命为{life},你R了个{num},大于等于8,将从{name}(生命为{life2}),吸收{time}分钟生命'.format(life=player1['life'], num=num, name=name, time=time, life2=player2['life']))
                    group = gl[0]
                    membs=bot.List(group, name)
                    if player2['life'] - time<0:
                        db.qqfight.update({'name': name}, {'$set': {'life': 0}})
                        bot.GroupShut(group, membs, time*60)
                        #bot.SendTo(contact,'已禁言{m}'.format(m=membs))
                    else:
                        db.qqfight.update({'name': name}, {'$set': {'life': player2['life'] -time}})
                if num <8:
                    name = content.split(' ')[-2]
                    group = gl[0]
                    if name == 'random':
                        name = re.findall(r'“(.*?)”', str(random.choice(bot.List(gl[0]))))[0]
                        if not db.qqfight.find_one({'name': name}):
                            db.qqfight.insert({'name': name, 'life': 0, 'kill': 0})
                    bot.SendTo(contact,member.name+ ' 当前生命为{life},你R了个{num},小于8,反噬!被{name}(生命为{life2})吸收了{time}分钟生命'.format(life=player1['life'],num=num,name=name,time=time,life2=player2['life']))
                    db.qqfight.update({'name': name}, {'$set': {'life': player2['life'] + time}})
                    if player1['life'] - time<0:
                        name = member.name
                        membs = bot.List(group, name)
                        bot.GroupShut(group, membs, time*60)
                        #bot.SendTo(contact, '已禁言{m}'.format(m=membs))
                        db.qqfight.update({'name': member.name}, {'$set': {'life': 0}})
                    elif player1['life'] - time>=0:
                        db.qqfight.update({'name': member.name}, {'$set': {'life': player1['life'] -time}})
            elif time*60 <5*60:
                if num >=6:
                    db.qqfight.update({'name': member.name}, {'$set': {'life': player1['life'] + time}})
                    db.qqfight.update({'name': member.name}, {'$set': {'kill': player1['kill'] + 1}})
                    name = content.split(' ')[-2]
                    group = gl[0]
                    if name =='random':
                        name=re.findall(r'“(.*?)”',str(random.choice(bot.List(gl[0]))))[0]
                        if not db.qqfight.find_one({'name': name}):
                            db.qqfight.insert({'name': name, 'life': 0, 'kill': 0})
                    bot.SendTo(contact, member.name + ' 当前生命为{life},你R了个{num},大于等于6,将从{name}(生命为{life2}),吸收{time}分钟生命'.format(life=player1['life'], num=num, name=name, time=time, life2=player2['life']))
                    if player2['life'] - time<0:
                        db.qqfight.update({'name': name}, {'$set': {'life': 0}})
                        membs=bot.List(group, name)
                        bot.GroupShut(group, membs, time*60)
                        #bot.SendTo(contact,'已禁言{m}'.format(m=membs))
                    else:
                        db.qqfight.update({'name': name}, {'$set': {'life': player2['life'] -time}})

                if num <6:
                    group = gl[0]
                    name = content.split(' ')[-2]
                    if name == 'random':
                        name = re.findall(r'“(.*?)”', str(random.choice(bot.List(gl[0]))))[0]
                        if not db.qqfight.find_one({'name': name}):
                            db.qqfight.insert({'name': name, 'life': 0, 'kill': 0})
                    bot.SendTo(contact,member.name+ ' 当前生命为{life},你R了个{num},小于6,反噬!被{name}(生命为{life2})吸收了{time}分钟生命'.format(life=player1['life'],num=num,name=name,time=time,life2=player2['life']))
                    db.qqfight.update({'name': name}, {'$set': {'life': player2['life'] + time}})
                    if player1['life'] - time<0:
                        name = member.name
                        membs = bot.List(group, name)
                        bot.GroupShut(group, membs, time*60)
                        #bot.SendTo(contact, '已禁言{m}'.format(m=membs))
                        db.qqfight.update({'name': member.name}, {'$set': {'life': 0}})
                    else:
                        db.qqfight.update({'name': member.name}, {'$set': {'life': player1['life'] -time}})
        elif '-h' in content:
            string=""" -续命  name  minutes    偷取对方的生命值,生命值为负时禁言,若选择随机对象,用random代替名字
                       -排行榜    查看谁是真正的长者!!
            """
            bot.SendTo(contact, member.name + string)
        elif '-排行榜' in content:
            bot.SendTo(contact, member.name +'少年,你听说过长者的故事么')
            data= db.qqfight.find({})
            item1=[]
            item2=[]
            for i in data:
                item1.append(i)
                item2.append(i['life'])
            item3=sorted(item2)
            for i in range(1,4):
                bot.SendTo(contact,'%s 此人寿命%d分钟,是最第%d长寿的长者'%(item1[item2.index(item3[-i])]['name'].encode('utf-8'),item1[item2.index(item3[-i])]['life'],i))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • 今天又换了个老师,要我们多提一些问题,和对光机所的疑问啥的,他帮我解答一下,对自己今后的打算和工作有一定的了解,还...
    张宝兴阅读 129评论 0 0
  • 对于具有美感的人和事儿,都是具有吸引力的
    chereeZz阅读 178评论 0 0
  • 有这样一位母亲有了孩子,简直判若两人,本来是一位高冷的职场女白领变成疯狂晒娃的女萌主,母亲为了全身心地照顾孩子,却...
    铿锵玫瑰521阅读 878评论 1 0
  • 是真的起风了,没有宫崎骏老爷子说的那般复杂。坐在路边,吹着风,看车来车往,看霓虹闪烁。不担心粮食和蔬菜,也不劈柴喂...
    正午阅读 314评论 0 1