一个轻量级的irc框架。
miniirc的Python项目详细描述
微型电路
一个简单的IRC客户端框架。
要安装minirc,只需以根用户身份运行pip3 install minirc
。
参数
irc=miniirc.IRC(ip,port,nick,channels=None,*,ssl=None,ident=None,realname=None,persist=True,debug=False,ns_identity=None,auto_connect=True,ircv3_caps=set(),quit_message='I grew sick and died.',ping_interval=60,verify_ssl=True)
注意*之前的所有内容都是位置参数。
<表><广告>IP
端口
频道
ssl
none
,则禁用TLS/SSL,除非端口是6697
ident
nick
域名
nick
。持久化
调试
logging.debug
)。ns_标识
<;user>;<;password>;
)。这可以是自minirc v1.2.0以来的元组或列表。自动连接
.connect()
。ircv3_caps
ns_identity
,则会自动添加sasl。连接模式
'+b'
)。退出消息
irc.disconnect()
ping_间隔
ping
,如果没有发送回复,在相同的超时之后,minirc将尝试重新连接。设置为none
禁用。验证SSL
pip3 install certifi
。唯一必需的参数是ip
,port
和nick
功能
<表><广告>更改解析器(parser=…)
connect()
ctcp(target,*msg,reply=false,tags=none)
调试(…)
print(…)
。断开连接(msg=…,*,auto_reconnect=false)
自动重新连接
将被自身覆盖。如果设置为真
,则保持
。
处理程序(…)
me(目标,*msg,tags=none)
/me
(ctcp action
)到target
消息(target,*msg,tags=none)
privmsg
到target
注意(target,*msg,tags=none)
目标发送通知
引号(*msg,force=false,tags=none)
force=true
在断开连接时发送。不要在一个irc.quote()
中发送多个命令,因为换行符将被剥离并作为一个命令发送。tags
参数允许您添加带有ircv3客户机标记的dict
(全部从+
开始),并且不会发送到不支持客户机标记的irc服务器。注意,如果force=false
onirc.quote
(或调用irc.msg
etc),则
minirc未连接,将临时存储消息,然后发送
连接minirc后。如果minirc是
完全断开连接(irc.connected
为none
)。
变量
不应在minirc.py
活动帽
集
。断开连接时为空。已连接
none
),true
当miniIRC连接时,false
当miniIRC连接时,none
当miniIRC未连接时。isupport
dict
具有isupport
发送给客户端的消息中的值(不一定是字符串)。msglen
\r\n
)。如果服务器支持oragono.io/maxline-2
功能,则会自动更改此设置。传递给minirc.irc
的以下参数也可用:ip
,
端口
,通道
,SSL
,标识
,实名
,持久
,连接模式
,
退出消息
,ping间隔
,验证SSL
处理程序
minirc.handler
和minirc.cmdhandler
是添加
事件处理程序列表的函数。此列表中的函数在其
接收到各自的IRC事件时拥有线程。处理程序可能
对现有的每个irc对象(minirc.handler
)或仅对
特定的IRC对象(irc.handler
)。
处理程序的基本语法如下,其中*events
是调用事件列表(privmsg
,通知
,等等)。
importminiirc@miniirc.Handler(*events,colon=True)defhandler(irc,hostmask,args):# irc: An 'IRC' object.# hostmask: A 'hostmask' object.# args: A list containing the arguments sent to the command. Everything# following the first `:` in the command is put into one item# (args[-1]). If "colon" is "False", the leading ":" (if any)# is automatically removed. Setting this to False is probably# a good idea to prevent unexpected side effects.pass
使用处理程序时的建议:
- 如果不需要对minirc<;1.4.0的支持,并且正在分析最后一个
参数,强烈建议将
colon
设置为false
。如果冒号
参数被忽略,它默认为真
,但是这可能会改变 如果/当minirc v2.0.0发布时。 - 尽管
handler
和cmdhandler
当前接受任何可以 转换为字符串后,每个事件都会在内部转换为字符串。 - 当不需要时,不指定参数 防止创建冗余的dict。
- 要将处理程序添加到特定的
irc
对象,而不是现有的每个对象, 请改用irc.handler
和irc.cmdhandler
。如果要创建bot
或client
类并自动向irc
对象添加处理程序 内部创建,请参见 使现有函数处理程序变为" rel="nofollow">使现有函数处理程序变为
主机掩码对象
主机掩码是格式为('user','ident','hostname')
的元组。如果ident
并且
主机名
不是从服务器发送的,它们将用
上一个值。如果在没有主机掩码的情况下接收到命令,则所有主机掩码
元素将设置为命令的名称。但这是不赞成的,
如果/当minirc v2.0.0被释放时,hostmask
元素将被设置为
空字符串。
使现有函数处理程序
可以创建现有函数处理程序(例如类实例方法)
使用irc.handler(*events)(handler_function)
。你可能不想用
minirc.handler
对于类实例方法,因为这将创建一个处理程序
每个irc
对象都会触发它。
您还可以轻松地添加同一类型的多个处理程序:
add_handler=irc.Handler('PRIVMSG')add_handler(handler_1)add_handler(self.instance_handler)
如果要创建bot
(或client
)类并添加
不创建全局进程范围处理程序或
为每个类实例创建包装函数。
IRCV3支持
IRCV3标签
如果希望处理程序支持ircv3消息标记,则需要添加
ircv3=true
到处理程序
或命令处理程序
装饰程序。您需要添加
标记
在主机掩码
之后设置函数的参数。IRCV3标记被发送到
处理程序为dict
s,值为字符串或true
minirc将自动取消转义ircv3标记值。
importminiirc@miniirc.Handler(*events,colon=False,ircv3=True)defhandler(irc,hostmask,tags,args):pass
IRCV3功能
在使用处理程序连接之前,可以处理ircv3功能。
在这里调用的任何irc.quote()
上都必须使用force=true
调用时,minirc可能尚未完全连接。不要使用
冒号
参数
当创建这些处理程序以避免意外的副作用时。
importminiirc@miniirc.Handler('IRCv3 my-cap-name')defhandler(irc,hostmask,args):# Process the capability here# IRCv3.2 capabilities:# args = ['my-cap-name', 'IRCv3.2-parameters']# IRCv3.1 capabilities:# args = ['my-cap-name']# Remove the capability from the processing list.irc.finish_negotiation(args[0])# This can also be 'my-cap-name'.
自定义消息分析器
如果要连接的irc服务器支持非标准消息语法,则可以
创建自定义消息分析器。使用原始消息调用(作为str
)和
可以返回none
忽略消息,也可以返回4元组(cmd,hostmask,tags,args
)
然后发送给处理程序。这个4元组中的项应该相同
按处理程序所需的项键入(并且cmd
应该是字符串)。
消息分析器示例
此消息解析器使普通解析器允许将~
作为ircv3标记前缀字符。
importminiircdefmy_message_parser(msg):ifmsg.startswith('~'):msg='@'+msg[1:]returnminiirc.ircv3_message_parser(msg)
更改消息分析器
要更改消息分析器,请可以使用irc.change_parser(func=…)
。如果func
不是
指定时,它将默认为内置解析器。您只能更改消息分析器
动态(例如在ircv3 cap处理程序中)。如果需要更改消息分析器
在连接之前,您可以禁用自动连接
,然后对其进行更改。
irc=miniirc.IRC(...,auto_connect=False)irc.change_parser(my_message_parser)irc.connect()
处理多个事件
1.3.0版的新功能。
如果要处理多个事件和/或能够获取
事件被触发时,可以使用irc.cmdhandler
。这将通过一个额外的
命令
handler函数的参数(介于irc
和hostmask
之间)
包含带有命令名的字符串(例如privmsg
)。
捕获所有处理程序
请不要使用这些,除非没有其他选择。
如果要处理每个事件,可以使用catch all处理程序。创造
这样,您可以在不使用任何参数的情况下调用irc.cmdhandler()
。注意这个
连接时将多次调用处理程序(一旦连接)。
没有参数就不能调用irc.handler()。
示例
importminiirc# Not required, however this makes sure miniirc isn't insanely outdated.assertminiirc.ver>=(1,4,1)@miniirc.Handler('PRIVMSG','NOTICE',colon=True)defhandler(irc,hostmask,args):print(hostmask[0],'sent a message to',args[0],'with content',args[1])# nickname sent a message to #channel with content :Hello, world!@miniirc.CmdHandler('PRIVMSG','NOTICE',colon=False)defcmdhandler(irc,command,hostmask,args):print(hostmask[0],'sent a',command,'to',args[0],'with content',args[1])# nickname sent a PRIVMSG to #channel with content Hello, world!
每当机器人收到 minirc提供以下帮助程序功能: 版本编号系统应类似于
但是,在可能的情况下,当主要版本
改变。补丁版本号可以而且将迅速增加,因为minirc是
写这篇文章的时间)正在积极开发中。 如果Python3.4或更新版本中存在错误,请打开问题或拉取
请求访问github
gitlab 如果您使用的是Python3.4或更早版本的Python,我强烈建议
建议更新。 如果您想要更高级的功能,例如用户跟踪,可以使用
minirc_extras
(github,
gitlab)。注意minirc_extras
目前仍处于测试阶段,未来将有突破性的API更改。 minirc v2.0.0可能永远不会发布,但是如果它是以下中断
将进行更改: 下面是一些使用minirc的(开源)机器人程序的列表,按字母顺序排列: 要将您自己的bot/client添加到此列表中吗?在上打开问题
github或
gitlabprivmsg
或通知时,这将打印一行。
其他功能
< /广告><正文>名称 说明
minirc.get_ca_certs()
如果安装了certifi,则运行 certifi.where()
,否则返回none
minirc.ircv3_消息分析器(msg)
默认ircv2/ircv3消息解析器,返回 cmd、hostmask、tags、args
minirc.ver
包含版本信息的元组。 迷你版
可以更改CTCP版本回复。 python版本支持
迷你餐厅
折旧
irc.handlers
,irc.sock
和irc.sendq
(请不要使用这些)将被重命名。同样,请不要使用这些。irc.ns_identity
可以存储为元组而不是字符串,例如
('username','password with spaces')
而不是
"带空格的用户名密码"
。这两种格式目前都被接受,并且
将在ns_identity
关键字参数中接受。handler
和cmdhandler的
冒号
关键字参数将默认为
false
而不是true
工作示例/实现
推荐PyPI第三方库