Skip to content
Draft

v4 #597

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
6d952f8
The beginning
Sayrix Apr 9, 2026
bfb0f29
build(deps): add @discordjs packages
Sayrix Apr 11, 2026
dc612c0
feat(core): setup custom handling framework
Sayrix Apr 11, 2026
6450257
refactor(bot): build app-based lifecycle
Sayrix Apr 11, 2026
8ba7384
feat(license): add LICENSE and NOTICE files with AGPL-3.0-only details
Sayrix Apr 11, 2026
81ee66e
build: update dependencies and typescript config
Sayrix Apr 15, 2026
e232c1c
refactor(core): enhance command discovery and state schemas
Sayrix Apr 15, 2026
899828c
feat(tickets): implement interactive panel workflows
Sayrix Apr 15, 2026
b40985b
chore: format
Sayrix Apr 16, 2026
343b0d5
feat(core): auto-deploy commands on ready event
Sayrix Apr 16, 2026
b4624fe
feat(tickets): pin welcome message on ticket creation
Sayrix Apr 16, 2026
d3561bd
feat(tickets): support authenticated transcripts and styling options
Sayrix Apr 16, 2026
c41714b
refactor(commands): rename massadd to mass_add and sort imports
Sayrix Apr 16, 2026
320ff63
fix(config): add quiet option to dotenv configuration
Sayrix Apr 16, 2026
10fbeb7
feat(core): configure bot presence and update template docs
Sayrix Apr 16, 2026
dc277da
feat(tickets): support dynamic form answers in welcome templates
Sayrix Apr 16, 2026
4828b14
Add license notice to all relevant files for Ticket-Bot
Sayrix Apr 16, 2026
870fe63
feat(config): add per-type close message overrides
Sayrix Apr 16, 2026
d40a3e5
feat(messages): add default ticket response messages
Sayrix Apr 16, 2026
fecd4fa
feat(core): add colored logging output
Sayrix Apr 17, 2026
eb2474d
feat(events): add startup environment validation
Sayrix Apr 17, 2026
6ae1e40
feat(core): track version and check for updates
Sayrix Apr 17, 2026
631935c
feat(logs): add ticket audit logging service and templates
Sayrix Apr 17, 2026
4acb484
feat(tickets): integrate audit logging into actions
Sayrix Apr 17, 2026
30fce8f
refactor(messages): simplify text display components
Sayrix Apr 17, 2026
b332a82
refactor(tickets): restructure message component traversal
Sayrix Apr 17, 2026
fa7f118
chore(workspace): add DOM lib and dictionary words
Sayrix Apr 17, 2026
8863806
feat(telemetry): add anonymous tracking service
Sayrix Apr 17, 2026
aaaa8d8
refactor(tickets): optimize ticket closing process and improve permis…
Sayrix Apr 18, 2026
dbc0779
feat(core): implement i18n localization system
Sayrix Apr 19, 2026
baf60c0
feat(tickets): integrate i18n in ticket workflows
Sayrix Apr 19, 2026
330b7e6
feat(commands): use localized strings in Slash commands
Sayrix Apr 19, 2026
fb51414
refactor(messages): migrate templates to dynamic i18n functions
Sayrix Apr 19, 2026
88d23f9
chore(dependencies): update package versions and schema in configurat…
Sayrix Apr 19, 2026
69a78e4
fix(tickets): resolve type issue in action row map
Sayrix Apr 19, 2026
7089cdd
feat(docker): add Dockerfile and docker-compose for containerization
Sayrix Apr 19, 2026
c4f0ae6
refactor(tickets): allow unicode characters in channel names
Sayrix Apr 19, 2026
5927251
feat(readme): add README file
Sayrix Apr 19, 2026
3a75f78
feat(attribution): update bot status and ensure application attributi…
Sayrix Apr 19, 2026
f3f0455
chore(github): update code owners and fix typos
Sayrix Apr 19, 2026
90a0abb
build(core): migrate tooling to cross-runtime environment
Sayrix Apr 19, 2026
8360b29
refactor(core): adapt code and internals for multi-runtime support
Sayrix Apr 19, 2026
8cd468f
feat(readme): use GitHub wikis instead of Docusaurus for the v4 docs
Sayrix Apr 25, 2026
762f7cd
feat(migration): add v3 config and database migration scripts
Sayrix Apr 25, 2026
24bf442
feat(config): update .gitignore to include config files and add examp…
Sayrix Apr 25, 2026
5525642
fix(panel): clear select interaction state on error
Sayrix Apr 25, 2026
963340e
fix(tickets): force UI component refresh on workflow
Sayrix Apr 25, 2026
1681b42
fix(telemetry): reduce telemetry send interval from 5 minutes to 1 mi…
Sayrix Apr 28, 2026
fb90749
build: replace custom build scripts with tsc and resolve-tspaths
Sayrix Apr 29, 2026
1a8e673
refactor: remove unused deploy-commands-cli script
Sayrix Apr 29, 2026
e71e98f
ci(github): migrate workflows and dependabot to bun
Sayrix Apr 29, 2026
885a36f
refactor: type interaction response bodies
Sayrix Apr 30, 2026
d66488d
refactor: type message template slots
Sayrix Apr 30, 2026
910b9e9
refactor: remove redundant fetch casts
Sayrix Apr 30, 2026
d30378b
refactor: reuse panel opener helper
Sayrix Apr 30, 2026
2e31393
refactor: extract modal text parsing
Sayrix Apr 30, 2026
169d5c5
refactor: use direct BotApp type
Sayrix Apr 30, 2026
19b6f5e
refactor: build BotApp with object literal
Sayrix Apr 30, 2026
94cbba2
chore: update dependencies to latest versions
Sayrix May 1, 2026
279462f
feat(ticketpm): hoist the TicketPmUploadClient creation in order to h…
Sayrix May 1, 2026
a35a3d7
chore: add .vscode/ to .gitignore
Sayrix May 3, 2026
7d314ae
Delete .vscode/settings.json
Sayrix May 3, 2026
cfab49f
chore: remove .data/.gitkeep and update .gitignore to exclude the ent…
Sayrix May 3, 2026
d7bee3f
Merge branch 'v4' of https://github.com/Sayrix/Ticket-Bot into v4
Sayrix May 3, 2026
d5095d0
feat: add escapeDiscordMarkdown utility function and use it to saniti…
Sayrix May 3, 2026
11918f6
feat: create the folder where the db file lives if it does not exist
Sayrix May 3, 2026
8d31c1e
chore: run format:fix
Sayrix May 3, 2026
aed78ff
fix(tickets-panel): keep panel opener inside components v2 container
Sayrix May 5, 2026
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
7 changes: 7 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
.git
.github
.vscode
node_modules
.data
config/.env
dist
5 changes: 0 additions & 5 deletions .env.example

This file was deleted.

11 changes: 0 additions & 11 deletions .eslintignore

This file was deleted.

28 changes: 0 additions & 28 deletions .eslintrc.json

This file was deleted.

14 changes: 7 additions & 7 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# Main Source
/src/ @sayrix @zhiyan114
/config/ @sayrix @zhiyan114
/messages/ @sayrix @zhiyan114

# Docker files
dockerfile @zhiyan114
/docker_run.sh @zhiyan114
/docker-compose.yml @zhiyan114

# Database schema
/prisma/* @zhiyan114
Dockerfile @sayrix
/docker-compose.yml @sayrix

# Langs
/locales/ @sayrix
/i18n/ @sayrix

# All other files
* @sayrix
2 changes: 1 addition & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

version: 2
updates:
- package-ecosystem: "npm" # See documentation for possible values
- package-ecosystem: "bun" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
48 changes: 23 additions & 25 deletions .github/workflows/builder.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,39 +11,37 @@ permissions:
contents: read

jobs:
main:
checks:
runs-on: ubuntu-latest

strategy:
matrix:
os: [ubuntu-latest]
node-version: [18]

steps:
- uses: actions/checkout@v3
- name: Checkout
uses: actions/checkout@v4
with:
persist-credentials: false

- uses: actions/setup-node@v3
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
node-version: ${{ matrix.node-version }}
bun-version: latest

- name: Cache node_modules
id: cache-node_modules
uses: actions/cache@v3
with:
path: node_modules
key: node_modules-${{ matrix.os }}-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}
- name: Install dependencies
run: bun install --frozen-lockfile

- name: Typecheck
run: bun run typecheck

- name: i18n
run: bun run i18n

- name: Lint
run: bun run lint

- name: npm i
if: steps.cache-node_modules.outputs.cache-hit != 'true' || github.event_name == 'pull_request'
run: npm i --no-audit --force
- name: Format
run: bun run format

- name: ESLint
run: npm run lint:check
- name: Drizzle
run: bunx drizzle-kit check

- name: build
run: npm run build --if-present

- name: Prisma
run: npx prisma generate
- name: Build
run: bun run build
18 changes: 7 additions & 11 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
node_modules
config.jsonc
token.json
dist
.env
*.db
node_modules/
dist/

.vscode/

test.sql
__pycache__/
*.py[cod]
local_settings.py
.venv
config/.env*
config/config.ts*

.data/
12 changes: 0 additions & 12 deletions .prettierignore

This file was deleted.

9 changes: 0 additions & 9 deletions .prettierrc

This file was deleted.

8 changes: 8 additions & 0 deletions .typesafe-i18n.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"adapters": [],
"$schema": "https://unpkg.com/typesafe-i18n@5.27.1/schema/typesafe-i18n.json",
"baseLocale": "en",
"outputPath": "./i18n",
"esmImports": true,
"banner": "// biome-ignore-all lint: autogenerated file"
}
17 changes: 17 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
FROM oven/bun:1

WORKDIR /app

COPY package.json bun.lock ./
RUN bun install --frozen-lockfile
RUN bun run drizzle:push

COPY . .

# Keep the SQLite target directory available even before the bind mount exists.
RUN mkdir -p /app/.data

ENV NODE_ENV=production


CMD ["bun", "run", "start"]
Loading
Loading