diff --git a/homeassistant/components/github/coordinator.py b/homeassistant/components/github/coordinator.py index ae3c9b5dc87..10f30bb1006 100644 --- a/homeassistant/components/github/coordinator.py +++ b/homeassistant/components/github/coordinator.py @@ -39,6 +39,17 @@ query ($owner: String!, $repository: String!) { watchers(first: 1) { total: totalCount } + discussion: discussions( + first: 1 + orderBy: {field: CREATED_AT, direction: DESC} + ) { + total: totalCount + discussions: nodes { + title + url + number + } + } issue: issues( first: 1 states: OPEN diff --git a/homeassistant/components/github/sensor.py b/homeassistant/components/github/sensor.py index 75284b2ccd3..a09e440e2ce 100644 --- a/homeassistant/components/github/sensor.py +++ b/homeassistant/components/github/sensor.py @@ -44,6 +44,14 @@ class GitHubSensorEntityDescription(BaseEntityDescription, BaseEntityDescription SENSOR_DESCRIPTIONS: tuple[GitHubSensorEntityDescription, ...] = ( + GitHubSensorEntityDescription( + key="discussions_count", + name="Discussions", + native_unit_of_measurement="Discussions", + entity_category=EntityCategory.DIAGNOSTIC, + state_class=SensorStateClass.MEASUREMENT, + value_fn=lambda data: data["discussion"]["total"], + ), GitHubSensorEntityDescription( key="stargazers_count", name="Stars", @@ -96,6 +104,16 @@ SENSOR_DESCRIPTIONS: tuple[GitHubSensorEntityDescription, ...] = ( "url": data["default_branch_ref"]["commit"]["url"], }, ), + GitHubSensorEntityDescription( + key="latest_discussion", + name="Latest Discussion", + avabl_fn=lambda data: data["discussion"]["discussions"], + value_fn=lambda data: data["discussion"]["discussions"][0]["title"][:255], + attr_fn=lambda data: { + "url": data["discussion"]["discussions"][0]["url"], + "number": data["discussion"]["discussions"][0]["number"], + }, + ), GitHubSensorEntityDescription( key="latest_release", name="Latest Release", diff --git a/tests/components/github/fixtures/graphql.json b/tests/components/github/fixtures/graphql.json index 8fe1b17022a..52b0e6ccfd6 100644 --- a/tests/components/github/fixtures/graphql.json +++ b/tests/components/github/fixtures/graphql.json @@ -19,6 +19,16 @@ "watchers": { "total": 9 }, + "discussion": { + "total": 1, + "discussions": [ + { + "title": "First discussion", + "url": "https://github.com/octocat/Hello-World/discussions/1347", + "number": 1347 + } + ] + }, "issue": { "total": 1, "issues": [