classBaseHandle:再来看看FileHandle这个类,这也是当前版本最丰富的模块。这里面有两端逻辑:1.自动更新群组信息。 2.注册群发相关命令。
def__init__(self):
'''
self._meta = {
'obj':{ # 消息发送对象
'ul': , # unlimit group
'l': , # limit group
'r': # restrict
},
'reply':{
'text': '',
'article': '',
}
}
'''
self._usage = ''
self._meta = {}
self.current_cmd = None
@property
defusage(self):
returnself._usage
@property
defmeta(self):
returnself._meta
classFileHelper(BaseHandle):
_usage = '''
'''
def__init__(self):
super().__init__()
self._meta = {
...
}
self._th_update = threading.Thread(target=self._update_meta, args=(), daemon= True)
self.auto_update_groups()
defauto_update_groups(self):
# 自动更新群组
self._th_update.start()
def_update_meta(self):
'''
初始化限时推送的群组
'''
def_filter_restrict_groups(group):
# 筛选出不能群发的群组
def_filter_limit_groups(group):
# 筛选出有时间限制的群组
def_filter_unlimit_group(groups, limit_groups):
# 筛选出不受限制的群组
whileTrue:
time.sleep( 30)
# 更新群组信息
classFileHelper(BaseHandle):
...
defupdate_cmd(self, cmd):
# 更新命令,用于动态注册函数
def_register_mass(func):
@functools.wraps(func)
defdecorator(self, msg, *args, **kwargs):
_action, _reply, _obj = func.__name__.split('_')
ifself._meta['action'][_action]:
_to_user = self._meta['obj'][_obj]
for_group in_to_user:
instance.send_msg(msg, _group['UserName'])
time.sleep(random.randrange(0, 20))
self._meta['action'][_action] = False
self._current_cmd = None
instance.send_msg('群发消息发送完毕', self._meta['extra']['UserName'])
returndecorator
@_register_mass
defmass_text_ul(self, msg=None):
pass
@_register_mass
defmass_text_l(self, msg):
pass
@_register_mass
defmass_text_test(self, msg):
pass
@_register_mass
defmass_article_ul(self, msg):
pass
@_register_mass
defmass_article_l(self, msg):
pass
classFriend(BaseHandle):看下效果图:
_usage = '''
'''
def__init__(self):
super().__init__()
self._meta = {
...
}
defis_biz(self, msg):
# 判断是不是商务合作
作者简介:上海小胖,四大咨询的Tech Lead,MongoDB Professional获得者。「Python专栏」专注Python领域的各种技术:爬虫、DevOps、人工智能、Web开发等。还有「大航海计划」,各种内推活动。
本文为 @ 21CTO 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。