X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=turbot%2Fpuzzle.py;h=316620c085da5d8936d808f06ec0e747a8c88c26;hb=58422543a8aeba8e9011403fc49049d3c3730a33;hp=b9aa1ec40bcc44acaa2238123a2f052d04c92184;hpb=8e9a333cdc4118878bdf6ece9ee7456644fd1342;p=turbot diff --git a/turbot/puzzle.py b/turbot/puzzle.py index b9aa1ec..316620c 100644 --- a/turbot/puzzle.py +++ b/turbot/puzzle.py @@ -223,6 +223,12 @@ def puzzle_matches_all(puzzle, patterns): def puzzle_id_from_name(name): return re.sub(r'[^a-zA-Z0-9_]', '', name).lower() +def round_id_from_name(name): + """Normalize and abbreviate round name for use as a prefix + in a channel name.""" + + return re.sub(r'[^a-zA-Z0-9_]', '', name).lower()[:7] + def puzzle_sort_key(puzzle): """Return an appropriate sort key for a puzzle in the database @@ -281,30 +287,25 @@ def puzzle_channel_description(puzzle): state = puzzle.get('state', None) description = ( - "Discussion to solve the puzzle \"{}\".\n".format(puzzle['name']) + "Puzzle: \"{}\".\n".format(puzzle['name']) ) + links = '' if url: - description += "See the <{}|Original puzzle>\n".format(url) + links += " <{}|Original puzzle> ".format(url) if sheet_url: - description += ( - "Actual solving work takes place in the " - + "<{}|shared spreadsheet>\n".format(sheet_url) - ) + links += " <{}|Sheet>".format(sheet_url) + + if links: + description += "Links:{}\n".format(links) if tags: - description += "This puzzle has the following tags: {}\n".format( + description += "Tags: {}\n".format( " ".join(["`{}`".format(t) for t in tags])) if state: - description += "This puzzle has a state of: {}\n".format(state) - - description += ( - "You can see a summary of this information at any point " - + "by issuing the `/puzzle` command and you can edit any of " - + "this information by issuing the `/edit` command" - ) + description += "State: {}\n".format(state) return description @@ -313,7 +314,7 @@ def puzzle_channel_name(puzzle): round = '' if 'rounds' in puzzle: - round = '-' + puzzle_id_from_name(puzzle['rounds'][0]) + round = '-' + round_id_from_name(puzzle['rounds'][0]) meta = '' if puzzle.get('type', 'plain') == 'meta': @@ -369,6 +370,9 @@ def puzzle_update_channel_and_sheet(turb, puzzle, old_puzzle=None): old_channel_description = puzzle_channel_description(old_puzzle) if channel_description != old_channel_description: + # Slack also only allows 250 characters for a description + if len(channel_description) > 250: + channel_description = channel_description[:247] + "..." turb.slack_client.conversations_setPurpose(channel=channel_id, purpose=channel_description)