Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
b21e892
Initial work for ClaireLang
Sidpatchy Apr 30, 2024
0511ca2
Some
Sidpatchy May 6, 2024
34ce769
Probably a bad idea
Sidpatchy May 7, 2024
06707f4
Some 2
Sidpatchy May 7, 2024
20ee529
Bump deps
Sidpatchy Aug 17, 2024
852c87c
Update lang_en-US.yml
Sidpatchy Aug 23, 2024
a0cb074
Merge branch 'main' into ClaireLang
Sidpatchy Sep 27, 2024
ca35404
Progress
Sidpatchy Dec 20, 2024
6d8b803
Make Kotlin use Java 17
Sidpatchy Dec 20, 2024
eaf8650
halp, I no know how read docs
Sidpatchy Dec 21, 2024
a1d7704
IT'S HAPPENING
Sidpatchy Feb 14, 2025
2cb0471
thing
Sidpatchy Feb 16, 2025
b676153
Fix API breakages
Sidpatchy Feb 17, 2025
20d6e8a
will the ci build it now?
Sidpatchy Feb 17, 2025
094ddce
Update lang_TEMPLATE.yml
Sidpatchy Feb 17, 2025
00be347
Misc. cleanup
Sidpatchy Feb 17, 2025
9f79b0d
some more work
Sidpatchy Feb 18, 2025
e4be84d
docs: add code of conduct
Sidpatchy Feb 19, 2025
bd411c4
fix: make ClaireBot build again
Sidpatchy May 1, 2025
b348b04
feat: more progress on clairelang implementation
Sidpatchy May 1, 2025
dd1e74f
fix: remove my attempt at making AI do this
Sidpatchy May 1, 2025
87d1979
feat: more localization work
Sidpatchy May 6, 2025
8a7d1b7
chore: remove message cache code
Sidpatchy Aug 26, 2025
dea19c0
chore: remove old clairelang files
Sidpatchy Aug 26, 2025
9d84071
chore: remove missed message cache code
Sidpatchy Aug 26, 2025
ce4acc0
feat: command embeds fully localized
Sidpatchy Aug 26, 2025
5ce35c3
feat: (mostly) finalize English language file
Sidpatchy Sep 20, 2025
3327fb1
feat: update/fix placeholders
Sidpatchy Sep 20, 2025
10e1f67
feat: finalize(?) localization
Sidpatchy Sep 21, 2025
27fee42
feat: add machine-translated es-ES language file
Sidpatchy Sep 21, 2025
dc478f8
feat: add machine-translated ja-JP language file
Sidpatchy Sep 21, 2025
09c3ca8
chore: update lang_TEMPLATE.yml
Sidpatchy Sep 21, 2025
1faa848
docs: pull docs into main repo from ClaireBot-docs
Sidpatchy Oct 13, 2025
82e0223
docs: pull docs into main repo from ClaireBot-docs
Sidpatchy Oct 13, 2025
5fe50e9
Merge remote-tracking branch 'origin/docs' into docs
Sidpatchy Oct 13, 2025
6a3cbe7
Merge pull request #9 from Sidpatchy/docs
Sidpatchy Oct 13, 2025
820a667
docs: fix openapi.yml path
Sidpatchy Oct 14, 2025
aa87a8f
refactor: target JDK 24, bump deps, & replace SnakeYAML
Sidpatchy Oct 14, 2025
a7ee79d
refactor: move to JDK 25 & replace Kotlin data class with Java record
Sidpatchy Oct 14, 2025
0d90a02
refactor: update build.gradle to remove warnings about gradle 10
Sidpatchy Oct 14, 2025
3243ff6
chore(release): 3.4.0-alpha.1
Sidpatchy Oct 14, 2025
d073097
fix: update robin & log4j2 config
Sidpatchy Oct 14, 2025
2f52b19
chore(release): 3.4.0-alpha.2
Sidpatchy Oct 14, 2025
9e44b97
fix: remove trailing slashes from API endpoints
Sidpatchy Oct 14, 2025
fd6f665
chore(release): 3.4.0-alpha.3
Sidpatchy Oct 14, 2025
694f328
feat: urlbuilder for API classes
Sidpatchy Oct 14, 2025
d80fa28
chore(release): 3.4.0-alpha.4
Sidpatchy Oct 14, 2025
d2cd777
refactor: mark legacy error methods as deprecated
Sidpatchy Oct 15, 2025
1190b71
fix: multiple regressions eliminated
Sidpatchy Oct 15, 2025
929c226
chore(release): 3.4.0-alpha.5
Sidpatchy Oct 15, 2025
b0a8de1
fix: cb.user.id.accentcolour placeholder
Sidpatchy Oct 16, 2025
ed0d2c5
fix: ensure /config updates and displays channel changes correctly
Sidpatchy Oct 16, 2025
44ba9f1
fix: regression where LanguageManager attempts to access lang_und.yml
Sidpatchy Oct 16, 2025
f4d570c
chore(release): 3.4.0-alpha.6
Sidpatchy Oct 16, 2025
33c314f
feat: base64 encode poll and santa IDs to save characters
Sidpatchy Oct 16, 2025
63cde32
refactor: santa embed generation and logic
Sidpatchy Oct 16, 2025
9ced633
fix: voting and translation issues
Sidpatchy Oct 16, 2025
ea4f369
chore(release): 3.4.0-alpha.7
Sidpatchy Oct 16, 2025
a9939a9
refactor: code cleanup
Sidpatchy Oct 16, 2025
1e0457e
refactor: remove deprecated ErrorEmbed methods
Sidpatchy Oct 17, 2025
be70c0a
feat: add workflow for selecting user's preferred language
Sidpatchy Oct 17, 2025
ce7772b
feat: server language selection + enforced guild locale with fallback
Sidpatchy Oct 17, 2025
224ed85
chore(release): 3.4.0-beta.1
Sidpatchy Oct 17, 2025
4da8efe
feat: add en_GB
Sidpatchy Oct 17, 2025
bb0d7fa
fix: file name
Sidpatchy Oct 17, 2025
d447aad
feat: add en_PIRATE
Sidpatchy Oct 17, 2025
2801c1a
feat: add en-CORP
Sidpatchy Oct 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions Writerside/c.list
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE categories
SYSTEM "https://resources.jetbrains.com/writerside/1.0/categories.dtd">
<categories>
<category id="wrs" name="Writerside documentation" order="1"/>
</categories>
57 changes: 57 additions & 0 deletions Writerside/cd.tree
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE instance-profile
SYSTEM "https://resources.jetbrains.com/writerside/1.0/product-profile.dtd">

<instance-profile id="cd"
name="ClaireBot Docs"
start-page="overview.md">

<toc-element topic="overview.md"/>
<toc-element topic="Contributing-guide.md"/>
<toc-element toc-title="ClaireBot">
<toc-element toc-title="Commands">
<toc-element topic="8ball.md"/>
<toc-element topic="avatar.md"/>
<toc-element topic="help.md"/>
<toc-element topic="info.md"/>
<toc-element topic="leaderboard.md"/>
<toc-element topic="level.md"/>
<toc-element topic="poll.md"/>
<toc-element topic="quote.md"/>
<toc-element topic="server.md"/>
<toc-element topic="user.md"/>
<toc-element topic="config.md">
<toc-element topic="config-user.md"/>
<toc-element topic="config-server.md"/>
</toc-element>
<toc-element topic="santa.md"/>
</toc-element>
<toc-element toc-title="Administrator's Guide">
<toc-element topic="Requests-Channel.md"/>
</toc-element>
</toc-element>
<toc-element toc-title="ClaireData">
<toc-element topic="API_Reference.md">
<toc-element toc-title="User">
<toc-element topic="Get_all_users.md"/>
<toc-element topic="Create_new_user.md"/>
<toc-element topic="Get_user_by_ID.md"/>
<toc-element topic="Update_user.md"/>
<toc-element topic="Delete_user.md"/>
</toc-element>
<toc-element toc-title="Guild">
<toc-element topic="Get_all_guilds.md"/>
<toc-element topic="Create_new_guild.md"/>
<toc-element topic="Get_guild_by_ID.md"/>
<toc-element topic="Update_guild.md"/>
<toc-element topic="Delete_guild.md"/>
</toc-element>
</toc-element>
</toc-element>
<toc-element toc-title="ClaireBot Docker"/>
<toc-element toc-title="Planning">
<toc-element topic="Beyond-Javacord.md"/>
<toc-element topic="Interface-Standardization-1.md"/>
</toc-element>
<toc-element topic="Archived-Overview.md"/>
</instance-profile>
13 changes: 13 additions & 0 deletions Writerside/cfg/buildprofiles.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE buildprofiles SYSTEM "https://resources.jetbrains.com/writerside/1.0/build-profiles.dtd">
<buildprofiles xsi:noNamespaceSchemaLocation="https://resources.jetbrains.com/writerside/1.0/build-profiles.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<variables></variables>
<build-profile instance="cd">
<variables>
<noindex-content>true</noindex-content>
</variables>
</build-profile>

</buildprofiles>
7 changes: 7 additions & 0 deletions Writerside/cfg/glossary.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE terms SYSTEM "https://resources.jetbrains.com/writerside/1.0/glossary.dtd">
<terms>
<term name="foo">
Description of what "foo" is.
</term>
</terms>
17 changes: 17 additions & 0 deletions Writerside/redirection-rules.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rules SYSTEM "https://resources.jetbrains.com/writerside/1.0/redirection-rules.dtd">
<rules>
<!-- format is as follows
<rule id="<unique id>">
<accepts>page.html</accepts>
</rule>
-->
<rule id="60b89e5">
<description>Created after removal of "wasd" from ClaireBot Docs</description>
<accepts>wasd.html</accepts>
</rule>
<rule id="67efe74a">
<description>Created after removal of "Command" from ClaireBot Docs</description>
<accepts>Command.html</accepts>
</rule>
</rules>
21 changes: 21 additions & 0 deletions Writerside/topics/8ball.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# /8ball

8ball is exactly what it sounds like, though it's worth noting that ClaireBot only speaks in truth. Remember kids,
flesh betrays, ClaireBot will not.

## Command

### Syntax

```shell
/8ball [query]
```

### Options

query
: The question you wish to consult ClaireBot about.

<seealso>
<!--Provide links to related how-to guides, overviews, and tutorials.-->
</seealso>
3 changes: 3 additions & 0 deletions Writerside/topics/Archived-Overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Archived

This section contains various bits and bobs that are not particularly relevant anymore, but are retained for posterity.
24 changes: 24 additions & 0 deletions Writerside/topics/Beyond-Javacord.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Beyond Javacord

Since day one, ClaireBot 3 has been based on Javacord due to it being the easiest Java-based Discord API wrapper
to work with. As far as I am concerned, that remains true today. On top of that, it has great documentation
and a lovely community.

Despite how much I like Javacord, I recognize one major issue with it:
it's development has come to a complete standstill.

**This leaves me with two realistic options**:
1. Contribute to Javacord and work to bring it up to date.
2. Migrate to a different API wrapper (JDA, Discord4J, etc.)

## Option #1: Contributing to Javacord
In an ideal world, this is the path I'd choose, however, Javacord is quite out of date at this point, and I'd rather
put that effort into improving ClaireBot or working on one of my various other hobbies... which I have too many of.

Javacord is currently using the latest Discord API version (v10, see: [Javacord.java](https://github.com/Javacord/Javacord/blob/aa5afd1dde791a8811ccdbc881b44d29cb629699/javacord-api/src/main/java/org/javacord/api/Javacord.java#L95) and [Discord Develpoer Portal](https://discord.com/developers/docs/reference)),
sooooo it wouldn't be completely out of the realm of reason to implement new features.

## Option #2:
From a quick glance, Discord4J seems like the best option if ClaireBot were to switch libraries. It uses Spring's Mono
classes which _can_ be converted to CompletableFuture. This would hopefully eliminate the need to do major rewrites to
large parts of ClaireBot as structure could remain quite similar.
178 changes: 178 additions & 0 deletions Writerside/topics/Contributing-guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
# Contributing

We welcome pull requests!

<!-- omit in toc -->
# Contributing to ClaireBot

First off, thanks for taking the time to contribute! ❤️

All types of contributions are encouraged and valued. See the [Table of Contents](#table-of-contents) for different ways to help and details about how this project handles them. Please make sure to read the relevant section before making your contribution. It will make it a lot easier for us maintainers and smooth out the experience for all involved. The community looks forward to your contributions. 🎉

> And if you like the project, but just don't have time to contribute, that's fine. There are other easy ways to support the project and show your appreciation, which we would also be very happy about:
> - Star the project
> - Tweet about it
> - Refer this project in your project's readme
> - Mention the project at local meetups and tell your friends/colleagues

<!-- omit in toc -->
## Table of Contents

- [I Have a Question](#i-have-a-question)
- [I Want To Contribute](#i-want-to-contribute)
- [Reporting Bugs](#reporting-bugs)
- [Suggesting Enhancements](#suggesting-enhancements)
- [Your First Code Contribution](#your-first-code-contribution)
- [Improving The Documentation](#documentation)
- [Styleguide](#style-guides)
- [Commit Messages](#commit-messages)
- [Documentation](#documentation)
- [Join The Project Team](#join-the-project-team)



## I Have a Question

> If you want to ask a question, we assume that you have read the available [Documentation](https://docs.clairebot.net).

Before you ask a question, it is best to search for existing [Issues](https://github.com/Sidpatchy/ClaireBot/issues) that might help you. In case you have found a suitable issue and still need clarification, you can write your question in this issue. It is also advisable to search the internet for answers first.

If you then still feel the need to ask a question and need clarification, we recommend the following:

- Open an [Issue](https://github.com/Sidpatchy/ClaireBot/issues/new).
- Provide as much context as you can about what you're running into.
- Provide project and platform versions (nodejs, npm, etc), depending on what seems relevant.

We will then take care of the issue as soon as possible.

<!--
You might want to create a separate issue tag for questions and include it in this description. People should then tag their issues accordingly.

Depending on how large the project is, you may want to outsource the questioning, e.g. to Stack Overflow or Gitter. You may add additional contact and information possibilities:
- IRC
- Slack
- Gitter
- Stack Overflow tag
- Blog
- FAQ
- Roadmap
- E-Mail List
- Forum
-->

## I Want To Contribute

> ### Legal Notice <!-- omit in toc -->
> When contributing to this project, you must agree that you have authored 100% of the content, that you have the necessary rights to the content and that the content you contribute may be provided under the project licence.

### Reporting Bugs

<!-- omit in toc -->
#### Before Submitting a Bug Report

A good bug report shouldn't leave others needing to chase you up for more information. Therefore, we ask you to investigate carefully, collect information and describe the issue in detail in your report. Please complete the following steps in advance to help us fix any potential bug as fast as possible.

- Make sure that you are using the latest version.
- Determine if your bug is really a bug and not an error on your side e.g. using incompatible environment components/versions (Make sure that you have read the [documentation](https://docs.clairebot.net). If you are looking for support, you might want to check [this section](#i-have-a-question)).
- To see if other users have experienced (and potentially already solved) the same issue you are having, check if there is not already a bug report existing for your bug or error in the [bug tracker](https://github.com/Sidpatchy/ClaireBot/issues?q=label%3Abug).
- Also make sure to search the internet (including Stack Overflow) to see if users outside of the GitHub community have discussed the issue.
- Collect information about the bug:
- Stack trace (Traceback)
- OS, Platform and Version (Windows, Linux, macOS, x86, ARM)
- Version of the interpreter, compiler, SDK, runtime environment, package manager, depending on what seems relevant.
- Possibly your input and the output
- Can you reliably reproduce the issue? And can you also reproduce it with older versions?

<!-- omit in toc -->
#### How Do I Submit a Good Bug Report?

> You must never report security related issues, vulnerabilities or bugs including sensitive information to the issue tracker, or elsewhere in public. Instead sensitive bugs must be sent by email to <security@sidpatchy.com>.
<!-- You may add a PGP key to allow the messages to be sent encrypted as well. -->

We use GitHub issues to track bugs and errors. If you run into an issue with the project:

- Open an [Issue](https://github.com/Sidpatchy/ClaireBot/issues/new). (Since we can't be sure at this point whether it is a bug or not, we ask you not to talk about a bug yet and not to label the issue.)
- Explain the behavior you would expect and the actual behavior.
- Please provide as much context as possible and describe the *reproduction steps* that someone else can follow to recreate the issue on their own. This usually includes your code. For good bug reports you should isolate the problem and create a reduced test case.
- Provide the information you collected in the previous section.

Once it's filed:

- The project team will label the issue accordingly.
- A team member will try to reproduce the issue with your provided steps. If there are no reproduction steps or no obvious way to reproduce the issue, the team will ask you for those steps and mark the issue as `needs-repro`. Bugs with the `needs-repro` tag will not be addressed until they are reproduced.
- If the team is able to reproduce the issue, it will be marked `needs-fix`, as well as possibly other tags (such as `critical`), and the issue will be left to be [implemented by someone](#your-first-code-contribution).

<!-- You might want to create an issue template for bugs and errors that can be used as a guide and that defines the structure of the information to be included. If you do so, reference it here in the description. -->


### Suggesting Enhancements

This section guides you through submitting an enhancement suggestion for ClaireBot, **including completely new features and minor improvements to existing functionality**. Following these guidelines will help maintainers and the community to understand your suggestion and find related suggestions.

<!-- omit in toc -->
#### Before Submitting an Enhancement

- Make sure that you are using the latest version.
- Read the [documentation](https://docs.clairebot.net) carefully and find out if the functionality is already covered, maybe by an individual configuration.
- Perform a [search](https://github.com/Sidpatchy/ClaireBot/issues) to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one.
- Find out whether your idea fits with the scope and aims of the project. It's up to you to make a strong case to convince the project's developers of the merits of this feature. Keep in mind that we prefer features that will be useful to the majority of our users and not just a small subset. Features like these will be prioritized lower.

<!-- omit in toc -->
#### How Do I Submit a Good Enhancement Suggestion?

Enhancement suggestions are tracked as [GitHub issues](https://github.com/Sidpatchy/ClaireBot/issues).

- Use a **clear and descriptive title** for the issue to identify the suggestion.
- Provide a **step-by-step description of the suggested enhancement** in as many details as possible.
- **Describe the current behavior** and **explain which behavior you expected to see instead** and why. At this point you can also tell which alternatives do not work for you.
- You may want to **include screenshots or screen recordings** which help you demonstrate the steps or point out the part which the suggestion is related to. You can use [LICEcap](https://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and the built-in [screen recorder in GNOME](https://help.gnome.org/users/gnome-help/stable/screen-shot-record.html.en) or [SimpleScreenRecorder](https://github.com/MaartenBaert/ssr) on Linux.
- **Explain why this enhancement would be useful** to most ClaireBot users. You may also want to point out the other projects that solved it better and which could serve as inspiration.

<!-- You might want to create an issue template for enhancement suggestions that can be used as a guide and that defines the structure of the information to be included. If you do so, reference it here in the description. -->

### Your First Code Contribution
<!-- TODO
include Setup of env, IDE and typical getting started instructions?

-->

ClaireBot is primarily developed using IntelliJ IDEA. Other IDEs are acceptable, they are just not documented here due
to the maintainer's unfamiliarity with them.

#### Setting Up a Working Copy of ClaireBot
You have two main options for setting up ClaireBot.

##### ClaireBot Docker
The easiest way to set up ClaireBot/ClaireData is to use the Docker container provided at
[Sidpatchy/ClaireBot-Docker](https://github.com/Sidpatchy/ClaireBot-Docker). The repo includes documentation in the
README.md for getting started. It is written with Linux in mind, so if you're on Windows, you'll want to look into
WSL2 or Docker Desktop.

##### Manually Setting Up ClaireBot


## Style Guides
### Commit Messages
We prefer [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) to keep changelogs tidy:
```
feat: A new feature
fix: A bug fix
docs: Documentation changes
style: Code formatting or style adjustments (no functional changes)
refactor: Code restructuring without altering behavior
test: Adding or modifying tests
chore: Maintenance tasks or tooling updates
```

### Documentation
- Submit pull requests to [Sidpatchy/ClaireBot-docs](https://github.com/Sidpatchy/ClaireBot-Docs)
- Avoid using terms like 'simply', 'easy', and 'just'
- If someone's reading the docs, it's not 'simple'
- See: [https://justsimply.dev/](https://justsimply.dev/)

## Join The Project Team
<!-- TODO -->

<!-- omit in toc -->
## Attribution
This guide is based on the [contributing.md](https://contributing.md/generator)!
23 changes: 23 additions & 0 deletions Writerside/topics/Interface-Standardization-1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Interface Standardization and Updates #1
A place to document various interface changes that need to occur.

## Issue #1
ClaireBot currently uses a mix of CamelCase and kebab-case in user-facing resources. This should be standardized
to kebab-case.

Internal naming will retain CamelCase (variable names, etc.). All user-facing elements need to be transitioned
to kebab-casing.

## Issue #2
/help command info should include a link to the relevant documentation webpage. This is blocked pending completion of
the documentation for all commands.

Will either need to update Robin's implementation of the commands.yml standard, or just pull that implementation into
ClaireBot.

## Issue #3
What happens if there is no requests channel??? I'm pretty sure ClaireBot will just throw an error and to the user,
fail completely silently. This is very poor user experience.

## Issue #4
/user doesn't do very much right now. More fields should be considered for addition.
27 changes: 27 additions & 0 deletions Writerside/topics/Requests-Channel.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Requests Channel

The requests channel for a server is determined via the following steps:
<ul>
<li>Getting a Request Channel:
<ul>
<li><b>Step 1</b>: Check ClaireData API
<ul>
<li><b>Success</b>: Use the configured channel</li>
<li><b>Failure</b>: Move to Step 2</li>
</ul>
</li>
<li><b>Step 2</b>: Search for Default Channel
<ul>
<li>Look for channel named "requests"
<ul>
<li><b>Found</b>: Use this channel</li>
<li><b>Not Found</b>: Request fails</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>

If no channel is found, the /request will fail.
Loading