* adding typescript packages for typeORM * add typeORM initial files * updating package scripts * updating compose.yaml to have an exposed port for the postgres * modifying setup for typeORM * update database stuff and and package.json to help generate migrations * made models and migrations in typeORM * delete unneeded database.js * made database pattern ignored by jest * remove sequelize * separate member repo from member helper * not sure why i made everything numbers in the model but it's fixed now * edited package.json script * remove unused index.ts * adjusted files to reference repository correctly and appdatasource * made appdatasource export as named * removed start-db script * added init to appdatasource in bot.js * migrations finally! * new migration matching model names I want * updating tests * removing testpathignore patterns since it seems to be unecessary? * adjusting migrations to match current schema * removed reference to secrets file * delete old migration * Revert "delete old migration" This reverts commit db1efa39a7a80d8976878856250ccaac6a753ab2. * Revert "adjusting migrations to match current schema" This reverts commit ef89a83f6a2ef0643d6ace0a3fcf9c40f4bc6dd6. * just deleted system creation since it's got nothing in it anyway * renamed memberRepository to memberRepo for consistency * added await back to parseMemberCommand call to memberArgumentHandler * changed call to memberHelper.getMembersByAuthor to memberRepo * renamed repo updateMemberValue to updateMemberField * removed throw references in repo docstrings * remove unneeded subscriber directory ref * changed createdAt and updatedAt columns to be auto-generated made member table have timezone * changed casing of isInitialized in mock for bot.js * removed % from ILike query so that it doesn't match substrings/wildcard * renamed some stray updateMemberValue in mocks -> updateMemberField --------- Co-authored-by: Aster Fialla <asterfialla@gmail.com>
PluralFlux
PluralFlux is a proxybot akin to PluralKit and Tupperbox, but for Fluxer. It is written with the Fluxer.js library.
If it's not running at the moment, it's because my computer crashed or something. I'm looking to move running it to a somewhat more permanent solution.
Commands
All commands are prefixed by pf;. Currently only a few are implemented.
-
pf;help- Sends the current list of commands. -
pf;import- Imports from PluralKit using the JSON file provided by their export command. Importing from other proxy bots is TBD.pf;importand attach your JSON file to the message. This will only save the fields that are present in the bot currently, not anything else like birthdays or system handles (yet?). Only one proxy can be set per member currently." -
pf;member- Accesses the sub-commands related to editing proxy members. The available subcommands are:-
new- Creates a new member to proxy with, for example:pf;member new jane. The member name should ideally be short so you can write other commands with it easily. The order of values ispf;member new [name] [displayname] [proxy] [propic], without brackets. The name is required, but the rest are optional. Usage notes:- If anything has spaces, put it in quotes:
"Jane Doe" - If anything is unset, and you want to set something after it (for ex: you haven't set a display name, but you want to add a proxy), put the unset value in empty quotes in the same position: "" If you leave it out, the bot will set things wrong.
- The maximum length of a display name is 32 characters.
- You can't use the same proxy for two different members.
- You can also upload an image directly instead of using a url. Examples:
- Full example:
pf;member new jane "Jane Doe" J:text https://cdn.pixabay.com/photo/2023/10/20/19/07/aster-8330078_1280.jpg - Example with gaps: `pf;member new bob "Bob he/him" "" https://cdn.pixabay.com/photo/2016/05/09/11/09/tennis-1381230_1280.jpg
- If anything has spaces, put it in quotes:
-
remove- Removes a member based on their name, for example:pf;member remove jane. -
name- Updates the name for a specific member based on their current name, for ex:pf;member john name jane. The member name should ideally be short so you can write other commands with it easily. -
list- Lists all members in the system. -
displayname- Updates the display name for a specific member based on their name, for example:pf;member jane "Jane Doe | ze/hir".This can be up to 32 characters long. If it has spaces, put it in double quotes. -
propic- Updates the profile picture for the member. Must be in JPG, PNG, or WEBP format and less than 10MB. The two options are:- Pass in a direct remote image URL, for example:
pf;member jane propic <https://cdn.pixabay.com/photo/2020/05/02/02/54/animal-5119676_1280.jpg>. You can upload images on sites like https://imgbb.com/. - Upload an attachment directly. NOTE: Fluxer does not save your attachments forever, so option #1 is recommended.
- Pass in a direct remote image URL, for example:
-
proxyUpdates the proxy tag for a specific member based on their name. The proxy must be formatted with the tags surrounding the word 'text', for example:pf;member jane proxy Jane:textorpf;member amal proxy A{text}This is so the bot can detect what the proxy tags are. Only one proxy can be set per member currently.
-
Upcoming
Check for, and add, feature requests in the Issues tracker.
LLM note
I do not use LLMs or other GenAI to generate code, nor do I ever plan to. Very rarely, I ask questions of LLMs to troubleshoot bugs after search engines/StackOverflow/friends' knowledge has failed me, but that should lessen even more over time. As well, I used the Docker "Gordon" LLM to fix the many errors in my initial docker compose, but now that I have a devops person helping me, that should never happen again.