def streams_fetch(self, token):
enc_key = self.tokens.get_key_by_known_token(token)
user_info = self.tokens[enc_key]
if user_info['full_access']:
try:
self.log.info('Fetch channels for %s', user_info['login'])
all_ch = Slacker(token).channels.list().body
SlackArchive.api_call_delay()
self.people.set_field(user_info['user'], 'channels',
SlackArchive._filter_channel_ids(all_ch))
self.update_streams(all_ch) # not a duplicate op: fight races
self.log.info('Fetch %s\'s private groups', user_info['login'])
groups = Slacker(token).groups.list().body
SlackArchive.api_call_delay()
self.people.set_field(user_info['user'], 'groups',
SlackArchive._filter_group_ids(groups))
self.update_streams(groups, user_info['user'])
self.log.info('Fetch direct msgs for %s', user_info['login'])
ims = Slacker(token).im.list().body
SlackArchive.api_call_delay()
self.people.set_field(user_info['user'], 'ims',
SlackArchive._filter_im_ids(groups, ims))
self.update_streams(ims, user_info['user'])
except Error as err:
self.mongo.db.z_errors.insert_one({'_id': time.time(),
'ctx': 'channels_fetch',
'msg': str(err)})
self.log.exception('Fetch streams error %s', str(err))
# full access was revoked
if str(err) == 'missing_scope':
self.tokens.set_field(enc_key, 'full_access', False)
评论列表
文章目录