miniIRC的WIP扩展。

miniirc-extras的Python项目详细描述


迷你餐厅

python 3.5+可用实验室le on pypi。

miniIRC的扩展(githubgitlab)添加更多功能。

注意,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/15
  • mp(WIP)miniIRC的多处理处理程序。
  • 测试功能:调试
  • 用户:断开minirc连接时必须加载用户跟踪。
  • \u json(概念证明):解析json消息。

irc.用户

irc.users将基本的用户跟踪添加到minirc。

用户对象

用户对象存储当前用户的信息和用户定义的数据,以及 可使用irc.users[hostmask]irc.users['nick']访问

以下项目在用户对象中可用:

<表><广告>变量说明 < /广告><正文>尼克 用户当前的昵称。ident用户的当前标识主机用户当前的主机名。域名用户的域名主机掩码包含用户主机掩码的对象。原始主机掩码包含nick的字符串!user@host频道包含用户当前所在频道的对象的集合。帐户包含用户当前nickserv帐户的字符串,如果用户未登录,则为none虚拟形象网址用户的化身url。目前,只有irccloud化身可以工作。

您还可以设置和获取字符串项作为键和json兼容对象 作为值。

用户对象具有以下帮助函数:

<表><广告>函数说明 < /广告><正文>消息(*文本)向用户发送privmsgme(*文本)向用户发送一个CTCP操作
/me)。注意事项(*文本) 发送一个通知用户踢(频道,原因='')将用户从频道(字符串或频道对象)踢出。

循环通道

irc.chansirc.users之上添加频道模式跟踪。你可以得到 带有irc.chans['channel name']

的频道

频道对象

频道对象具有以下属性:

<表><广告>变量说明 < /广告><正文>名称频道名称。模式amodelist包含模式列表的对象。主题频道主题。用户a集合包含此频道成员的用户对象。

模型师对象

modelist对象存储模式列表,并具有以下功能:

<表><广告>函数说明 < /广告><正文>getbool(模式)如果在相应通道上设置了模式(单个字符串),则返回用于+i+tgetstr(模式,默认为无)返回参数模式是用设置的,否则为默认值。用于+k+lgetset(模式)返回一个frozenset,其中包含存储在模式下的所有条目。如果计划在模式(如+b)中使用此选项,则可能需要在bot/客户端加入频道以填充列表时运行模式channel+b用于+b+e+o+vhasstr(模式)如果用一个参数设置模式,则返回true,否则返回false hasset(模式)相当于len(getset(mode))>;0

您可以访问modelist对象,例如dicts,但是这需要 如果您计划使用mypy或其他类型检查器,则需要额外的类型检查代码。

irc.mp

多处理处理程序。您可以使用 irc.mp.handlerirc.mp.cmdhandler。这些处理程序是用 对象(abstractirc的一个子类)而不是 正常irc对象。

以下函数/变量与restrictedirc一起工作:

活动电容频道连接模式CTCP调试识别IPircv3_capsisupportmemsgnick注意persistping_intervalportquit_messagequoterealnamessl验证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(…)无法连接到服务器的minirc.irc的子类。dummyirc.\uu init\uu没有必需的参数。dict-to-u标签(标签)将包含字符串和布尔值的dict转换为ircv3标记字符串。示例:dict_to_标记({'tag1':true,'tag2':'tag data'})b'@tag1;tag2=标记数据'获取原始插槽(IRC)尝试从abstractirc对象获取原始套接字。不建议这样做,在任何情况下都不应尝试使用此套接字接收数据。只有在没有其他选择时才使用此选项。引发minirc_extras。如果找不到套接字,则返回错误。标记到dict(标记列表,分隔符=';')将由分隔符连接的标记列表(tag1;tag2=tag data)转换为包含字符串和布尔值的dictircv3_消息分析器(msg,*,冒号=true)minirc.ircv3_消息分析器相同,但也接受字节字节s。冒号关键字参数的工作方式与minirc.handler上的冒号关键字参数的工作方式相同 主机掩码到str(主机掩码)hostmask对象转换为nick!user@host字符串。ircv2_message_unparser(cmd,hostmask,tags,args,*,colon=true,encoding='utf-8')将minirc样式的消息数据转换为用编码编码的ircv2消息(或用none返回str)。当冒号时,args[-1]前面将有一个冒号。ircv3_message_unparser(cmd,hostmask,tags,args,*,colon=true,encoding='utf-8')ircv2_message_unparser相同,但添加了标记。namedtuple(…)python 3.7+上collections.namedtuple的别名,否则将添加默认值和模块的包装器。版本信息(主要=0,次要=0,微观=0,发布级别='final',序列=0)anamedtuple类似于类型(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_或_组)将此组中的所有处理程序添加到IRC对象或其他处理程序组。<代码>copy()返回与此处理程序相同的另一个处理程序组。

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_colourreverse_color

fgbg可以是上述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关键字参数到handlers和cmdhandlers。

在运行处理程序时从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发布时已经过时, 支架可能会掉落。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java集合属性值   java字符串==运算符是否比较引用?   java是否存在过太多的ListView或适配器?   json获取java中类路径中下载的文件   我可以用java代码解决数据库并发问题吗?   在多个线程中使用forEach()或使用forEach()和lambdas进行java集合迭代   java输出JFrame中的整个循环   java禁用高度详细的日志记录   java在没有特定属性的对象中访问模型的值   java Smack xmpp建立连接   处理过时域对象引起的并发问题的java策略(Grails/GORM/Hibernate)   java从ObservableList中提取元素   使用图像进行java相似图像搜索   java ListView和图像:我快疯了   在Java中,如何从毫秒时间戳中提取一天的周期?   java我需要这样的设计,但我面临两个问题   java如何获取JGoodies FormLayout中的单元格大小   Spring引导生成的java War文件未部署到Weblogic 12c