|
| 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