Skip to content

Commit 0480dfa

Browse files
feat: enhance ecosystem documentation and add new Discord bot entries
1 parent 9144139 commit 0480dfa

21 files changed

+306
-75
lines changed

astro.config.mts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,11 +272,21 @@ export default defineConfig({
272272
icon: 'puzzle',
273273
id: 'ecosystem',
274274
items: [
275+
{
276+
label: getTranslations('ecosystem-overview').en,
277+
translations: getTranslations('ecosystem-overview'),
278+
link: '/ecosystem',
279+
},
275280
{
276281
label: getTranslations('ecosystem-packages').en,
277282
translations: getTranslations('ecosystem-packages'),
278283
autogenerate: { directory: 'ecosystem/packages' },
279284
},
285+
{
286+
label: getTranslations('ecosystem-bots').en,
287+
translations: getTranslations('ecosystem-bots'),
288+
autogenerate: { directory: 'ecosystem/bots' },
289+
}
280290
],
281291
},
282292
{

src/components/Integration.astro

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,10 @@ interface Props {
77
githubURL: string;
88
released?: boolean;
99
isPlugin?: boolean;
10-
publiclyUsable?: boolean;
1110
experimental?: boolean;
1211
}
1312
14-
const {
15-
title,
16-
githubURL,
17-
released = true,
18-
isPlugin = false,
19-
publiclyUsable = false,
20-
experimental = false,
21-
} = Astro.props;
13+
const { title, githubURL, released = true, isPlugin = false, experimental = false } = Astro.props;
2214
2315
function parsePackageName(packageName: string): {
2416
scoped: boolean;
@@ -44,8 +36,7 @@ function parsePackageName(packageName: string): {
4436
const { scoped, scope, name } = parsePackageName(title);
4537
4638
const generateBadgeMeta = (
47-
isPlugin: boolean,
48-
publiclyUsable: boolean
39+
isPlugin: boolean
4940
): {
5041
text: string;
5142
variant: 'tip' | 'success' | 'note' | 'danger' | 'caution' | 'default' | undefined;
@@ -62,16 +53,10 @@ const generateBadgeMeta = (
6253
variant: 'tip',
6354
};
6455
}
65-
if (publiclyUsable) {
66-
return {
67-
text: 'Publicly Usable',
68-
variant: 'caution',
69-
};
70-
}
7156
return null;
7257
};
7358
74-
const badgeMeta = generateBadgeMeta(isPlugin, publiclyUsable);
59+
const badgeMeta = generateBadgeMeta(isPlugin);
7560
7661
const showBadge = badgeMeta !== null;
7762
---

src/components/PackageCatalog.astro

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,10 @@ const packages = (await getCollection('package-catalog'))
4343
isPlugin,
4444
description,
4545
docsLink: href,
46-
publiclyUsable,
4746
experimental
4847
}, index) => (
4948
<Card fullWidth>
50-
<Integration {title} {githubURL} {released} {isPlugin} {publiclyUsable} {experimental} />
49+
<Integration {title} {githubURL} {released} {isPlugin} {experimental} />
5150

5251
<p>{description}</p>
5352

src/content.config.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ const packageCatalogSchema = z.object({
1515
.default('studiocms'),
1616
isPlugin: z.boolean().optional().default(false),
1717
experimental: z.boolean().optional().default(false),
18-
publiclyUsable: z.boolean().optional().default(false),
1918
released: z.boolean().optional().default(true),
2019
hidden: z.boolean().optional().default(false),
2120
});
@@ -31,6 +30,11 @@ const integrationSchema = baseSchema.extend({
3130
replaceTitle: z.boolean().optional().default(true),
3231
});
3332

33+
const botSchema = baseSchema.extend({
34+
type: z.literal('github'),
35+
githubURL: z.string(),
36+
});
37+
3438
const redirectSchema = baseSchema.extend({
3539
type: z.literal('redirect'),
3640
redirect: z.string(),
@@ -43,6 +47,7 @@ const i18nCustomSchema = z.object({
4347
'sponsors.sponsoredby': z.string().optional(),
4448
'package-catalog.readmore.start': z.string().optional(),
4549
'package-catalog.readmore.end': z.string().optional(),
50+
'package-catalog.no-packages': z.string().optional(),
4651
'quick-update': z.string().optional(),
4752
'integration-labels.changelog': z.string().optional(),
4853
'contributors.core-packages': z.string().optional(),
@@ -116,7 +121,7 @@ const i18nCustomSchema = z.object({
116121
'docsearch.noResultsScreen.reportMissingResultsLinkText': z.string(),
117122
});
118123

119-
export const docsCollectionSchema = z.union([baseSchema, integrationSchema, redirectSchema]);
124+
export const docsCollectionSchema = z.union([baseSchema, integrationSchema, redirectSchema, botSchema]);
120125

121126
export type DocsEntryData = z.infer<typeof docsCollectionSchema>;
122127

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
---
2+
i18nReady: true
3+
title: Apollo Discord Bot
4+
type: github
5+
githubURL: "https://github.com/withstudiocms/bots/tree/main/packages/apollo"
6+
description: "Apollo is a fully-configurable Discord Bot that helps with managing Discord Servers for OSS projects."
7+
tableOfContents:
8+
minHeadingLevel: 2
9+
maxHeadingLevel: 5
10+
---
11+
12+
Apollo is a fully-configurable Discord Bot that helps with managing Discord Servers for OSS projects. It is designed to help with common tasks such as managing support requests, sending PTAL announcements, and more.
13+
14+
## Tech Stack
15+
- Discord.js
16+
- Drizzle ORM
17+
- libSQL
18+
- GitHub API
19+
20+
## Commands
21+
22+
### `ptal`
23+
24+
- **Minimum Permission**: Moderate Members
25+
26+
Creates a PTAL announcement in the current channel and pings the notifications role (if configured).
27+
28+
### `settings`
29+
30+
- **Minimum Permission**: Administrator
31+
32+
Command which carries the sub-commands for configuring the bot.
33+
34+
#### `set-forum`
35+
36+
- **Minimum Permission**: Administrator
37+
38+
Allows you to configure the Forum to be used for support requests.
39+
40+
#### `set-ptal-role`
41+
42+
- **Minimum Permission**: Administrator
43+
44+
Sets the role that gets pinged when a new PTAL announcement is sent.
45+
46+
#### `set-join-role`
47+
48+
- **Minimum Permission**: Administrator
49+
50+
Sets the role that a user receives when they join the server.
51+
52+
#### `print`
53+
54+
- **Minimum Permission**: Administrator
55+
56+
Prints an overview of all settings.
57+
58+
### `solved`
59+
60+
- **Minimum Permission**: Moderate Members
61+
62+
Sends an embed with buttons so the OP of a support request can close it.
63+
64+
### `support`
65+
66+
- **Minimum Permission**: Moderate Members
67+
68+
Creates a new post in the support forum based on the message you supply.
Lines changed: 203 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,203 @@
1+
---
2+
i18nReady: true
3+
title: Artemis Discord Bot
4+
type: github
5+
githubURL: "https://github.com/withstudiocms/bots/tree/main/packages/artemis"
6+
description: "Artemis Bot for StudioCMS"
7+
tableOfContents:
8+
minHeadingLevel: 2
9+
maxHeadingLevel: 6
10+
---
11+
12+
Artemis is a powerful Effect based discord bot that is designed to interact with your Discord community and your Github Organization. Built for StudioCMS, open sourced for anyone to tweak to their hearts content.
13+
14+
## Tech Stack
15+
- Effect-TS
16+
- Effect dfx
17+
- Drizzle ORM
18+
- libSQL
19+
- GroqAI API
20+
- GitHub API
21+
- Algolia
22+
23+
## Features
24+
25+
- Auto-threader bot
26+
- BlueSky discord repeater
27+
- Contribute Embed
28+
- Crowdin PTAL from repo dispatch
29+
- Docs Search with Algolia
30+
- Custom Event bus (primarily for HTTP -> discord communication)
31+
- GitHub issue from message app interaction
32+
- GitHub issue from thread command
33+
- No-Embed bot (stop people's messages from having embeds)
34+
- PTAL Service
35+
- Stars Graph
36+
- HTTP webserver for assets and webhook handling
37+
- `@` ping replies with AI interactions
38+
39+
## Services
40+
41+
### Auto-Threader
42+
43+
Automatically create threads from every message in a channel
44+
45+
To enable auto-threading in a channel, an administrator must add `[threads]` to the channel topic.
46+
47+
### No-Embed
48+
49+
Prevents embeds from appearing in messages in a channel.
50+
51+
To enable no-embed in a channel, an administrator must add `[noembed]` to the channel topic.
52+
53+
### Crowdin PTAL
54+
55+
Automatically dispatch PTAL notifications when a Crowdin pull request is created.
56+
57+
To enable Crowdin PTAL dispatch in a channel, an administrator must set up a repository dispatch event in their GitHub repository with the action type `crowdin.create` and the appropriate payload. Also requires the PTAL service to be configured in the server.
58+
59+
## Commands
60+
61+
### `bluesky`
62+
63+
- **Minimum Permission**: Administrator
64+
65+
Manage BlueSky account tracking and settings for this server.
66+
67+
#### `list`
68+
69+
- **Minimum Permission**: Administrator
70+
71+
Lists all BlueSky accounts currently being tracked in this server.
72+
73+
#### `subscribe <account> <top_level> <replies> <reposts>`
74+
75+
- **Minimum Permission**: Administrator
76+
77+
Subscribes the current channel to updates from the specified BlueSky account. The parameters `top_level`, `replies`, and `reposts` are booleans indicating whether to track those types of posts.
78+
79+
#### `unsubscribe <account>`
80+
81+
- **Minimum Permission**: Administrator
82+
83+
Unsubscribes the current channel from updates from the specified BlueSky account.
84+
85+
#### `settings`
86+
87+
- **Minimum Permission**: Administrator
88+
89+
View or modify BlueSky tracking settings for this server.
90+
91+
##### `post_channel <channel>`
92+
93+
- **Minimum Permission**: Administrator
94+
95+
Sets the channel where BlueSky updates will be posted.
96+
97+
##### `ping_role [role] [enable]`
98+
99+
- **Minimum Permission**: Administrator
100+
101+
Sets the role to ping for BlueSky updates and whether to enable or disable the ping.
102+
103+
##### `view`
104+
105+
- **Minimum Permission**: Administrator
106+
107+
Views the current BlueSky tracking settings for this server.
108+
109+
### `contribute`
110+
111+
- **Minimum Permission**: N/A
112+
113+
Creates a contributing guide embed for the current channel.
114+
115+
### `crowdin-setup`
116+
117+
- **Minimum Permission**: Administrator
118+
119+
Set up a Crowdin embed in the current channel for a specified repository.
120+
121+
#### `set <owner> <repo>`
122+
123+
- **Minimum Permission**: Administrator
124+
125+
Set up a new Crowdin embed listener in the current channel for the specified GitHub repository.
126+
127+
#### `remove <owner> <repo>`
128+
129+
- **Minimum Permission**: Administrator
130+
131+
Remove the Crowdin embed from the current channel for the specified GitHub repository.
132+
133+
#### `list`
134+
135+
- **Minimum Permission**: Administrator
136+
137+
List all Crowdin embeds in the current channel.
138+
139+
### `docs <query> [hidden=false] [language=en]`
140+
141+
- **Minimum Permission**: N/A
142+
143+
Search the docs for a specific query using the Algolia Docsearch API.
144+
145+
### `issue-from-thread <repository> <type> [title]`
146+
147+
- **Minimum Permission**: N/A
148+
149+
Create a GitHub issue from the current thread in the specified repository. The `type` parameter indicates the type of issue, and an optional `title` can be provided.
150+
151+
### `issue-settings`
152+
153+
- **Minimum Permission**: Administrator
154+
155+
Manage issue command settings for this server.
156+
157+
#### `add-repo <repository> <owner> <label>`
158+
159+
- **Minimum Permission**: Administrator
160+
161+
Add a repository to the issue command allow list.
162+
163+
#### `remove-repo <repository-label>`
164+
165+
- **Minimum Permission**: Administrator
166+
167+
Removes a repository from the issue command allow list.
168+
169+
#### `list-repos`
170+
171+
- **Minimum Permission**: Administrator
172+
173+
List all repositories in the issue command allow list.
174+
175+
### `ptal <github-url> <description>`
176+
177+
- **Minimum Permission**: N/A
178+
179+
Sends a PTAL (Please Take A Look) notification for a pull request with the provided GitHub URL and description.
180+
181+
### `ptal-settings`
182+
183+
- **Minimum Permission**: Administrator
184+
185+
Configure the PTAL service for this server.
186+
187+
#### `set-ping-role <role>`
188+
189+
- **Minimum Permission**: Administrator
190+
191+
Set the role to ping for PTAL notifications.
192+
193+
#### `view-settings`
194+
195+
- **Minimum Permission**: Administrator
196+
197+
View the current PTAL settings for this server.
198+
199+
### `stars-graph <repository> [public=false]`
200+
201+
- **Minimum Permission**: N/A
202+
203+
Generate a star history graph for a GitHub repository. The repository should be in the format `owner/repo` (e.g., `facebook/react`). The optional `public` parameter indicates whether the generated graph should be publicly accessible.

0 commit comments

Comments
 (0)