def invite(self, *args):
        user_count = self.driver.teams.get_team_stats(
            team_id=self.teamid)['total_member_count']
        user_page_limit = 200
        users_not_in_channel = []
        for start in range(0, user_count, user_page_limit):
            users_not_in_channel.extend(
                self.driver.users.get_users(
                    params={
                        'page': start,
                        'per_page': user_page_limit,
                        'in_team': self.teamid,
                        'not_in_channel': self.id
                    }))
        users = {}
        for user in users_not_in_channel:
            users.update({user['username']: user['id']})
        for user in args:
            if user not in users:
                raise UserDoesNotExistError(
                    'User \'{}\' not found'.format(user))
            log.info('Inviting {} into {} ({})'.format(user, str(self),
                                                       self.id))

            try:
                self.driver.channels.add_user(channel_id=self.id,
                                              options={'user_id': users[user]})
            except (InvalidOrMissingParameters, NotEnoughPermissions):
                raise RoomError(
                    "Unable to invite {} to channel {} ({})".format(
                        user, str(self), self.id))
Ejemplo n.º 2
0
 def username_to_userid(self, name):
     """Convert a Slack user name to their user ID"""
     name = name.lstrip('@')
     user = self.sc.server.users.find(name)
     if user is None:
         raise UserDoesNotExistError("Cannot find user %s" % name)
     return user.id
Ejemplo n.º 3
0
 def username_to_userid(webclient: WebClient, name: str):
     """Convert a Slack user name to their user ID"""
     name = name.lstrip('@')
     user = [user for user in webclient.users_list()['users'] if user['name'] == name]
     if user is None:
         raise UserDoesNotExistError(f'Cannot find user {name}.')
     return user['id']
Ejemplo n.º 4
0
 def username_to_userid(self, name):
     """Convert a Slack user name to their user ID"""
     name = name.lstrip('@')
     user = [user for user in self.sc.server.users if user.name == name]
     if not user:
         raise UserDoesNotExistError("Cannot find user %s" % name)
     return user[0].id
Ejemplo n.º 5
0
    def invite(self, *args):
        users = {
            user['name']: user['id']
            for user in self._bot.api_call('users.list')['members']
        }
        for user in args:
            if user not in users:
                raise UserDoesNotExistError("User '%s' not found" % user)
            log.info("Inviting %s into %s (%s)" % (user, str(self), self.id))
            method = 'groups.invite' if self.private else 'channels.invite'
            response = self._bot.api_call(method,
                                          data={
                                              'channel': self.id,
                                              'user': users[user]
                                          },
                                          raise_errors=False)

            if not response['ok']:
                if response['error'] == "user_is_bot":
                    raise RoomError("Unable to invite people. " +
                                    USER_IS_BOT_HELPTEXT)
                elif response['error'] != "already_in_channel":
                    raise SlackAPIResponseError(
                        error="Slack API call to %s failed: %s" %
                        (method, response['error']))
Ejemplo n.º 6
0
	def username_to_userid(self, name):
		"""Converts a name prefixed with @ to the userid"""
		name = name.lstrip('@')
		user = self.driver.users.get_user_by_username(username=name)
		if user is None:
			raise UserDoesNotExistError("Cannot find user {}".format(name))
		return user['id']
Ejemplo n.º 7
0
    def invite(self, *args):
        users = {
            user['name']: user['id']
            for user in self._bot.api_call('users.list')['members']
        }
        for user in args:
            if user not in users:
                raise UserDoesNotExistError(f'User "{user}" not found.')
            log.info('Inviting %s into %s (%s)', user, self, self.id)
            method = 'groups.invite' if self.private else 'channels.invite'
            response = self._bot.api_call(method,
                                          data={
                                              'channel': self.id,
                                              'user': users[user]
                                          },
                                          raise_errors=False)

            if not response['ok']:
                if response['error'] == 'user_is_bot':
                    raise RoomError(
                        f'Unable to invite people. {USER_IS_BOT_HELPTEXT}')
                elif response['error'] != 'already_in_channel':
                    raise SlackAPIResponseError(
                        error=
                        f'Slack API call to {method} failed: {response["error"]}.'
                    )
Ejemplo n.º 8
0
    def invite(self, *args):
        users = {
            user["name"]: user["id"]
            for user in self._bot.api_call("users.list")["members"]
        }
        for user in args:
            if user not in users:
                raise UserDoesNotExistError(f'User "{user}" not found.')
            log.info("Inviting %s into %s (%s)", user, self, self.id)
            method = "conversations.invite"
            response = self._bot.api_call(
                method,
                data={
                    "channel": self.id,
                    "user": users[user]
                },
                raise_errors=False,
            )

            if not response["ok"]:
                if response["error"] == "user_is_bot":
                    raise RoomError(
                        f"Unable to invite people. {USER_IS_BOT_HELPTEXT}")
                elif response["error"] != "already_in_channel":
                    raise SlackAPIResponseError(
                        error=
                        f'Slack API call to {method} failed: {response["error"]}.'
                    )
Ejemplo n.º 9
0
 def username(self):
     """Convert a Slack user ID to their user name"""
     user = self._sc.server.users.find(self._userid)
     if user is None:
         raise UserDoesNotExistError("Cannot find user with ID %s" %
                                     self._userid)
     return user.name
Ejemplo n.º 10
0
    def invite(self, *args):
        user_count = self.driver.teams.get_team_stats(
            team_id=self.teamid)["total_member_count"]
        user_page_limit = 200
        users_not_in_channel = []
        for start in range(0, user_count, user_page_limit):
            users_not_in_channel.extend(
                self.driver.users.get_users(
                    params={
                        "page": start,
                        "per_page": user_page_limit,
                        "in_team": self.teamid,
                        "not_in_channel": self.id,
                    }))
        users = {}
        for user in users_not_in_channel:
            users.update({user["username"]: user["id"]})
        for user in args:
            if user not in users:
                raise UserDoesNotExistError("User '{}' not found".format(user))
            log.info("Inviting {} into {} ({})".format(user, str(self),
                                                       self.id))

            try:
                self.driver.channels.add_user(channel_id=self.id,
                                              options={"user_id": users[user]})
            except (InvalidOrMissingParameters, NotEnoughPermissions):
                raise RoomError(
                    "Unable to invite {} to channel {} ({})".format(
                        user, str(self), self.id))
Ejemplo n.º 11
0
 def userid_to_username(self, id_):
     """Convert a Slack user ID to their user name"""
     if hasattr(self.sc.server.users, 'get'):
         # Slackclient > 1.0.2
         user = self.sc.server.users.get(id_)
     else:
         try:
             user = [user for user in self.sc.server.users if user.id == id_][0]
         except IndexError:
             user = None
     if user is None:
         raise UserDoesNotExistError("Cannot find user with ID %s" % id_)
     return user.name
Ejemplo n.º 12
0
 def username_to_userid(self, name: str):
     """Convert a Slack user name to their user ID"""
     name = name.lstrip('@')
     user = [user for user in self.webclient.users_list()['members'] if user['name'] == name]
     if user == []:
         raise UserDoesNotExistError(f'Cannot find user {name}.')
     if len(user) > 1:
         log.error(
             "Failed to uniquely identify '{}'.  Errbot found the following users: {}".format(
                 name,
                 " ".join(["{}={}".format(u['name'], u['id']) for u in user])
             )
         )
         raise UserNotUniqueError(f"Failed to uniquely identify {name}.")
     return user[0]['id']
Ejemplo n.º 13
0
    def username_to_userid(self, name):
        """Convert a Slack user name to their user ID"""
        name = name.lstrip('@')

        if hasattr(self.sc.server.users, 'get'):
            # Slackclient > 1.0.2
            user = self.sc.server.users.get(name)
        else:
            try:
                user = [user for user in self.sc.server.users if user.name == name][0]
            except IndexError:
                user = None

        if user is None:
            raise UserDoesNotExistError("Cannot find user %s" % name)
        return user.id
Ejemplo n.º 14
0
    def invite(self, *args):
        users_not_in_channel = self.client.api.getUsersNotInChannel(
            self.teamid, self.id)
        users = {}
        for user in users_not_in_channel:
            users.update({
                users_not_in_channel[user]['username']:
                users_not_in_channel[user]['id']
            })
        for user in args:
            if user not in users:
                raise UserDoesNotExistError(
                    'User \'{}\' not found'.format(user))
            log.info('Inviting {} into {} ({})'.format(user, str(self),
                                                       self.id))

            try:
                self.client.api.addUserToChannel(self.teamid, self.id,
                                                 users[user])
            except MattermostApiResponseError as e:
                raise RoomError(
                    "Unable to invite {} to channel {} ({})".format(
                        user, str(self), self.id))
Ejemplo n.º 15
0
 def userid_to_username(self, id_):
     """Convert a Slack user ID to their user name"""
     user = self.sc.server.users.get(id_)
     if user is None:
         raise UserDoesNotExistError("Cannot find user with ID %s" % id_)
     return user.name
Ejemplo n.º 16
0
 def userid_to_username(self, id_):
     """Convert a Slack user ID to their user name"""
     user = [user for user in self.sc.server.users if user.id == id_]
     if not user:
         raise UserDoesNotExistError("Cannot find user with ID %s" % id_)
     return user[0].name
Ejemplo n.º 17
0
 def userid_to_username(self, id_: str):
     """Convert a Slack user ID to their user name"""
     user = self.webclient.users_info(user=id_)["user"]
     if user is None:
         raise UserDoesNotExistError(f"Cannot find user with ID {id_}.")
     return user["name"]
Ejemplo n.º 18
0
 def userid_to_username(webclient: WebClient, id_: str):
     """Convert a Slack user ID to their user name"""
     user = webclient.users_info(user=id_)['user']
     if user is None:
         raise UserDoesNotExistError(f'Cannot find user with ID {id_}.')
     return user['name']