Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream'
Browse files Browse the repository at this point in the history
  • Loading branch information
Rodebrechtd committed Oct 8, 2024
2 parents c758565 + 5c46cf9 commit fa1ac52
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 36 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ambassador_reminder.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@ jobs:

- name: Build and run the ambassador reminder bot
env:
AMBASSADOR_REMINDER_WEBHOOK: ${{ secrets.AMBASSADOR_REMINDER_WEBHOOK }}
AMBASSADOR_REMINDER_DISCORD_WEBHOOK: ${{ secrets.AMBASSADOR_REMINDER_DISCORD_WEBHOOK }}
run: |
docker compose run --env AMBASSADOR_REMINDER_WEBHOOK=$AMBASSADOR_REMINDER_WEBHOOK --entrypoint "sh -c 'python3 ambassador_reminder.py'" lilypad_assistant
docker compose run --env AMBASSADOR_REMINDER_DISCORD_WEBHOOK=$AMBASSADOR_REMINDER_DISCORD_WEBHOOK --entrypoint "sh -c 'python3 ambassador_reminder.py'" lilypad_assistant
48 changes: 26 additions & 22 deletions oss_issues.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import random
from utils.git import fetch_all_issues
from utils.discord import send_discord_message
from vars import OSS_DISCORD_WEBHOOK, GIT_API_URL
from vars import OSS_DISCORD_WEBHOOK, GIT_API_URLS

# GitHub
params_open = {'state': 'open', 'per_page': 100, 'page': 1}
# GitHub parameters for open issues
params_open = {'state': 'open', 'per_page': 100}

# Load encouragement messages from file
def load_encouragement_messages(filename):
Expand All @@ -21,11 +21,16 @@ def format_issues(issues, status):
message.append(f"{i}. [{issue['title']}](<{issue['url']}>) ({assignees})")
return '\n'.join(message)
else:
return f"No {status.lower()} community issues:"
return f"No {status.lower()} community issues."

def process_open_issues():
open_issues = fetch_all_issues(GIT_API_URL, params_open)

open_issues = []

# Fetch issues from all repositories
for api_url in GIT_API_URLS:
repo_issues = fetch_all_issues(api_url, params_open)
open_issues.extend(repo_issues)

community_assigned_issues = []
community_unassigned_issues = []

Expand All @@ -40,30 +45,29 @@ def process_open_issues():
assignee_names = assignees if assignees else ["Unassigned"]

if has_community_tag:
issue_data = {
'title': issue_title,
'url': issue_url,
'assignees': assignee_names
}
if assignee_names == ["Unassigned"]:
community_unassigned_issues.append({
'title': issue_title,
'url': issue_url,
'assignees': assignee_names
})
community_unassigned_issues.append(issue_data)
else:
community_assigned_issues.append({
'title': issue_title,
'url': issue_url,
'assignees': assignee_names
})
community_assigned_issues.append(issue_data)

# Choose a random encouragement message
encouragement_messages = load_encouragement_messages('oss_encouragement_messages.txt')
encouragement_message = random.choice(encouragement_messages)

# Prepare the content for Discord message (for open issues)
open_issues_message = (encouragement_message + "\n\n" +
format_issues(community_unassigned_issues, "**Unassigned**") +
"\n\n" +
format_issues(community_assigned_issues, "**Assigned**"))
open_issues_message = (
f"{encouragement_message}\n\n"
f"{format_issues(community_unassigned_issues, '**Unassigned**')}\n\n"
f"{format_issues(community_assigned_issues, '**Assigned**')}"
)

send_discord_message(OSS_DISCORD_WEBHOOK, open_issues_message)

# Process open issues
process_open_issues()
if __name__ == "__main__":
process_open_issues()
19 changes: 13 additions & 6 deletions oss_leaderboard.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
from collections import defaultdict
from utils.git import fetch_all_issues
from utils.discord import send_discord_message
from vars import OSS_DISCORD_WEBHOOK, GIT_API_URL
from vars import OSS_DISCORD_WEBHOOK, GIT_API_URLS

# GitHub
params_closed = {'state': 'closed', 'per_page': 100, 'page': 1}
# GitHub parameters for closed issues
params_closed = {'state': 'closed', 'per_page': 100}

# Assign badges based on the number of issues solved
def assign_badge(count):
Expand Down Expand Up @@ -55,7 +55,13 @@ def format_leaderboard_with_progress(sorted_assignees):

# Fetch closed issues and build the leaderboard
def generate_leaderboard():
closed_issues = fetch_all_issues(GIT_API_URL, params_closed)
closed_issues = []

# Fetch issues from all repositories
for api_url in GIT_API_URLS:
repo_issues = fetch_all_issues(api_url, params_closed)
closed_issues.extend(repo_issues)

solved_issues_by_assignee = defaultdict(int)

for issue in closed_issues:
Expand All @@ -72,5 +78,6 @@ def generate_leaderboard():

leaderboard_message = format_leaderboard_with_progress(sorted_assignees)
send_discord_message(OSS_DISCORD_WEBHOOK, leaderboard_message)

generate_leaderboard()

if __name__ == "__main__":
generate_leaderboard()
12 changes: 8 additions & 4 deletions utils/git.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,23 @@
# utils/git.py
import requests

# Function to fetch all issues (open or closed) based on the parameters
def fetch_all_issues(api_url, params):
all_issues = []
params_copy = params.copy() # Copy params to avoid modifying the original
params_copy['page'] = 1 # Start from the first page

while True:
response = requests.get(api_url, params=params)
response = requests.get(api_url, params=params_copy)
if response.status_code != 200:
print("Failed to retrieve the issues data.")
exit()
print(f"Failed to retrieve the issues data from {api_url}. Status code: {response.status_code}")
break # Optionally handle retries or exit

issues = response.json()
if not issues:
break # No more issues

all_issues.extend(issues)
params['page'] += 1 # Move to next page
params_copy['page'] += 1 # Move to next page

return all_issues
8 changes: 6 additions & 2 deletions vars.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
import os

# GitHub API URL for the repository
GIT_API_URL = "https://api.github.com/repos/Lilypad-Tech/lilypad/issues"
# GitHub API URLs for the repositories
GIT_API_URLS = [
"https://api.github.com/repos/Lilypad-Tech/lilypad/issues",
"https://api.github.com/repos/Lilypad-Tech/community-bots/issues"
]

# Discord webhook URL (you can set your actual webhook URL here)
OSS_DISCORD_WEBHOOK = os.getenv('OSS_DISCORD_WEBHOOK')
POW_MONITORING_WEBHOOK = os.getenv('POW_DISCORD_WEBHOOK')
AMBASSADOR_REMINDER_WEBHOOK = os.getenv('AMBASSADOR_REMINDER_DISCORD_WEBHOOK')

# Discord Roles
LILYTEAM_DISCORD_ROLE = "<@&1212902935969669140>"
LILYPAD_ADVOCATE_DISCORD_ROLE = "<@&1255696024161226783>"
Expand Down

0 comments on commit fa1ac52

Please sign in to comment.