β β
The easiest way to use Quoter is with the official hosted version. You can add it to your server at quoter.cc/invite.
If you want to host your own version, you can follow the instructions below.
While we support self-hosting, we do not provide any support for it. If you are not familiar with the technologies used, we recommend using the hosted version above.
To run Quoter, you will need the following:
You'll also need to create a Discord bot and invite it to your server. Head to Discord's developer portal and create a new application. Create a bot user, and get the token. You'll need to invite the bot to your server using the following link, replacing REPLACE_ME
with your bot's client ID:
https://discord.com/oauth2/authorize?scope=bot&client_id=REPLACE_ME
Start off by cloning the repository and installing the dependencies:
git clone https://github.com/quoter/quoter.git
cd quoter
bun install
Then, copy .env.EXAMPLE
to .env
and fill in the values:
DISCORD_TOKEN
is the token of your Discord bot.MONGO_URI
is the URI to your MongoDB database.
You can also adjust the default MAX_GUILD_QUOTES
and MAX_QUOTE_LENGTH
.
Run the below command to deploy Slash Commands to Discord.
bun run deploy
Finally, run the bot:
bun run start
If you want to run Quoter in the background, we recommend using PM2. Quoter includes an ecosystem.config.js
file, which allows using PM2 without any additional configuration.
Install PM2 with bun install -g pm2
, then cd
into the Quoter directory and run pm2 start
. You can then manage Quoter with pm2
commands, such as pm2 restart quoter
to restart the bot.
Thank you for your interest in contributing to Quoter! Before you get started, please read our Code of Conduct. If you're developing a new feature, or making significant changes, please open an issue first to discuss it with us.
Quoter is written in TypeScript and uses Bun as a runtime and package manager. MongoDB is used for data storage. We use ESLint and Prettier to enforce code style.
To get started, follow the self-hosting guide above, but clone your fork instead of the main repository. You'll also want to configure the DISCORD_GUILD_ID
environment variable to point to your test server, which is where Slash Commands will be deployed in development. Use bun run deploy --guild
to deploy with guild-specific commands, instead of global commands.
Before submitting a pull request, please run bun run lint
to ensure your code is formatted correctly.
Copyright (C) 2020-2024 Nick Oates
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, version 3.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.