Exemplo n.º 1
0
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"))
Exemplo n.º 2
0
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()