AI prompts
base on Yet another general purpose discord bot # YAGPDB - Yet Another General Purpose Discord Bot
YAGPDB is a multifunctional, modular Discord bot. It is modular in the sense that for most things plugins exist -- However, some plugins may depend on other plugins.
## Plugins
* YouTube Feed
* Stream Announcements
* Server Stats
* Soundboard
* Reputation
* Reminders
* Reddit Feed
* Notifications
* Moderation
* Logs
* Custom Commands
* And More!
## Useful Links
* [Homepage](https://yagpdb.xyz)
* [Support Server](https://discord.gg/4udtcA5)
* [Help Center](https://help.yagpdb.xyz)
## Selfhosting
There are two ways of selfhosting this bot: [standalone](#Hosting-Standalone), or [dockerized](#Hosting-Dockerized).
### General Bot Setup
Directions on creating an app and getting credentials may be found
[here](https://github.com/reactiflux/discord-irc/wiki/Creating-a-discord-bot-&-getting-a-token).
YAGPDB does not require you to authorize the bot: all of that will be handled
via the Control Panel.
In addition, you will need to add the following urls to the bot's "REDIRECT URI(S)" configuration:
* <https://YourHostNameHere/confirm_login>
* <https://YourHostNameHere/manage>
### Hosting Dockerized
If you have docker-compose installed, that might be the fastest route of getting the bot up and running:
```shell
git clone https://github.com/botlabs-gg/yagpdb
cp yagpdb/yagpdb_docker/{app.example.env,app.env}
cp yagpdb/yagpdb_docker/{db.example.env,db.env}
```
Edit both env files accordingly. Make sure ports 80 and 443 are accessible on your network and that you have a proper image in `docker-compose.yml`:
```shell
docker-compose -f yagpdb/yagpdb_docker/docker-compose.yml up
```
Alternatively, you can run the bot behind a proxy:
```shell
docker network create proxy-tier
docker-compose -p proxy yagpdb/yagpdb_docker/docker-compose.proxy.yml up
docker-compose -f yagpdb/yagpdb_docker/docker-compose.proxied.yml up
```
During development, use the `docker-compose.dev.yml` file:
```shell
docker-compose -f yagpdb/yagpdb_docker/docker-compose.dev.yml up
```
### Hosting Standalone
#### Requirements
* Golang 1.20 or above
* PostgreSQL 9.6 or later
* Redis version 5.x or later
#### Setting Up
Configure Redis and Postgres with your desired settings.
In postgres, create a new user `yagpdb` and database `yagpdb` and grant that user access to that database.
Set up the environment variables with the credentials from the [general setup](#General-Bot-Setup). See the [sample env file](cmd/yagpdb/sampleenvfile) for a list of all enviroment variables.
Afterwards, run the build script located at `/cmd/yagpdb/build.sh` and start the bot using `./yagpdb`:
```shell
git clone https://github.com/botlabs-gg/yagpdb
cd yagpdb/cmd/yagpdb
sh build.sh
./yagpdb -all
```
See `./yagpdb -help` for all usable run flags. The webserver listens by default on ports 5000 (HTTP) and 5001 (HTTPS).
## Databases
YAGPDB uses Redis for light data and caching, and postgresql for most configurations and heavy data, such as logs.
### Updating
Updating with v1 and higher should migrate schemas automatically, but you should always make backups.
Breaking changes can be found in breaking_changes.md, which should always be consulted before updating.
## Contributing
Please view the [contributing guidelines](CONTRIBUTING.md) before submitting any contributions.
See bot/plugin for info about bot plugins, web/plugin for web plugins and feeds/plugin for feeds if you wanna make a new fully fledged plugin.
Expect web, bot and feed instances to be run separately.
For basic utility/fun commands, you can just jam them in stdcommands. Use the existing commands there as an example of how to add one.
Please check CONTRIBUTING.md for further details.
", Assign "at most 3 tags" to the expected json: {"id":"11010","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"