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))

推荐阅读更多精彩内容