def unalias_name(message, user_name, alias_name=None): """ユーザーに紐づくエイリアス名を削除する :param message: slackbotの各種パラメータを保持したclass :param str user_name: 削除するエイリアス名を持つSlackユーザー :param str alias_name: 削除するエイリアス名 alias_nameがNoneの場合、user_nameをalias_nameとして扱う 上記の場合user_nameは投稿者となる """ if alias_name: # ユーザー名とエイリアス名が指定されているパターン slack_id = get_slack_id_by_name(user_name) else: # 投稿者のエイリアス名を更新するパターン alias_name = user_name slack_id = message.body['user'] user_name = get_user_name(slack_id) if not slack_id: botsend(message, '{}に紐づくSlackのuser_idは存在しません'.format(user_name)) return s = Session() alias_user_name = (s.query(UserAliasName).filter( UserAliasName.slack_id == slack_id).filter( UserAliasName.alias_name == alias_name).one_or_none()) if alias_user_name: s.delete(alias_user_name) s.commit() botsend(message, '{}のエイリアス名から `{}` を削除しました'.format(user_name, alias_name)) else: botsend(message, '{}のエイリアス名 `{}` は登録されていません'.format(user_name, alias_name))
def show_user_alias_name(message, user_name=None): """ユーザーのエイリアス名一覧を表示する :param message: slackbotの各種パラメータを保持したclass :param str user: Slackのユーザー名 """ if user_name: slack_id = get_slack_id_by_name(user_name) else: slack_id = message.body['user'] user_name = get_user_name(slack_id) if not slack_id: botsend(message, '{}に紐づくSlackのuser_idは存在しません'.format(user_name)) return s = Session() alias_names = [ user.alias_name for user in s.query(UserAliasName).filter( UserAliasName.slack_id == slack_id) ] pt = PrettyTable(['ユーザー名', 'Slack ID', 'エイリアス名']) alias_name = ','.join(alias_names) pt.add_row([user_name, slack_id, alias_name]) botsend(message, '```{}```'.format(pt))
def alias_name(message, user_name, alias_name=None): """指定したユーザにエイリアス名を紐付ける :param message: slackbotの各種パラメータを保持したclass :param str user_name: エイリアス名を紐付けるSlackユーザー :param str alias_name: Slackユーザーに紐付けるエイリアス名 alias_nameがNoneの場合、user_nameをalias_nameとして扱う 上記の場合user_nameは投稿者となる """ if alias_name: # ユーザー名とエイリアス名が指定されているパターン slack_id = get_slack_id_by_name(user_name) else: # 投稿者のエイリアス名を更新するパターン alias_name = user_name slack_id = message.body['user'] user_name = get_user_name(slack_id) user = get_slack_id_by_name(alias_name) if user: botsend(message, '`{}` はユーザーが存在しているので使用できません'.format(alias_name)) return if not slack_id: botsend(message, '{}に紐づくSlackのuser_idは存在しません'.format(user_name)) return s = Session() alias_user_name = (s.query(UserAliasName).filter( UserAliasName.alias_name == alias_name)) if s.query(alias_user_name.exists()).scalar(): botsend(message, 'エイリアス名 `{}` は既に登録されています'.format(alias_name)) return s.add(UserAliasName(slack_id=slack_id, alias_name=alias_name)) s.commit() botsend(message, '{}のエイリアス名に `{}` を追加しました'.format(user_name, alias_name))
def get_slack_id(session, user_name): """指定したユーザー名のSlackのuser_idを返す Slackのユーザー名として存在すればAPIからuser_idを取得 取得できない場合、user_alias_nameにエイリアス名として登録されたユーザー名であれば、 それに紐づくSlackのuser_idを返す :params session: sqlalchemy.orm.Session :params str name: ユーザーのエイリアス名 """ slack_id = get_slack_id_by_name(user_name) if not slack_id: slack_id = (session.query(UserAliasName.slack_id).filter( UserAliasName.alias_name == user_name).scalar()) return slack_id