miniIRC的WIP扩展。
miniirc-extras的Python项目详细描述
迷你餐厅
miniIRC的扩展(github, gitlab)添加更多功能。
注意,minirc_的附加程序仍然处于测试阶段,可能会出现并将出现中断 API在v1.0.0之前更改,MiniIRC_Extras可能无法与旧版本一起使用 最小值。
这里的一些功能最终可能会合并到minirc中。
加载功能
导入minirc_extras后,可以使用
irc.require('feature_name')
,加载后可以使用
irc.feature\u name
功能
通道
:断开minirc时,必须加载通道模式跟踪。确保连接
:https://github.com/luk3yx/minirc/issues/15" rel="nofollow">https://github.com/luk3yx/minirc/issues/15mp
:(WIP)miniIRC的多处理处理程序。测试功能
:调试用户
:断开minirc连接时必须加载用户跟踪。\u json
(概念证明):解析json消息。
irc.用户
irc.users
将基本的用户跟踪添加到minirc。
用户
对象
用户对象存储当前用户的信息和用户定义的数据,以及
可使用irc.users[hostmask]
或irc.users['nick']
访问
以下项目在用户
对象中可用:
ident
主机
域名
域名
主机掩码
原始主机掩码
频道
帐户
none
。虚拟形象网址
您还可以设置和获取字符串项作为键和json兼容对象 作为值。
用户
对象具有以下帮助函数:
消息(*文本)
privmsg
。me(*文本)
/me
)。注意事项(*文本)
通知用户
。踢(频道,原因='')
频道
(字符串或频道
对象)踢出。循环通道
irc.chans
在irc.users
之上添加频道模式跟踪。你可以得到
带有irc.chans['channel name']
频道
对象
频道
对象具有以下属性:
名称
模式
modelist
包含模式列表的对象。主题
用户
集合
包含此频道成员的用户
对象。模型师
对象
modelist对象存储模式列表,并具有以下功能:
<表><广告>getbool(模式)
模式
(单个字符串),则返回真
。用于+i
,+t
等
getstr(模式,默认为无)
模式
是用设置的,否则为默认值。用于+k
,+l
等
getset(模式)
模式下的所有条目。如果计划在模式(如+b
)中使用此选项,则可能需要在bot/客户端加入频道以填充列表时运行模式channel+b
。用于+b
,+e
,+o
,+v
等
hasstr(模式)
true,否则返回false
hasset(模式)
len(getset(mode))>;0
您可以访问modelist
对象,例如dict
s,但是这需要
如果您计划使用mypy或其他类型检查器,则需要额外的类型检查代码。
irc.mp
多处理处理程序。您可以使用
irc.mp.handler
和irc.mp.cmdhandler
。这些处理程序是用
对象(abstractirc的一个子类)而不是
正常irc
对象。
以下函数/变量与restrictedirc一起工作:
活动电容
,频道
,连接模式
,CTCP
,调试
,识别
,IP
,
ircv3_caps
,isupport
,me
,msg
,nick
,注意
,persist
,
ping_interval
,port
,quit_message
,quote
,realname
,ssl
,
验证SSL
试图修改这些变量将导致attributeerror
或
无提示操作失败。
其他类
摘要IRC
minirc_extras.abstractirc
类提供了一种简单的方法来键入checkirc
没有存根文件的对象。
主机掩码
minirc_extras添加抽象ish类minirc_extras.hostmask
:
fromminiirc_extrasimportHostmaskisinstance('test',Hostmask)# Falseisinstance(('nick',123,'host'),Hostmask)# Falseisinstance(('nick','user','host'),Hostmask)# TrueHostmask('nick','user','host')# ('nick', 'user', 'host')Hostmask(123456,'user','host')# TypeError
创建新功能
这个api将来可能会改变。
您可以使用minirc_extras.feature创建自己的功能
:
@miniirc_extras.Feature('feature_name')classMyFeature:deftest_func(self):print('test_func called with',self._irc)def__call__(self):print('MyFeature called with',self._irc)def__init__(self,irc):self._irc=irc
一次注册后,您可以要求并使用它:
irc.require('feature_name')irc.feature_name()# MyFeature called with <miniirc.IRC object>irc.feature_name.test_func()# test_func called with <miniirc.IRC object>
其它功能
一些其他函数和类位于minirc_extras.utils
dummyirc(…)
dummyirc.\uu init\uu
没有必需的参数。dict-to-u标签(标签)
dict_to_标记({'tag1':true,'tag2':'tag data'})
?b'@tag1;tag2=标记数据'
获取原始插槽(IRC)
标记到dict(标记列表,分隔符=';')
tag1;tag2=tag data
)转换为包含字符串和布尔值的dict
。ircv3_消息分析器(msg,*,冒号=true)
minirc.ircv3_消息分析器
相同,但也接受字节
和字节
s。冒号
关键字参数的工作方式与minirc.handler
上的冒号
关键字参数的工作方式相同
主机掩码到str(主机掩码)
hostmask
对象转换为nick!user@host
字符串。ircv2_message_unparser(cmd,hostmask,tags,args,*,colon=true,encoding='utf-8')
编码
编码的ircv2消息(或用none
返回str
)。当冒号
为假
时,args[-1]
前面将有一个冒号。ircv3_message_unparser(cmd,hostmask,tags,args,*,colon=true,encoding='utf-8')
ircv2_message_unparser
相同,但添加了标记。namedtuple(…)
collections.namedtuple
的别名,否则将添加默认值和模块的包装器。
版本信息(主要=0,次要=0,微观=0,发布级别='final',序列=0)
namedtuple
类似于类型(sys.version\u info)
注意,minirc中的dict-to-u标记
和tags-to-dict
可用
内部功能,但它们可以也将改变。
minirc_extras.utils.irc_from_url
允许您从url创建irc
对象,例如
irc\u from_URL('irc://nick@ssl server.example/channel1,channel2')
将创建
一个名为nick的irc对象。传递给的任何关键字参数
irc_from_url
发送到irc()
minirc_extras.utils.handlergroup
允许您创建一组处理程序并将它们批量应用到irc
对象:
处理程序(…)
处理程序
添加到组中,使用与irc.handler相同的语法
命令处理程序(…)
cmdhandler
添加到组中,使用与irc.cmdhandler相同的语法。
添加到(irc_或_组)
minirc_extras.utils.numerics
RFC 1459、RFC 2812中大部分IRC数字的枚举,以及
modern.ircdocs.horse。见
minirc_extras/\u numerics.py
的列表
数字及其名称。
示例:
importminiircfromminiirc_extras.utilsimportnumerics@miniirc.Handler(numerics.RPL_WELCOME,colon=False)defhandler(irc,hostmask,args):print('Connected to IRC!')
另一个例子:
>>>fromminiirc_extras.utilsimportnumerics>>>numerics.RPL_ISUPPORT<numerics.RPL_ISUPPORT:005>>>>numerics['RPL_MOTD']<numerics.RPL_MOTD:372>>>>numerics(465)<numerics.ERR_YOUREBANNEDCREEP:465>>>>numerics('422')<numerics.ERR_NOMOTD:422>>>>str(numerics.RPL_YOURHOST)'002'
minirc_extras.格式化
文本格式。灵感来源于ircmessage
颜色
/颜色
枚举
colors
(或colors
)枚举包含颜色及其对应的代码。
不要使用这些设置文本格式,而是使用下面的样式和
颜色
功能。
样式器
对象
Styler对象是对字符串应用IRC格式的可调用对象。
miniirc_extras.formatting.Styler(fg=None,bg=None,*,bold:bool=False,italics:bool=False,underline:bool=False,reverse_colour:bool=False,strikethrough:bool=False,spoiler:bool=False,monospace:bool=False,reset:bool=True)
请注意,styler
同时接受reverse_colour
和reverse_color
fg
和bg
可以是上述enum
中的字符串或值
传递给\u init\u
的参数可用作对象的属性,
例如styler.bold
不建议将reset
设置为false
,因为启用时它只重置
任何更改的格式。
对于更干净的代码,您还可以使用
minirc_extras.formatting.style(text,fg=none,…)
示例:
fromminiirc_extrasimportformattingstyler=formatting.Styler('red',bold=True,monospace=True)msg=styler('Test message')print(styler.fg)# <colours.red: 04>print(styler.fg)# Noneprint(styler.bold)# Trueprint(repr(msg))# '\x11\x02\x0304Test message\x0399\x02\x11'msg2=formatting.style('Test message','red',bold=True,monospace=True)assertmsg==msg2# No errorprint(repr(formatting.unstyle(msg)))# 'Test message'
"轻量级"样式器
有许多预定义的样式器(如果您是 只添加一种样式):
bold=Styler(bold=True)italics=Styler(italics=True)italic=italicsunderline=Styler(underline=True)reverse_colour=Styler(reverse_colour=True)reverse_color=reverse_colourstrikethrough=Styler(strikethrough=True)monospace=Styler(monospace=True)spoiler=Styler(spoiler=True)
轻量级样式器是styler
的子类,运行速度稍快,
只要你只改变一种风格。
您也可以使用minirc_extrasting.formatting.colorize(text,fg)
(或
minirc_extras.formatting.colourise(text,fg)
)如果您只更改
前景色/前景色,同样提高了速度。
注意formatting.style(text,'red',bold=true)
建议
formatting.bold(formatting.colorize(text,'red'))
,因为它更可读
而且可能更快。
不推荐的功能。
这些功能目前仍然有效,但可能会从 Minirc_Extras v1.0.0版:
minirc_extras.utils.remove_冒号
自从minirc v1.4.0以来,这不再是必需的,您只需添加
colon
关键字参数到handler
s和cmdhandler
s。
在运行处理程序时从args[-1]
中删除:
(如果有的话)的修饰程序。
这必须放在后面@minirc.handler
示例:
# Without colon=False.# This will change in miniirc v2.0.0 when the `colon` argument will default# to `False`.@miniirc.Handler('PRIVMSG')defhandle_privmsg(irc,hostmask,args):print(args)# ['#channel', ':Test message']# Deprecated, do not use this.@miniirc.Handler('PRIVMSG')@miniirc_extras.utils.remove_colondefhandle_privmsg(irc,hostmask,args):print(args)# ['#channel', 'Test message']# You should use this instead:@miniirc.Handler('PRIVMSG',colon=False)defhandle_privmsg(irc,hostmask,args):print(args)# ['#channel', 'Test message']
minirc_extras.dummyiirc
现在称为minirc_extras.utils.dummyirc
minirc_extras.versioninfo
现在称为minirc_extras.utils.versioninfo
其他计划的中断更改
- 为了与minirc v2.0.0一致,所有采用
冒号
关键字的函数 这里的参数默认为false
(而不是true
)。这可能会改变 在Minirc_Extras v1.0.0版中。 - 如果python 3.5在minirc_extras v1.0.0发布时已经过时, 支架可能会掉落。