Sandwich Delivery is a Discord bot in which people can order any sandwich they desire (even non-existent ones), have it made in our Discord by our top-of-the-line sandwich artists, and then have it delivered to your Discord server.
Join our Discord for quick responses, support, and to see the bot in action!
- MariaDB 10 or later
- A Discord server
- Discord bot token
To get started, you first get an executable, you can either compile yourself (see compilation) or download the latest release: stable or nightly/beta.
Once you have the executable, you need to create a config file in the working directory, you can use the example config as a template. You can find a configuration reference here.
Once you have the config file, you can run the executable and you're off!
- Docker
- Docker Compose (optional)
- MariaDB 10 or later (must be accessible from the container)
- A Discord server
- Discord bot token
For Docker, you can use our example docker-compose.yml file as a reference.
You can use our image, or build one yourself, see compilation (long story short, you can just change the line containing image
to build: .
).
Once you have a container, you need to create a config file in the volume attached to /app/work
, you can use the example config as a template.
You can find a configuration reference here.
Once you have the config file, you can run the container with docker-compose up -d
(or docker-compose up
if you want to see the logs).
The config file is a JSON file that contains all the configuration for the bot.
The config file is located in the working directory and is called config.json
.
Key | Type | Description | Optional? |
---|---|---|---|
token |
string |
The Discord bot token | No |
owners |
array of string |
The Discord IDs of the bot owners | One is required |
guildID |
string |
The Discord ID of the guild that certain commands will be registered in (e.g. /blacklist ) |
No |
kitchenChannelID |
string |
The Discord ID of the channel where orders will be sent. | No |
startupChannelID |
string |
The Discord ID of the channel where startup and shutdown messages will be sent. | Yes |
database |
object |
The database configuration | No |
database.host |
string |
The database host | No, unless database.URL is set, then it must be empty. |
database.port |
int |
The database port | No, unless database.URL is set, then it must be empty. |
database.user |
string |
The database user | No, unless database.URL is set, then it must be empty. |
database.password |
string |
The database password | No, unless database.URL is set, then it must be empty. |
database.database |
string |
The database name | No, unless database.URL is set, then it must be empty. |
database.extraOptions |
map of string -> string |
Extra options to pass to the database connection | Yes, unless database.URL is set, then it must be empty. |
database.URL |
string |
The database URL/DSN. A reference can be found here | Yes, unless other database entries are not set. |
tokensPerOrder |
int |
The amount of tokens an order costs. Must be > 0 and defaults to 1. | Yes |
dailyTokens |
int |
The amount of tokens a user gets per day. Must be > 0 and defaults to 1. | Yes |
If you are using the database.URL
option and do not add parseTime=true
as an option, you will run into issues.
This will also occur if you add an entry to database.extraOptions
with the key parseTime
and the value false
.
To get the source code, you can either download the source code from the latest release or clone the repository with git:
git clone https://github.com/refractored/sandwich-delivery
Then you can cd
into the directory.
- Go 1.21.4 or later
After you have the source, building is as easy as one command:
go build -v -o sandwich-delivery src/main
A new executable should be created in the working directory called sandwich-delivery
.
- Docker
- Docker Compose (optional)
After you have the source, building is as easy as one command:
docker build -t sandwich-delivery .
OR
You can use the docker-compose.yml file as a reference, but replace image:
with build: .
Then you can run the container with docker-compose up -d
(or docker-compose up
if you want to see the logs).
If you find any bugs or have a suggestion, please create an issue!
For quick responses and community support, you can also join our Discord.
If you want to contribute, you can create a pull request, currently, however, there are no guidelines for contributing apart from the code of conduct.
This project is licensed under the GPLv3 License.
- Refractored - Project Owner & Lead Developer
- Bacon - Developer
- All our contributors
- All our dependencies
- And you for using it ❤️