yagpdb

module
v2.33.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 15, 2024 License: MIT

README

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!

Selfhosting

There are two ways of selfhosting this bot: standalone, or dockerized.

General Bot Setup

Directions on creating an app and getting credentials may be found here.

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:

Hosting Dockerized

If you have docker-compose installed, that might be the fastest route of getting the bot up and running:

git clone https://github.com/whoseline/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:

docker-compose -f yagpdb/yagpdb_docker/docker-compose.yml up

Alternatively, you can run the bot behind a proxy:

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:

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. See the sample env file for a list of all enviroment variables.

Afterwards, run the build script located at /cmd/yagpdb/build.sh and start the bot using ./yagpdb:

git clone https://github.com/whoseline/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 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.

Directories

Path Synopsis
bot
cmd
gen
Generates the wrapper event handlers for discordgo events The wrappers adds an extra parameter to the handlers which is a redis connection And will also recover from panic that occured inside them
Generates the wrapper event handlers for discordgo events The wrappers adds an extra parameter to the handlers which is a redis connection And will also recover from panic that occured inside them
this package provides core functionality to yagpdb, important security stuff here
this package provides core functionality to yagpdb, important security stuff here
pqkeydb
Package pqkeydb is a simple key-value database on top of postgres
Package pqkeydb is a simple key-value database on top of postgres
run
lib
confusables
This file was generated by go generate; DO NOT EDIT
This file was generated by go generate; DO NOT EDIT
dca
dcmd
Package dcmd provides a command system for use with discord bots
Package dcmd provides a command system for use with discord bots
discordgo
Package discordgo provides Discord binding for Go
Package discordgo provides Discord binding for Go
go-reddit
Package reddit provides Reddit API wrapper utilities.
Package reddit provides Reddit API wrapper utilities.
gojay
Package gojay implements encoding and decoding of JSON as defined in RFC 7159.
Package gojay implements encoding and decoding of JSON as defined in RFC 7159.
gojay/examples/websocket
package main simulates a conversation between a given set of websocket clients and a server.
package main simulates a conversation between a given set of websocket clients and a server.
jarowinkler
Package jarowinkler implements fuzzy matching based on the Jaro-Winkler metric.
Package jarowinkler implements fuzzy matching based on the Jaro-Winkler metric.
ogg
Package ogg implements encoding and decoding of OGG streams as defined in http://xiph.org/ogg/doc/rfc3533.txt and http://xiph.org/ogg/doc/framing.html .
Package ogg implements encoding and decoding of OGG streams as defined in http://xiph.org/ogg/doc/rfc3533.txt and http://xiph.org/ogg/doc/framing.html .
template
Package template implements data-driven templates for generating textual output.
Package template implements data-driven templates for generating textual output.
template/parse
Package parse builds parse trees for templates as defined by text/template and html/template.
Package parse builds parse trees for templates as defined by text/template and html/template.
rolecommands is a plugin which allows users to assign roles to themselves
rolecommands is a plugin which allows users to assign roles to themselves
web
blog
Simple blog
Simple blog

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL