我在python中使用以下示例代码创建了一个半功能的IRC bot:
import socket
import time
import random
import os
def stringToBytes(s):
blit = ""
for char in s:
blit += char
return bytes(blit, "UTF-8")
server = "irc.irchighway.net" # settings
channel = "#ebooks"
botnick = "NoobBot"
irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # defines the socket
irc.connect((server, 6667)) # connects to the server
irc.send(stringToBytes("USER " + botnick + " " + botnick + " " + botnick + " :This is a fun bot!\n")) # user authentication
irc.send(stringToBytes("NICK " + botnick + "\n")) # sets nick
irc.send(stringToBytes("PRIVMSG nickserv :iNOOPE\r\n")) # auth
time.sleep(4)
irc.send(stringToBytes("JOIN " + channel + "\n")) # join the channel
irc.send(stringToBytes("PRIVMSG #ebooks @search save the cat\r\n"))
while 1: # puts it in a loop
text = irc.recv(2040) # receive the text
text2 = str(text)[2:]
text3 = text2.split(":")
print(text3)
就像测试一样,它们的作用是在电子书频道中搜索“拯救猫”这本书。它有效,我在收到的文本日志中显示以下内容:
['','Search!Search @ ihw-4q5hcb.dyn.suddenlink.net NOTICE NoobBot','\ x031,9 \ x16 \ x02<> \ x02 \ x16您的搜索 “\ x0312,9save the cat \ x031,9”已被接受。 搜索... \ r \ n \ ''] ['','Search!Search @ ihw-4q5hcb.dyn.suddenlink.net NOTICE NoobBot','\ x031,9 \ x16 \ x02<> \ x02 \ x16您的搜索 “\ x0312,9save the cat \ x031,9”返回了55场比赛。发送结果 以\ x0312 SearchBot_results_for_保存cat.txt.zip \ x031,9。 搜索耗时0.33秒。\ r \ n \''] ['','Search!Search @ ihw-4q5hcb.dyn.suddenlink.net NOTICE NoobBot','DCC发送SearchBot_results_for_保存cat.txt.zip (173.80.26.71)\ r \ n','Search!Search @ ihw-4q5hcb.dyn.suddenlink.net PRIVMSG NoobBot',“\ x01DCC发送 SearchBot_results_for__save_the_cat.txt.zip 2907707975 3107 3966 \ X01 \ r \ N'“]
如果我在mIRC中运行这个,我可以点击链接下载文件,但是在本文的任何地方我都看不到实际文件的链接。我是IRC机器人的新手,所以一个例子会有所帮助。
我基本上只是想在python中创建自己的小客户端,以便我可以输入搜索,客户端会在发送时下载生成的搜索文本文件。
非常感谢任何帮助
答案 0 :(得分:0)
您需要能够处理CTCP才能使用DCC。这将要求您自己实现这两个协议,或者使用已经为您完成这项工作的现有库。
如果你选择前者,你会想要仔细阅读这些文件:
祝你好运。