Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/joinemm/miso-bot

:robot: Discord bot with too many features
https://github.com/joinemm/miso-bot

bot discord discord-api discord-bot discord-py kpop lastfm lastfm-api miso misobot

Last synced: about 1 month ago
JSON representation

:robot: Discord bot with too many features

Awesome Lists containing this project

README

        

[![noai](https://notbyai.fyi/img/written-by-human-not-by-ai-white.svg)](https://notbyai.fyi/)

[![License](https://img.shields.io/github/license/joinemm/miso-bot)](https://img.shields.io/github/license/joinemm/miso-bot)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/84479f7c0f4c44a6aa2ba435e0215436)](https://app.codacy.com/manual/joinemm/miso-bot?utm_source=github.com&utm_medium=referral&utm_content=joinemm/miso-bot&utm_campaign=Badge_Grade_Dashboard)
[![DeepSource](https://deepsource.io/gh/joinemm/miso-bot.svg/?label=active+issues&show_trend=true&token=0E1BBh1I4k_HkqRvfRy86yMc)](https://deepsource.io/gh/joinemm/miso-bot/?ref=repository-badge)
[![Discord](https://img.shields.io/discord/652904322706833409.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/RzDW3Ne)
[![Sponsor](https://img.shields.io/github/sponsors/joinemm?color=%23db61a2)](https://github.com/sponsors/joinemm)

* * *

# Miso Bot

Miso is a multipurpose Discord bot with over 100 commands and features.

For more information and command reference, visit

## Development

A Nix development shell is included, using [devenv](https://github.com/cachix/devenv)

This environment installs poetry and some useful packages.

```sh
nix develop --impure
```

The dependencies are managed using [Poetry](https://python-poetry.org/)

```sh
poetry install
```

Copy/rename `.env.example` to `.env` and fill the api keys you need, most importantly the discord bot token.
The bot can then be run with

```sh
poetry run python main.py
# or in dev mode
poetry run python main.py dev

# if using the nix shell:

run
# or in dev mode
run dev
```

but it will not function without a MariaDB database.
The database can be bootstrapped with

```sh
docker compose up db -d
```

After which the bot can be ran and easily developed.
When you're done, remember to shut down the database container:

```sh
docker compose down
```

## Contributing

Your pull requests are welcome, as long as they meet the enforced code standards:

- [Black](https://github.com/psf/black) and [isort](https://pycqa.github.io/isort/) for formatting.
- [Ruff](https://github.com/astral-sh/ruff), for linting.
- [Reuse](https://reuse.software/), for licensing.

The nix shell installs these as pre-commit hook automatically.

## Deployment

First copy/rename `.env.example` to `.env` and fill it with your own keys.
Everything else should be handled by the dockerfile.

```sh
docker compose --profile prod up
```

The docker compose file bootstraps the entire miso infrastructure,
including prometheus metrics, grafana dashboards and nginx reverse proxy.

You likely don't want these if you're just running the bot.

The compose file is using different profiles that start only a handful of containers: `dev`, `dev-extra` and `prod`.
`prod` starts everything, as you might have guessed.
`dev` starts only the db and the bot in debug mode, for fast testing.
`dev-extra` starts extra services used by some commands, but not the infra containers.

```sh
docker compose --profile dev up
docker compose --profile dev-extra up
```

## Star History

[![Star History Chart](https://api.star-history.com/svg?repos=joinemm/miso-bot&type=Date)](https://star-history.com/#joinemm/miso-bot&Date)

## Contributor wall

[![Contributors](https://contrib.rocks/image?repo=joinemm/miso-bot)](https://github.com/joinemm/miso-bot/graphs/contributors)