它就是一个QQ帐号(现在是793049104),当它加入某一个群并处于工作状态时,它会监听群里的聊天信息,当它收到特定的信息(就是指令)时,会通过聊天窗口发送指令对应的信息,比如一个打乱公式等等。(最新版加入了私聊的功能,魔友对着机器人发送消息也会被认为是有效指令) 下面会给出指令与功能的对应表,意思就是,你在群里发一条特定的字符串,或者对机器人发送同样的字符串,机器人就会给出相应的反应。 注意所有指令是以一个英文的句号开始,这样比较不容易和正常的聊天内容冲突。二、当前机器人有哪些功能
打乱功能:以下所有打乱完全遵循WCA打乱要求,除三阶打乱以外的所有WCA项目的打乱均根据WCA官方软件改编成。三、如何在我的群中添加打乱机器人N阶魔方的打乱(N从2到7)。训练功能:下面两个打乱不是官方的项目,只是方便魔友平时训练而使用的。指令:“.n”。比如2阶打乱就是“.2”,三阶打乱就是".3",依次类推。金字塔打乱(最短步数版本)。指令:“.py”SQ1打乱(根据WCA要求,随机步数)指令:“.sq”五魔方打乱(WCA形式)指令:“.mx”三阶顶层打乱。给出的是一条三阶打乱公式,保证打乱完成以后魔方的前两层已经完成,方便魔友对顶层作针对性的训练或练习。信息检索功能指令:“.ll”ZBLL打乱。与三阶顶层打乱类似,但保证打乱完成以后顶层十字已经完成(略懂zbf2l或vhf2l的魔友应该知道使用这两个方法f2l后顶层十字已经完成)。指令:“.zb”WCA信息检索功能。根据给定的姓名部分或者WCAid,在WCA的数据库中查找该人。如果找到多个,则返回WCAID最靠前的5位,如果只找到一个,返回这个人出了多盲以外所有项目的成绩(包括平均和单次,但暂时不显示排名)指令:“.wca XXX”,XXX为人名或WCAID
方法一:四、机器人什么时候工作、工作原理发送群号到:qq280833822@163.com,我会定期查收邮件(其实一般每天都会查收好几次),看到的话我会主动去加群方法二:趁我在的时候,在别的群找我,或者直接加我为好友(现在是不需要验证全通过),然后告诉我群号。。。方法三:如果某天你运气特别好,看到我处于“请勿打扰”的状态,那么恭喜你,你可以选择直接在群中邀请我就行了。如果我处于在线、离开或者除了“请勿打扰”之外的状态,邀请我入群的请求我是收不到的。
事实上,只有当机器人处于“在线”的时候,它才是正常工作的,如果大家看到机器人的状态是“离线”,“请勿打扰”等状态,说明机器人并不在工作,为什么下面解释机器人工作原理
当大家在聊天的时候,我这里(我的电脑,就是我现在用的笔记本电脑,发帖子的这台电脑,操作系统 == ubuntu 11.04 != windows)开着一个后台程序,它会自动监听聊天内容,并根据聊天内容提取指令,然后作出相应的响应。所以如果我的电脑关着,那机器人自然是不会工作的。五、机器人打乱开发接口
打乱机器人的响应部分本身使用python语言写的,在底层通过调用一个个独立的打乱模块(.py文件)等实现提供相应的功能。 由于我个人能力有限,另外对各种魔方打乱公式的描述也不是很明白,所以这里开放这一接口,使得魔友们可以一起来完善机器人的功能。 底层的模块分为两类,打乱类(如三阶魔方打乱),和功能类(如WCA信息检索),它们的区别在于,打乱类仅接受命令作为函数调用,功能类除了命令以外还接受一个可选的参数。 两类模块均需要实现这个函数: def commands() 该函数返回一个元组,包含所有该模块需要监听的字符串。 由于考虑到某一些模块可能会对多种字符串作出响应(例如高阶打乱需要同时监听4567阶的命令),所以设计的时候要求返回的是元组,而非字符串。 例如当模块返回('4', '5', '6', '7')时,如果聊天内容为'.4', '.5', '.6', '.7',则机器人会调用该模块。 除此之外,打乱类需要实现: def get(cmds) 功能类需要实现: def get(cmds, args) 其中,cmds为该模块监听的元组之一,args为功能模块的输入参数。该函数返回相应的打乱或功能。 更精确的,cmds和args分别为下述python正则表达式的group(1)和group(2)如果有热心魔友参照上文写了其他魔方的打乱模块,或者有写的意向的,欢迎通过站内信,电子邮件(qq280833822@163.com)的方式直接与我联系。 更新中,不占楼。 ====================答疑==================== TO 7# 我并没有修改QQ,也不可能修改QQ,我能做的只是发送信息。确实有的时候一个人玩的话在群里会有类似“刷屏”的作用,所以希望魔友们在自己练习时,通过对机器人私聊的方式给出指令即可。 至于临时窗口,我现在收不到临时聊天信息,估计没办法了。 TO 10# 是三阶的打乱编号,最初设计的时候为了方便之后交流。。。所以一直都保留着这个东西。。。 [ 本帖最后由 铯_猪哥恐鸣 于 2011-6-11 18:43 编辑 ]打乱类功能举例 scramblell.py复制代码
- r"^\.(.+?)(?: (.+?))??[\s]*$"
复制代码
- #!/usr/bin/env python
- # coding=utf-8
- import re, random;
- print "Load 3x3x3 Last Layer Scrambles"
- sfile = open ('ll-scramble.txt', 'r');
- slist = [];
- while 1 :
- msg = sfile.readline();
- if msg != "":
- slist.append(re.subn("[\s]*$", "", msg)[0]);
- else:
- break
- sfile.close();
- print len(slist), "Load";
- def get(cmds):
- index = random.randint(0, len(slist)-1);
- return "{333LL} %s"%(slist[index]);
- def commands():
- return ('ll',);
欢迎光临 魔方吧·中文魔方俱乐部 (http://bbs.mf8-china.com/) | Powered by Discuz! X2 |