Python IRC 客户端

1 投票
2 回答
3877 浏览
提问于 2025-04-15 18:59
import socket
from time import strftime

time = strftime("%H:%M:%S")

irc = 'irc.tormented-box.net'
port = 6667
channel = '#test'
sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sck.connect((irc, port))
print sck.recv(4096)
sck.send('NICK supaBOT\r\n')
sck.send('USER supaBOT supaBOT supaBOT :supaBOT Script\r\n')
sck.send('JOIN ' + channel + '\r\n')
while True:
    data = sck.recv(4096)
    if data.find('PING') != -1:
       sck.send('PONG ' + data.split() [1] + '\r\n')
    elif data.find ( 'PRIVMSG' ) != -1:
       nick = data.split ( '!' ) [ 0 ].replace ( ':', '')
       if data.find('!op') != -1:
       sck.send('MODE #test +o ' + nick + '\r\n')

我在IRC上尝试给某个昵称加上管理员权限时,结果却把自己加上了管理员权限,而不是给其他用户加上。我不太确定“nick”这个变量需要怎么改……如果有人能帮帮我,我会很感激的,谢谢。

2 个回答

1

你可能会对Supybot项目感兴趣,它是一个用Python写的IRC机器人。创建自己的插件非常简单,很多额外的工作已经为你做好了,所以你只需要关注你想要的功能就可以了。

祝你好运!

Supybot在Sourceforge上的页面

3

你真的需要重新考虑一下你解析消息的方法。现在的情况是,我可以随便说一句“哈哈 !opwned PRIVMSG”就能获取管理员权限。(对其他人来说:PRIVMSG是IRC协议的一部分,通常用户不会直接说这个。)

不过,我在你现在的代码中没有看到错误,但你在发到StackOverflow的时候,代码的运行方式已经变了(看看最后一行的缩进是错的,这样根本无法运行)。你是不是不小心改了其他重要的东西?

给自己设置一个调试控制台,显示原始的IRC流量,这会非常有用。写入一个简单的文件也可以(确保你刷新文件,然后可以用“tail --follow”命令来查看文件内容,跟着你的机器人运行)。这样你还可以插入自己的调试信息,这样能帮助你解决类似的问题。(比如,你可以加入repr(nick)和repr(data)来看看发生了什么。)

撰写回答