def get_emoji_dict(token: str) -> Dict[str, str]: client = WebClient(token=token) try: response = client.emoji_list() except SlackApiError as e: # You will get a SlackApiError if "ok" is False assert e.response["ok"] is False print("Got an error: ", e) raise e return cast(Dict[str, str], response.get("emoji"))
async def view_submission(request: Request): form = await request.form() payload = ViewSubmissionPayload.parse_raw(form['payload']) try: team_conf = TeamConf.get(payload.team.id) except TeamConf.DoesNotExist: return Response(status_code=HTTPStatus.BAD_REQUEST) if payload.view.callback_id == 'edit_emoji_set': emojis: Dict[str, str] = {block_id: v[block_id]['value'] for block_id, v in payload.view.state.values.items()} client = WebClient(team_conf.access_token) slack_registered_emoji_list = list(client.emoji_list().get('emoji').keys()) unicode_emoji_list = list(map(lambda x: x.strip(':'), emoji.unicode_codes.EMOJI_UNICODE_ENGLISH.keys())) available_emoji_list = slack_registered_emoji_list + unicode_emoji_list errors = {} for key, value in emojis.items(): if value is None: continue if value.strip(':') not in available_emoji_list: errors[key] = '登録されていないemojiです' if len(errors): return {'response_action': 'errors', "errors": errors} team_conf.emoji_set = set(map(lambda x: x.strip(':'), filter(lambda x: x, list(emojis.values())))) team_conf.save() return Response()