- 最后登录
- 2023-8-16
- 在线时间
- 3007 小时
- 阅读权限
- 100
- 注册时间
- 2007-12-3
- 积分
- 3923
- 帖子
- 2556
- 精华
- 6
- UID
- 15558
- 性别
- 保密
- WCA ID
- 2008CHEN27
- 兴趣爱好
- 理论
  
- 积分
- 3923
- 帖子
- 2556
- 精华
- 6
- UID
- 15558
- 性别
- 保密
- WCA ID
- 2008CHEN27
- 兴趣爱好
- 理论
|
之前发的那个帖子似乎早就不见了。所以干脆重新发一个帖子,把所有功能都整理一下,顺便“答疑”吧。
一、什么是PK群打乱机器人
它就是一个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)
- r"^\.(.+?)(?: (.+?))??[\s]*$"
复制代码
打乱类功能举例
scramblell.py
- #!/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',);
复制代码
如果有热心魔友参照上文写了其他魔方的打乱模块,或者有写的意向的,欢迎通过站内信,电子邮件(qq280833822@163.com)的方式直接与我联系。
更新中,不占楼。
====================答疑====================
TO 7#
我并没有修改QQ,也不可能修改QQ,我能做的只是发送信息。确实有的时候一个人玩的话在群里会有类似“刷屏”的作用,所以希望魔友们在自己练习时,通过对机器人私聊的方式给出指令即可。
至于临时窗口,我现在收不到临时聊天信息,估计没办法了。
TO 10#
是三阶的打乱编号,最初设计的时候为了方便之后交流。。。所以一直都保留着这个东西。。。
[ 本帖最后由 铯_猪哥恐鸣 于 2011-6-11 18:43 编辑 ] |
-
总评分: 经验 + 70
查看全部评分
|