Skip to content

Latest commit

 

History

History
174 lines (134 loc) · 8.07 KB

README.md

File metadata and controls

174 lines (134 loc) · 8.07 KB

Rotom-B Pokémon Discord bot

Rotom-B is a Discord Bot with lots of easily accessible Pokémon information, tailored to make your Max Raid battles easier. Rotom-B keeps up to date Pokémon Sword & Shield data including: dens, catch rate, pokéballs, pokédex, types and natures data, with more to be added soon.

Top.gg

Discord Bots

Vote for us on Top.gg!

How to get started

Invite Rotom-B to your Discord Server to get started!

Rotom-B will be added with simple message reading permissions and will start listening to commands with the default $ prefix.

Why Rotom-B?

Rotom-B is a rewrite of the popular Alcremie-B den bot, with some extra features.

We loved Alcremie-B! Unfortunately the maintainer was unable to keep maintaining the bot, so we decided it would be a fun project to rewrite it, and add some cool features along the way. This is not meant to be competition, so please all credits goes to the original creator RaphGG for the idea.

Privacy Policy & Questions

We built this app so we can share our love for the games with the community, therefor no personal data is tracked, stored, or otherwise required to use this bot. The bot does contain a database it uses to store the guild's specific settings.

What is stored in the bot's database?

  • The structure of each table can be found in the migrations/ folder direction, inside any file ending in up.sql
  • The bot stores the following data for the following reasons:
    • The server's name for customized messages
    • The server's ID for identifying which settings belong to what guild
    • channels and roles the bot will obey to
    • ID's of the users who have admin access to the bot
  • The bot does not, and will never store user's messages, identifying information (such as names, emails, etc) as they are not required for operations

How they can contact you for any questions or concerns?

  • You can join us over the development and support server, where a maintainer will be happy to help!
  • You can also submit an new issue to this repo, where one of the maintainers will also be able to help.

How can I request my server is removed from the database?

  • If you are using the bot hosted by us, you can contact us via any of the methods mentioned before, and will happily remove your guild's record from the database.
    • In the future, this will be built into the bot as a command

Features

  • Complete Max Raid Dens information, including up to date Isle of Armor DLC.
  • Easily accessible Pokémon data, like stats, abilities, den locations, pokédex entries, etc.
  • Catch rate & Pokéball stats calculator based on Bulbapedia.
  • Sprites for all Pokémon, including forms and shiny versions.

Commands

  • <> indicate required fields.
  • [] indicate optional fields.
  • Use * next to Pokémon name for shiny sprites.
  • Catch Rates calculation are under Raid Specific Conditions: Levels 30-70, 1 HP, and no status modifiers.
Command Arguments Description
$ball <ball_name> Shows a summary of a Poké-Ball’s statistics
$catch <pokemon> [form] [ball_name] Summary of catch rates for a given Pokémon and Ball combination.
$credits Credits to all who helped in the creation of the bot.
$den <den_number/pokemon_name> Shows a list of Pokémon that belong to a den including their HAs.
$help Displays a list of commands you have access to use.
$invite Get an Invite Link to invite Rotom-B to another server!
$nature <nature> Shows ithe Pokémon Sprite in appropriate form
$pokedex <pokemon> Shows Pokédex info on every Pokémon.
$sprite <pokemon> Shows the Pokémon Sprite. Include * in the end for the shiny sprite.
$type <type> Shows info regarding Pokémon Types.
$version Check which version of Rotom-B is running.
$settings [setting] <new_value> Allows administrators to set server specific configuration.

Upcoming Features/Todos

  • Persistency, including a database for all the data
  • Custom settings
  • Updated Pokémon information with all new Sword and Shield DLC Pokémon and Zarude
  • Automatic messages on bot status and new updates
  • Friend codes and IGN storage support
  • Creating website
  • ...And we're accepting ideas/PRs! :)

Observations and Know Issues

Please note we don't have an animated sprite for Gigantamax Inteleon and its Shiny version. This is the only Pokémon we're using a still image for a sprite. Pull requests adding it are much appreciated!

All images are hosted in this repository

Screenshots

What the bot looks like on Discord!

Pokémon Sprites

Catch Rates

Den Pokémon Information

Den Information from number

Development/Deployment

Prerequisites

First we need a configuration file, copy the example-config.yaml and update values as needed

cp example-config.yaml config.yaml

The Simplest way to get everything running is using docker-compose

docker-compose up

If running individually, first run a postgres instance:

# Run the postgres instance
docker run --name postgres \ 
    -e POSTGRES_PASSWORD=root \ 
    -e POSTGRES_USER=postgres \ 
    -e POSTGRES_DB=postgres \ 
    -p 5432:5432 \ 
    -d postgres

# Run migrations
make migrate-dev

For simple development, you can just do the following:

make dev

For auto-reload on changes, you can run this instead (requires air installed)

make dev-reload

For a production build, you must run the make command for specific OS needs. At the moment we have support for AMD64 Linux/OSX/Windows (windows is untested).

# Creating production build for Linux
make linux

# Run the bot
./den-bot-linux-amd64 bot

For a production build on any other architecture not in the Makefile (PRs welcomed!)

# Setup the ENV variables needed
OS=<desired_os>
GOARCH=<desired_arch>
COMMIT=$(shell git rev-parse HEAD)
BRANCH=$(shell git rev-parse --abbrev-ref HEAD)
VERSION=$(shell cat .version)
METRICS_IMPORT_PATH=github.com/caquillo07/rotom-bot/metrics

# Setup the -ldflags option for go build here, interpolate the variable values
LDFLAGS = -ldflags "-X ${METRICS_IMPORT_PATH}.Version=${VERSION} -X ${METRICS_IMPORT_PATH}.Commit=${COMMIT} -X ${METRICS_IMPORT_PATH}.Branch=${BRANCH}"

# Build the bot
GOOS=${OS} GOARCH=${GOARCH} go build ${LDFLAGS} -o ${BINARY}-${OS}-${GOARCH} .

Built With

  • Go - Programming language
  • cobra - CLI
  • viper - Configuration
  • zap - Logging internals
  • DiscordGo - Discord Client
  • GORM - The fantastic ORM library for Go
  • go-cache - In memory cache for Go - Similar to Memcached