任务
制作一个简单的IRC机器人,它执行简单的任务,例如问候用户。
详情
(您可能会看到此RFC文档。)
编写一个完整的程序来执行以下操作:
程序输入
nickname
和realname
来自用户。- 应该允许所有
nickname
和realname
哪种形式[A-Za-z0-9]+
,但是是否允许其他形式并不重要。例如,如果用户想要1234qwerty
的nickname
和5319009
作为realname
,程序应使用这些名称,但该程序是否可以使用它并不重要^^☆Rick Astley☆^^
(包括非字母和小数)为(nickname
或realname
)或没有,甚至认为这个名字可能会被拒绝由服务器。
- 应该允许所有
程序
serverAddress
从用户输入。- 形式
serverAddress
为serverIP:serverPort
,其中serverIP
是服务器的IP地址,是服务器serverPort
的端口号。
- 形式
该程序连接到
serverPort
IRC服务器上的端口serverIP
,并且应该通过发送和将其昵称设置为nickname
和实名。realname
USER realname 0 * :realname
NICK nickname
该程序输入一个
channelName
不包含的单#
,并加入频道#channelName
。像这样
Hello, world!
向#channelName
频道发送私人消息:PRIVMSG #channelName :Hello, world!
然后,程序执行以下操作:
答:如果有人加入,说他问候
Hello, @!
到#channelName
,其中@是他的绰号/她。B.如果程序被踢,请尝试重新加入。
C.如果有人被踢或被禁止,请说
POW HAHA
。D.如果某人离开(
PART
或QUIT
),请说Goodbye, @!
,其中@是他/她的昵称。E.如果有人说了一些文字,包括
Turing test
或turing test
说I'm a human!
。F.如果有人说包括的某些文本
6*9
,请通过发送QUIT :42
到服务器退出。G.如果有人说一些文本
all your base are belong to us
(不区分大小写),请发送QUIT :What you say!
到服务器退出。H.如果某人说某些文本前面没有空格并且没有执行上述动作,请说出该文本中所有字符(第一个空格除外)的字符码总和。
如果发生错误
如果发生错误(例如连接错误或invalid nickname
),则可以执行您想做的事情。例如,如果nickname
已经使用,则程序可能会停止运行,nickname
从用户处获取新的信息或自动更改nickname
并重试。
限制
该程序
- 不应使用任何用于IRC客户端/机器人制作的内部函数或库。即类似IRC客户端库
- 应该在输入之前提示输入什么。例如,输入之前
serverAddress
,应该提示Write the address of server:
,serverIP:serverPort >
,serverAddress >
,或一些文字,用户可以识别。 - 应该可以在使用UTF-8的多个IRC服务器上工作。(即不适用于单个服务器)
- 的邮件发送到服务器的信息不应该是
NOTICE
。(RFC 2812,3.3.2注意:NOTICE
和之间的区别PRIVMSG
是,绝对不得发送自动回复以响应NOTICE
消息。) - 应该在请求来自(
#channelName
或nickname
)的地方发送消息。 - 当然应该
PONG
在PING
编辑时。
聚苯乙烯
好吧,我刚刚做了这个,因为关于IRC bot毫无疑问。
编辑
阅读@dmckee的评论后,我更改了选择获胜者的规则。
默认值
bonus
= +0如果程序以某种方式可以连接到某个频道(即使不是
#channelName
),则bonus
= 1如果程序可以执行步骤1〜5,则
bonus
* = 2。对于步骤6中的每个任务A〜H,如果程序实现,则
bonus
* =1.2
。对于每六个限制,如果程序遵循该限制,则
bonus
* =1.05
。
和score = int(codelength/bonus)
。
得分最低的程序为获胜者。如果两个答案的分数相同,则以最高票数的答案为准。
编辑编辑:我觉得1.2
和1.05
在步骤4和5,应调整稍大..你觉得这个怎么样?
获胜者已经确定,但是,我认为参赛作品太少了。
任何人仍然可以提交代码。