Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
84ddf87
feat: nodify people to put role at top
UnbraveChimp May 16, 2026
95c0b1a
style(setup): small change on the setup summary
UnbraveChimp May 16, 2026
807b58e
refactor(heartbeat): improve kuma push monitor
UnbraveChimp May 16, 2026
b9a33c4
Update GitHub Sponsors usernames in FUNDING.yml
UnbraveChimp May 16, 2026
b6612e8
style: from arrow 1 to arrow 2
UnbraveChimp May 17, 2026
135014a
Merge branch 'main' of https://github.com/quest-organization/quest-bot
UnbraveChimp May 17, 2026
5293fad
Initial plan
Copilot May 17, 2026
7287533
Initial plan
Copilot May 17, 2026
cb48f27
fix: correct wording and spelling in CONTRIBUTING guide
Copilot May 17, 2026
d2affac
Merge pull request #69 from duck-organization/copilot/fix-heartbeat-p…
UnbraveChimp May 17, 2026
192832d
Merge pull request #70 from duck-organization/copilot/correct-capital…
UnbraveChimp May 17, 2026
a3c0d0a
fix: security vuln
UnbraveChimp May 17, 2026
cccbd22
Merge branch 'main' of https://github.com/quest-organization/quest-bot
UnbraveChimp May 17, 2026
a5fb3f8
chore: replace eslint with prettier and reformat codebase
UnbraveChimp May 17, 2026
efc0219
chore: add dependabot config
UnbraveChimp May 17, 2026
ee05d09
chore(deps-dev): bump typescript from 5.9.3 to 6.0.3
dependabot[bot] May 17, 2026
1073e7e
chore(deps-dev): bump @types/node from 22.19.19 to 25.8.0
dependabot[bot] May 17, 2026
71d943b
fix: security patch
UnbraveChimp May 17, 2026
d0e35e1
Merge pull request #75 from duck-organization/dependabot/npm_and_yarn…
UnbraveChimp May 17, 2026
1903b2f
Merge pull request #74 from duck-organization/dependabot/npm_and_yarn…
UnbraveChimp May 17, 2026
520f975
fix: security vuln
UnbraveChimp May 17, 2026
cfa9e20
fix(autorole): security vuln
UnbraveChimp May 17, 2026
c89fbd4
fix: security vulns
UnbraveChimp May 17, 2026
5d69bea
style: update readme
UnbraveChimp May 17, 2026
799705a
fix: setting perm
UnbraveChimp May 17, 2026
7bd1c91
fix: ping on reason
UnbraveChimp May 17, 2026
135d2a6
refactor(confessions): remove dead create-confession button handler
UnbraveChimp May 18, 2026
c574aad
fix: forgotten 2 cmds that need mention silencing
UnbraveChimp May 18, 2026
64c8e79
fix(automod): check guild
UnbraveChimp May 18, 2026
025bae1
chore(bot): prepare package for npm
UnbraveChimp May 18, 2026
72d959c
fix(docker): update package filter to renamed package name
UnbraveChimp May 18, 2026
6439c65
fix: sharder script
UnbraveChimp May 18, 2026
5095be4
fix: upd package version
UnbraveChimp May 18, 2026
b0d4bdc
fix: shard file processing
UnbraveChimp May 18, 2026
58c2a78
fix: env loading
UnbraveChimp May 18, 2026
62cdebb
chore: mark questbot package as private
UnbraveChimp May 18, 2026
e66eae7
fix: role hierarchy
UnbraveChimp May 18, 2026
98ab831
fix: permission checks purge/slowmode
UnbraveChimp May 18, 2026
76df561
fix: automod empty character
UnbraveChimp May 18, 2026
f091712
feat: /togif
UnbraveChimp May 19, 2026
cb9fa9c
chore(deps): bump ws from 8.20.0 to 8.20.1
dependabot[bot] May 19, 2026
4264c91
fix: upd modules + pnpm version
UnbraveChimp May 19, 2026
da6aae8
fix: remove stale dotenv
UnbraveChimp May 19, 2026
9772ba1
Merge pull request #76 from duck-organization/dependabot/npm_and_yarn…
UnbraveChimp May 19, 2026
f270d81
fix: max reminder length
UnbraveChimp May 19, 2026
3154de1
fix: limit directly from dc
UnbraveChimp May 19, 2026
c6f0f59
style(toGif): message
UnbraveChimp May 19, 2026
687f41a
style(readme): update image
UnbraveChimp May 19, 2026
55b3fc2
feat: image logging
UnbraveChimp May 19, 2026
e7a2438
style(contributing): commit message update
UnbraveChimp May 20, 2026
129a617
fix: small bugs + style
UnbraveChimp May 20, 2026
3770ac8
feat: security.md
UnbraveChimp May 20, 2026
8f2748a
style: funding
UnbraveChimp May 20, 2026
a4efc27
fix(warns): reply ephemeral
UnbraveChimp May 21, 2026
aad417a
Merge branch 'main' of https://github.com/duck-organization/questbot
UnbraveChimp May 21, 2026
699eade
fix: pages for automod and autorole
UnbraveChimp May 21, 2026
efa2a7d
fix: togif
UnbraveChimp May 21, 2026
c3ada7c
fix: togif safefetch
UnbraveChimp May 21, 2026
dda5aad
Merge branch 'dev' into main
UnbraveChimp May 21, 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
12 changes: 0 additions & 12 deletions .eslintrc.json

This file was deleted.

15 changes: 15 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# These are supported funding model platforms

github: duck-organization
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
polar: # Replace with a single Polar username
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
thanks_dev: # Replace with a single thanks.dev username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
Binary file added .github/assets/LargeDuckBanner.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed .github/assets/LargeDuckBannerWhite.png
Binary file not shown.
11 changes: 11 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
groups:
dependencies:
update-types:
- "minor"
- "patch"
1 change: 1 addition & 0 deletions .github/workflows/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ jobs:
if: >
(github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main') ||
(github.event.workflow_run.conclusion == 'success' &&
github.event.workflow_run.event == 'push' &&
github.event.workflow_run.head_branch == 'main')
steps:
- name: Check out repository
Expand Down
12 changes: 6 additions & 6 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
# Contributing to Quest Bot

Contributing to Quest Bot requires basic knowledge of Typescript, Discord.JS and prisma.
Contributing to Quest Bot requires basic knowledge of TypeScript, Discord.JS and Prisma.

## AI Rules

Please refrain from using AI to create new features. Using AI to help you *understand* how to make something is fine but you can't have it vibecode or make features for you. This is especially important for HackClub events. You can use AI to help *draft* a feature.
Please refrain from using AI to create new features. Using AI to help you *understand* how to make something is fine but you can't have it write code or make features for you. This is especially important for HackClub events. You can use AI to help *draft* a feature.

When commiting code you take *full* responsibility for what you are commiting.
When committing code you take *full* responsibility for what you are committing.

## Pull requests

Please submit pull requests to the `dev` branch, unless this is a feature which requires a seperate branch.
Please submit pull requests to the `dev` branch, unless this is a feature which requires a separate branch.
Make sure to test the code you have made before creating a pull request.
Format for commit messages, fix|upd|chore|dockerfile: (change made).
Use conventional commit messages for all commits.

> [!NOTE]
> When contributing to this project you agree that you have all rights to the content you have contributed and that these align with the projects license.
> When contributing to this project you agree that you have all rights to the content you have contributed and that these align with the project's license.

## Thanks for your interest! ❤️
6 changes: 3 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ COPY apps/bot/prisma ./apps/bot/prisma/
RUN pnpm install --frozen-lockfile

COPY . .
RUN pnpm --filter @quest/bot build
RUN pnpm --filter @duckorganization/questbot build

FROM node:24-alpine
WORKDIR /app
Expand All @@ -22,8 +22,8 @@ COPY pnpm-workspace.yaml ./
COPY apps/bot/package.json ./apps/bot/package.json
COPY apps/bot/prisma.config.ts ./apps/bot/prisma.config.ts
COPY apps/bot/prisma ./apps/bot/prisma/
RUN pnpm install --prod --frozen-lockfile --filter @quest/bot
RUN pnpm install --prod --frozen-lockfile --filter @duckorganization/questbot

COPY --from=builder /app/apps/bot/dist ./apps/bot/dist

CMD ["sh", "-c", "pnpm --filter @quest/bot db:push && pnpm --filter @quest/bot start"]
CMD ["sh", "-c", "pnpm --filter @duckorganization/questbot db:push && pnpm --filter @duckorganization/questbot start"]
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<div style="text-align: center;">

<img src=".github/assets/LargeDuckBannerWhite.png" alt="Duck Organization Banner" />
<img src=".github/assets/LargeDuckBanner.png" alt="Duck Organization Banner" />

---

Expand Down Expand Up @@ -38,6 +38,12 @@ Feel free to open a pull request! Just make sure to follow the guidelines at [CO
5. Run the development server with `pnpm dev`
6. The bot will register commands automatically on startup.

# Security

Quest Bot undergoes frequent security audits that help it stay safe!

If you ever find a security vulnerabitity, do not hesitate to make a report! We are more than happy to review it.

# License

This project is licensed under the Affero GNU General Public License v3.0 (AGPL-3.0). See LICENSE for more details.
Expand Down
28 changes: 28 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Security Policy

## Supported Versions

| Version | Supported |
| ------------ | ------------------ |
| Latest Tag | :white_check_mark: |

## Unsupported types of vulnerabilities

| Type | Supported |
| ------------- | ------------------ |
| Rate limits | :x: |
| Limits | :x: |
| DDOS/DOS | :x: |

If it is *critical* please submit it.

## Reporting a Vulnerability

Please report vulnerabilties through Github Advisories.

Don't be afraid to report a vulnerability! If we have to close it there are no consequences!

If a vulnerability is of high severity it will be looked into reasonably fast.
Vulnerabilties get accepted and denied all the time, if your vulnerability is denied
and you believe it was denied falsely than you can either reopen it or create a new one
if it is of high priority.
1 change: 1 addition & 0 deletions apps/bot/.prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
dist/
1 change: 1 addition & 0 deletions apps/bot/LICENSE
1 change: 1 addition & 0 deletions apps/bot/README.md
57 changes: 37 additions & 20 deletions apps/bot/package.json
Original file line number Diff line number Diff line change
@@ -1,42 +1,59 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@quest/bot",
"version": "0.1.0",
"name": "@duckorganization/questbot",
"version": "0.1.5",
"private": true,
"type": "module",
"description": "A Discord bot built with Sapphire framework",
"license": "AGPL-3.0-or-later",
"author": "Duck Organization",
"repository": {
"type": "git",
"url": "git+https://github.com/duck-organization/quest-bot.git"
},
"main": "./dist/index.js",
"bin": {
"questbot": "./dist/sharder.js"
},
"files": [
"dist",
"prisma/schema.prisma",
"README.md",
"LICENSE"
],
"scripts": {
"build": "rimraf dist && prisma generate && tsc",
"lint": "prettier --check . && eslint --ext .ts --format=pretty src",
"format": "prettier --write . && eslint --ext .ts --fix --format=pretty src",
"lint": "prettier --check .",
"format": "prettier --write .",
"predev": "pnpm build",
"start": "node --env-file-if-exists=../../.env dist/sharder.js",
"dev": "concurrently \"tsc --watch --preserveWatchOutput\" \"node --watch --watch-preserve-output --env-file-if-exists=../../.env dist/index.js\"",
"db:push": "prisma db push",
"db:generate": "prisma generate"
"db:generate": "prisma generate",
"postinstall": "prisma generate",
"prepublishOnly": "pnpm build"
},
"dependencies": {
"@discordjs/core": "^2.3.0",
"@prisma/adapter-pg": "^7.7.0",
"@prisma/client": "^7.7.0",
"@discordjs/core": "^2.4.0",
"@prisma/adapter-pg": "^7.8.0",
"@prisma/client": "^7.8.0",
"@sapphire/framework": "^5.5.0",
"@types/ms": "^2.1.0",
"discord.js": "^14.26.4",
"dotenv": "^17.4.2",
"ipaddr.js": "^2.4.0",
"ms": "^2.1.3",
"prisma": "^7.7.0",
"zod": "^4.3.6"
"prisma": "^7.8.0",
"sharp": "^0.34.5",

"zod": "^4.4.3"
},
"devDependencies": {
"@sapphire/ts-config": "^5.0.1",
"@types/node": "^22.18.8",
"@sapphire/ts-config": "^5.0.3",
"@types/node": "^25.8.0",
"concurrently": "^9.2.1",
"eslint": "^9.39.4",
"eslint-config-neon": "^0.2.7",
"eslint-formatter-compact": "^8.40.0",
"eslint-formatter-pretty": "^7.0.0",
"prettier": "^3.6.2",
"prettier": "^3.8.3",
"rimraf": "^6.1.3",
"typescript": "~5.9.3"
"typescript": "~6.0.3"
},
"engines": {
"node": ">=22.12.0"
Expand All @@ -46,4 +63,4 @@
"#lib/*": "./dist/lib/*",
"#prisma/*": "./dist/generated/prisma/*"
}
}
}
20 changes: 9 additions & 11 deletions apps/bot/prisma.config.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
// This file was generated by Prisma, and assumes you have installed the following:
// npm install --save-dev prisma dotenv
import "dotenv/config";
import { defineConfig } from "prisma/config";
/// <reference types="node" />
import { defineConfig } from 'prisma/config';

export default defineConfig({
schema: "prisma/schema.prisma",
migrations: {
path: "prisma/migrations",
},
datasource: {
url: process.env["DATABASE_URL"],
},
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: process.env['DATABASE_URL'] ?? '',
},
});
Loading
Loading