gpt4 book ai didi

python - 使用 Twisted Python IRC 框架列出 IRC channel 中的用户

转载 作者:太空狗 更新时间:2023-10-30 00:00:24 25 4
gpt4 key购买 nike

我正在尝试编写一个函数,使用 Twisted Python 将 IRC channel 中的昵称列表打印到该 channel 。我该怎么做呢?我已经阅读了 API 文档,并且在该站点上只看到一个与我的问题类似的问题,但它并没有真正回答我的问题。如果我知道如何获取用户列表(或者 Twisted 将其识别为什么),我可以简单地使用 for 循环迭代列表,但我不知道如何获取此列表。

最佳答案

您似乎认为的链接示例是相同的,使用WHO,不同的命令,不同的目的。正确的方法是使用 NAMES

扩展 IRCClient 以支持名称命令。

from twisted.words.protocols import irc
from twisted.internet import defer

class NamesIRCClient(irc.IRCClient):
def __init__(self, *args, **kwargs):
self._namescallback = {}

def names(self, channel):
channel = channel.lower()
d = defer.Deferred()
if channel not in self._namescallback:
self._namescallback[channel] = ([], [])

self._namescallback[channel][0].append(d)
self.sendLine("NAMES %s" % channel)
return d

def irc_RPL_NAMREPLY(self, prefix, params):
channel = params[2].lower()
nicklist = params[3].split(' ')

if channel not in self._namescallback:
return

n = self._namescallback[channel][1]
n += nicklist

def irc_RPL_ENDOFNAMES(self, prefix, params):
channel = params[1].lower()
if channel not in self._namescallback:
return

callbacks, namelist = self._namescallback[channel]

for cb in callbacks:
cb.callback(namelist)

del self._namescallback[channel]

例子:

def got_names(nicklist):
log.msg(nicklist)
self.names("#some channel").addCallback(got_names)

关于python - 使用 Twisted Python IRC 框架列出 IRC channel 中的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6671620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com