We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Updating Slack "Staff PRs" notifications to be more specific
<!-- IMPORTANT: Before posting, be sure to redact or remove sensitive data, such as passwords, secret keys, session cookies, etc. -->

When our daily slack bot runs to tell us of new staff PRs we want to ignore: 
- `needs:submitter`
- `draft`
- `blocked`

<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->

### Describe the problem that you'd like solved
<!-- A clear and concise description of what you want to happen. -->

### Proposal & Constraints
<!-- What is the proposed solution / implementation? Is there a precedent of this approach succeeding elsewhere? -->

<!-- Which suggestions or requirements should be considered for how feature needs to appear or be implemented? -->

### Additional context
<!-- Add any other context or screenshots about the feature request here. -->

### Stakeholders
<!-- @ tag stakeholders of this bug -->




--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `scripts/pr_slack_digest.py`
Content:
```
1 from datetime import datetime
2 import requests
3 import os
4 
5 
6 def send_slack_message(message: str):
7     response = requests.post(
8         'https://slack.com/api/chat.postMessage',
9         headers={
10             'Authorization': f"Bearer {os.environ.get('SLACK_TOKEN')}",
11             'Content-Type': 'application/json;  charset=utf-8',
12         },
13         json={
14             'channel': '#team-abc-plus',
15             'text': message,
16         },
17     )
18     if response.status_code != 200:
19         print(f"Failed to send message to Slack. Status code: {response.status_code}")
20     else:
21         print("Message sent to Slack successfully!")
22         print(response.content)
23 
24 
25 if __name__ == "__main__":
26     GH_LOGIN_TO_SLACK = {
27         'cdrini': '<@cdrini>',
28         'jimchamp': '<@U01ARTHG9EV>',
29         'mekarpeles': '<@mek>',
30         'scottbarnes': '<@U03MNR6T7FH>',
31     }
32     LABEL_EMOJI = {
33         'Priority: 0': '🚨 ',
34         'Priority: 1': '❗️ ',
35     }
36     # apparently `author` acts like an OR in this API and only this API -_-
37     query = "repo:internetarchive/openlibrary is:open is:pr author:cdrini author:jimchamp author:mekarpeles author:scottbarnes -is:draft"
38     prs = requests.get(
39         "https://api.github.com/search/issues",
40         params={
41             "q": query,
42         },
43     ).json()["items"]
44 
45     message = f"{len(prs)} open staff PRs:\n\n"
46     for pr in prs:
47         pr_url = pr['html_url']
48         pr_age_days = (
49             datetime.now() - datetime.strptime(pr['created_at'], '%Y-%m-%dT%H:%M:%SZ')
50         ).days
51         message += f"<{pr_url}|*#{pr['number']}* | {pr['title']}>\n"
52         message += ' | '.join(
53             [
54                 f"by {pr['user']['login']} {pr_age_days} days ago",
55                 f"Assigned: {GH_LOGIN_TO_SLACK[pr['assignee']['login']] if pr['assignee'] else '⚠️ None'}",
56                 f"{', '.join(LABEL_EMOJI.get(label['name'], '') + label['name'] for label in pr['labels'])}\n\n",
57             ]
58         )
59 
60     send_slack_message(message)
61
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/scripts/pr_slack_digest.py b/scripts/pr_slack_digest.py
--- a/scripts/pr_slack_digest.py
+++ b/scripts/pr_slack_digest.py
@@ -33,8 +33,18 @@
         'Priority: 0': '🚨 ',
         'Priority: 1': '❗️ ',
     }
+
+    INCLUDE_AUTHORS = ['mekarpeles', 'cdrini', 'scottbarnes', 'jimchamp']
+    EXCLUDE_LABELS = [
+        'Needs: Submitter Input',
+        'State: Blocked',
+    ]
+    query = 'repo:internetarchive/openlibrary is:open is:pr -is:draft'
     # apparently `author` acts like an OR in this API and only this API -_-
-    query = "repo:internetarchive/openlibrary is:open is:pr author:cdrini author:jimchamp author:mekarpeles author:scottbarnes -is:draft"
+    included_authors = " ".join([f"author:{author}" for author in INCLUDE_AUTHORS])
+    excluded_labels = " ".join([f'-label:"{label}"' for label in EXCLUDE_LABELS])
+    query = f'{query} {included_authors} {excluded_labels}'
+
     prs = requests.get(
         "https://api.github.com/search/issues",
         params={

{"golden_diff": "diff --git a/scripts/pr_slack_digest.py b/scripts/pr_slack_digest.py\n--- a/scripts/pr_slack_digest.py\n+++ b/scripts/pr_slack_digest.py\n@@ -33,8 +33,18 @@\n         'Priority: 0': '\ud83d\udea8 ',\n         'Priority: 1': '\u2757\ufe0f ',\n     }\n+\n+    INCLUDE_AUTHORS = ['mekarpeles', 'cdrini', 'scottbarnes', 'jimchamp']\n+    EXCLUDE_LABELS = [\n+        'Needs: Submitter Input',\n+        'State: Blocked',\n+    ]\n+    query = 'repo:internetarchive/openlibrary is:open is:pr -is:draft'\n     # apparently `author` acts like an OR in this API and only this API -_-\n-    query = \"repo:internetarchive/openlibrary is:open is:pr author:cdrini author:jimchamp author:mekarpeles author:scottbarnes -is:draft\"\n+    included_authors = \" \".join([f\"author:{author}\" for author in INCLUDE_AUTHORS])\n+    excluded_labels = \" \".join([f'-label:\"{label}\"' for label in EXCLUDE_LABELS])\n+    query = f'{query} {included_authors} {excluded_labels}'\n+\n     prs = requests.get(\n         \"https://api.github.com/search/issues\",\n         params={\n", "issue": "Updating Slack \"Staff PRs\" notifications to be more specific\n<!-- IMPORTANT: Before posting, be sure to redact or remove sensitive data, such as passwords, secret keys, session cookies, etc. -->\r\n\r\nWhen our daily slack bot runs to tell us of new staff PRs we want to ignore: \r\n- `needs:submitter`\r\n- `draft`\r\n- `blocked`\r\n\r\n<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->\r\n\r\n### Describe the problem that you'd like solved\r\n<!-- A clear and concise description of what you want to happen. -->\r\n\r\n### Proposal & Constraints\r\n<!-- What is the proposed solution / implementation? Is there a precedent of this approach succeeding elsewhere? -->\r\n\r\n<!-- Which suggestions or requirements should be considered for how feature needs to appear or be implemented? -->\r\n\r\n### Additional context\r\n<!-- Add any other context or screenshots about the feature request here. -->\r\n\r\n### Stakeholders\r\n<!-- @ tag stakeholders of this bug -->\r\n\r\n\r\n\n", "before_files": [{"content": "from datetime import datetime\nimport requests\nimport os\n\n\ndef send_slack_message(message: str):\n    response = requests.post(\n        'https://slack.com/api/chat.postMessage',\n        headers={\n            'Authorization': f\"Bearer {os.environ.get('SLACK_TOKEN')}\",\n            'Content-Type': 'application/json;  charset=utf-8',\n        },\n        json={\n            'channel': '#team-abc-plus',\n            'text': message,\n        },\n    )\n    if response.status_code != 200:\n        print(f\"Failed to send message to Slack. Status code: {response.status_code}\")\n    else:\n        print(\"Message sent to Slack successfully!\")\n        print(response.content)\n\n\nif __name__ == \"__main__\":\n    GH_LOGIN_TO_SLACK = {\n        'cdrini': '<@cdrini>',\n        'jimchamp': '<@U01ARTHG9EV>',\n        'mekarpeles': '<@mek>',\n        'scottbarnes': '<@U03MNR6T7FH>',\n    }\n    LABEL_EMOJI = {\n        'Priority: 0': '\ud83d\udea8 ',\n        'Priority: 1': '\u2757\ufe0f ',\n    }\n    # apparently `author` acts like an OR in this API and only this API -_-\n    query = \"repo:internetarchive/openlibrary is:open is:pr author:cdrini author:jimchamp author:mekarpeles author:scottbarnes -is:draft\"\n    prs = requests.get(\n        \"https://api.github.com/search/issues\",\n        params={\n            \"q\": query,\n        },\n    ).json()[\"items\"]\n\n    message = f\"{len(prs)} open staff PRs:\\n\\n\"\n    for pr in prs:\n        pr_url = pr['html_url']\n        pr_age_days = (\n            datetime.now() - datetime.strptime(pr['created_at'], '%Y-%m-%dT%H:%M:%SZ')\n        ).days\n        message += f\"<{pr_url}|*#{pr['number']}* | {pr['title']}>\\n\"\n        message += ' | '.join(\n            [\n                f\"by {pr['user']['login']} {pr_age_days} days ago\",\n                f\"Assigned: {GH_LOGIN_TO_SLACK[pr['assignee']['login']] if pr['assignee'] else '\u26a0\ufe0f None'}\",\n                f\"{', '.join(LABEL_EMOJI.get(label['name'], '') + label['name'] for label in pr['labels'])}\\n\\n\",\n            ]\n        )\n\n    send_slack_message(message)\n", "path": "scripts/pr_slack_digest.py"}], "after_files": [{"content": "from datetime import datetime\nimport requests\nimport os\n\n\ndef send_slack_message(message: str):\n    response = requests.post(\n        'https://slack.com/api/chat.postMessage',\n        headers={\n            'Authorization': f\"Bearer {os.environ.get('SLACK_TOKEN')}\",\n            'Content-Type': 'application/json;  charset=utf-8',\n        },\n        json={\n            'channel': '#team-abc-plus',\n            'text': message,\n        },\n    )\n    if response.status_code != 200:\n        print(f\"Failed to send message to Slack. Status code: {response.status_code}\")\n    else:\n        print(\"Message sent to Slack successfully!\")\n        print(response.content)\n\n\nif __name__ == \"__main__\":\n    GH_LOGIN_TO_SLACK = {\n        'cdrini': '<@cdrini>',\n        'jimchamp': '<@U01ARTHG9EV>',\n        'mekarpeles': '<@mek>',\n        'scottbarnes': '<@U03MNR6T7FH>',\n    }\n    LABEL_EMOJI = {\n        'Priority: 0': '\ud83d\udea8 ',\n        'Priority: 1': '\u2757\ufe0f ',\n    }\n\n    INCLUDE_AUTHORS = ['mekarpeles', 'cdrini', 'scottbarnes', 'jimchamp']\n    EXCLUDE_LABELS = [\n        'Needs: Submitter Input',\n        'State: Blocked',\n    ]\n    query = 'repo:internetarchive/openlibrary is:open is:pr -is:draft'\n    # apparently `author` acts like an OR in this API and only this API -_-\n    included_authors = \" \".join([f\"author:{author}\" for author in INCLUDE_AUTHORS])\n    excluded_labels = \" \".join([f'-label:\"{label}\"' for label in EXCLUDE_LABELS])\n    query = f'{query} {included_authors} {excluded_labels}'\n\n    prs = requests.get(\n        \"https://api.github.com/search/issues\",\n        params={\n            \"q\": query,\n        },\n    ).json()[\"items\"]\n\n    message = f\"{len(prs)} open staff PRs:\\n\\n\"\n    for pr in prs:\n        pr_url = pr['html_url']\n        pr_age_days = (\n            datetime.now() - datetime.strptime(pr['created_at'], '%Y-%m-%dT%H:%M:%SZ')\n        ).days\n        message += f\"<{pr_url}|*#{pr['number']}* | {pr['title']}>\\n\"\n        message += ' | '.join(\n            [\n                f\"by {pr['user']['login']} {pr_age_days} days ago\",\n                f\"Assigned: {GH_LOGIN_TO_SLACK[pr['assignee']['login']] if pr['assignee'] else '\u26a0\ufe0f None'}\",\n                f\"{', '.join(LABEL_EMOJI.get(label['name'], '') + label['name'] for label in pr['labels'])}\\n\\n\",\n            ]\n        )\n\n    send_slack_message(message)\n", "path": "scripts/pr_slack_digest.py"}]}