def __init__(self, bot, func, chats, msg_types, except_self, run_async, enabled): self.bot = weakref.proxy(bot) self.func = func self.chats = ensure_list(chats) self.msg_types = ensure_list(msg_types) self.except_self = except_self self.run_async = run_async self._enabled = None self.enabled = enabled
def __init__(self, bot, func, senders, msg_types, except_self, run_async, enabled): self.bot = bot self.func = func self.senders = ensure_list(senders) self.msg_types = ensure_list(msg_types) self.except_self = except_self self.run_async = run_async self._enabled = None self.enabled = enabled
def __init__( self, bot, func, chats, msg_types, except_self, run_async, enabled ): self.bot = weakref.proxy(bot) self.func = func self.chats = ensure_list(chats) self.msg_types = ensure_list(msg_types) self.except_self = except_self self.run_async = run_async self._enabled = None self.enabled = enabled
def create_group(self, users, topic=None): """ 创建一个新的群聊 :param users: 用户列表 :param topic: 群名称 :return: 若建群成功,返回一个新的群聊对象 :rtype: :class:`wxpy.Group` """ logger.info('{}: creating group (topic: {}), with users:\n{}'.format( self, topic, pformat(users))) @handle_response() def request(): return self.core.create_chatroom(memberList=dict_list, topic=topic or '') dict_list = wrap_user_name(self.except_self(ensure_list(users))) ret = request() user_name = ret.get('ChatRoomName') if user_name: return Group(self.core.update_chatroom(userName=user_name), self) else: raise Exception('Failed to create group:\n{}'.format(pformat(ret)))
def search(self, keywords=None, users=None, **attributes): """ 在群聊合集中,根据给定的条件进行搜索 :param keywords: 群聊名称关键词 :param users: 需包含的用户 :param attributes: 属性键值对,键可以是 owner(群主对象), is_owner(自身是否为群主), nick_name(精准名称) 等。 :return: 匹配条件的群聊列表 :rtype: :class:`wxpy.Groups` """ users = ensure_list(users) if users: for user in users: if not isinstance(user, User): raise TypeError('expected `User`, got {} (type: {})'.format(user, type(user))) def match(group): if not match_name(group, keywords): return if users: for _user in users: if _user not in group: return if not match_attributes(group, **attributes): return return True return Groups(filter(match, self))
def search(self, keywords=None, users=None, **attributes): """ 在群聊合集中,根据给定的条件进行搜索 :param keywords: 群聊名称关键词 :param users: 需包含的用户 :param attributes: 属性键值对,键可以是 owner(群主对象), is_owner(自身是否为群主), nick_name(精准名称) 等。 :return: 匹配条件的群聊列表 :rtype: :class:`wxpy.Groups` """ users = ensure_list(users) if users: for user in users: if not isinstance(user, User): raise TypeError( 'expected `User`, got {} (type: {})'.format( user, type(user))) def match(group): if not match_name(group, keywords): return if users: for _user in users: if _user not in group: return if not match_attributes(group, **attributes): return return True return Groups(filter(match, self))
def search(self, name=None, users=None, **attributes): """ 根据给定的条件搜索合集中的群聊 :param name: 群聊名称 :param users: 需包含的用户 :param attributes: 属性键值对,键可以是 owner(群主对象), is_owner(自身是否为群主), nick_name(精准名称) 等。 :return: 匹配条件的群聊列表 """ users = ensure_list(users) if users: for user in users: if not isinstance(user, User): raise TypeError('expected `User`, got {} (type: {})'.format(user, type(user))) def match(group): if not match_name(group, name): return if users: for _user in users: if _user not in group: return if not match_attributes(group, **attributes): return return True return Groups(filter(match, self))
def remove_members(self, members): """ 从群聊中移除用户 :param members: 待移除的用户列表或单个用户 """ return self.bot.core.delete_member_from_chatroom( self.user_name, ensure_list(wrap_user_name(members)))
def add_members(self, users, use_invitation=False): """ 向群聊中加入用户 :param users: 待加入的用户列表或单个用户 :param use_invitation: 使用发送邀请的方式 """ return self.bot.core.add_member_into_chatroom( self.user_name, ensure_list(wrap_user_name(users)), use_invitation)
def remove_members(self, members): """ 从群聊中移除用户 :param members: 待移除的用户列表或单个用户 """ logger.info('removing {} from {}'.format(members, self)) return self.bot.core.delete_member_from_chatroom( self.user_name, ensure_list(wrap_user_name(members)))
def add_members(self, users, use_invitation=False): """ 向群聊中加入用户 :param users: 待加入的用户列表或单个用户 :param use_invitation: 使用发送邀请的方式 """ logger.info('adding {} into {} (use_invitation={}))'.format( users, self, use_invitation)) return self.bot.core.add_member_into_chatroom( self.user_name, ensure_list(wrap_user_name(users)), use_invitation)
def remove_members(self, members): """ 从群聊中移除用户 :param members: 待移除的用户列表或单个用户 """ logger.info('removing {} from {}'.format(members, self)) return self.bot.core.delete_member_from_chatroom( self.user_name, ensure_list(wrap_user_name(members)) )
def add_members(self, users, use_invitation=False): """ 向群聊中加入用户 :param users: 待加入的用户列表或单个用户 :param use_invitation: 使用发送邀请的方式 """ logger.info('adding {} into {} (use_invitation={}))'.format(users, self, use_invitation)) return self.bot.core.add_member_into_chatroom( self.user_name, ensure_list(wrap_user_name(users)), use_invitation )
def stats(self, attribs=('sex', 'province', 'city')): """ 统计各属性的分布情况 :param attribs: 需统计的属性列表或元组 :return: 统计结果 """ def attr_stat(objects, attr_name): return Counter(list(map(lambda x: getattr(x, attr_name), objects))) from wxpy.utils import ensure_list attribs = ensure_list(attribs) ret = dict() for attr in attribs: ret[attr] = attr_stat(self, attr) return ret
def stats(self, attribs=('sex', 'province', 'city')): """ 统计各属性的分布情况 :param attribs: 需统计的属性列表或元组 :return: 统计结果 """ def attr_stat(objects, attr_name): return Counter(list(map(lambda x: getattr(x, attr_name), objects))) from wxpy.utils import ensure_list attribs = ensure_list(attribs) ret = dict() for attr in attribs: ret[attr] = attr_stat(self, attr) return ret
def chunks(): total = ensure_list(user_or_users) for i in range(0, len(total), chunk_size): yield total[i:i + chunk_size]
def request(): return self.core.create_chatroom( memberList=ensure_list(wrap_user_name(users)), topic=topic or '' )