Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/v0idzdev/bb-bot

🤖🔒 Fully-featured Discord bot with music, polls, memes and moderation.
https://github.com/v0idzdev/bb-bot

24-7 24-7-hosting 24-7-music-bot bot discord discord-admin-bot discord-api discord-bot discord-mod discord-moderation-bot discord-music-bot discord-py functional-programming gcp gcp-compute gcp-compute-engine google-cloud procedural procedural-programming python-3

Last synced: 2 months ago
JSON representation

🤖🔒 Fully-featured Discord bot with music, polls, memes and moderation.

Awesome Lists containing this project

README

        


BB.Bot's banner image.

🤖 BB.Bot


🔒 Moderation | 🎵 HQ Music Streaming | 😆 Memes | ⭐ Reaction Roles | ❓ Polls


Powered by discord.py and GCP, BB.Bot is the bot for you.








**As of May 4, 2022, the development, maintenance, and support for BB.Bot has come to an end.**

**BB.Bot** is a Discord bot powered by **Python** and **GCP's Compute Engine**. Featuring 24/7 uptime, HQ music streaming, admin commands, and more, BB.Bot will bring your server to life. **Available for free**, our bot comes with **no additional costs** and **long-term support**.

* Click **[here](https://discord.com/api/oauth2/authorize?client_id=947593856839458916&permissions=8&scope=bot%20applications.commands)** to invite BB.Bot to your server.
* Click **[here](https://discord.gg/tdFRB8uU)** to join our Discord server.

* Click **[here](#-self-hosting)** for self-hosting instructions.
* Click **[here](https://github.com/matthewflegg/bb-bot/blob/master/CONTRIBUTIONS.md)** for information about contributing.

Currently, BB.Bot `2.0.0` is in development. If you're thinking of contributing, please do so on the `release/v2.0.0` branch.


## 📢 **Commands List**

* We use `...argument` to denote a **list of arguments**, like `argument a`, `argument b`, etc...
* We use `argument?` to denote an **optional argument**. You can use the command **with** or **without** one.

### 🧭 Contents

* **[Help Commands](#-help-commands)**
* **[Admin Commands](#-admin-commands)**
* **[Music Commands](#-music-commands)**
* **[Role Commands](#-role-commands)**
* **[Misc Commands](#-misc-commands)**
* **[Info Commands](#-info-commands)**


### 🔖 Help Commands

> **~help**

Sends an embed containing a list of commands and categories.
You can use **`~help `** or **`~help `** to see more information.

> **~docs**

Sends an embed linking to **this page**.


### 🔑 Admin Commands

> **~clear `number of messages?`**

Clears a specified number of messages from a text channel. Using the command on its own will clear **all** messages

**Requires**: `Manage Messages`

> **~blacklist | ~bladd `...words?`**

Allows the user to choose words to ban on the server with a dropdown menu.

**Requires**: `Manage Messages`

❗ Optionally, you can type words after the command if you'd prefer not to use the dropdown.

> **~clearblacklist | ~blclear**

Clears the blacklist for the server.

**Requires**: `Manage Messages`

> **~showblacklist | ~blshow**

Shows the blacklist for the server.

**Requires**: `Manage Messages`

⚠️ Other users will be able to see the words on the list. Only use this in an admin/mod-only channel.

> **~blacklistremove | ~blrem `...words?`**

Allows the user to choose words to remove from the blacklist with a dropdown menu.

**Requires**: `Manage Messages`

❗ Optionally, you can type words after the command if you'd prefer not to use the dropdown.

> **~kick `member` `reason?`**

Kicks a specified user from the server.

**Requires**: `Kick Members`

> **~ban `member` `reason?`**

Bans a specified user from the server.

**Requires**: `Ban Members`

> **~softban `member` `number of days` `reason?`**

Temporarily bans a specified user from the server.

**Requires**: `Ban Members`

⚠️ It is **not** recommended to use this when self-hosting, unless your bot will be running 24/7.

> **~unban `member`**

Unbans a specified user from the server.

**Requires**: `Ban Members`


### 🔊 Music Commands

> **~connect** | **~join**

Joins the VC you're currently in.

💿 When you use `play`, the bot will join automatically before playing, so this isn't needed most of the time.

> **~play | ~p `song to search for`**

Searches YouTube for a song and then plays the top result.

> **~pause | ~ps**

Pauses the song currently playing if there is one.

> **~resume | ~r**

Resumes the song currently playing if there's one currently paused.

> **~skip | ~s**

Skips the song currently playing if there is one.

> **~queue | ~q | ~songs**

Shows a list of songs that are queued.

> **~nowplaying | ~np**

Shows the song currently playing if there is one.

> **~volume | ~vol `volume as a percentage`**

🎧 Tip: You can use this command to have finer control over volume - you can set the volume to 8.78, for instance.

Adjust the volume of the music player.

> **~stop | ~del**

Stops the music player and clears all existing songs from the queue.

⚠️ This command kicks the bot from the VC.


### 🌟 Role Commands

> **~reactrole | ~crr `emoji` `@role` `message`**

Creates an embed that users can react to for a role.

**Requires**: `Manage Roles`

> **~removereactrole | ~rrr `@role`**

Deletes all reaction role messages for a particular role.

**Requires**: `Manage Roles`


### 📒 Misc Commands

❓ Currently, we're testing out **[slash commands](https://support.discord.com/hc/en-us/articles/1500000368501-Slash-Commands-FAQ)** for this category.

> **~choose `...options`** or **/choose `...options`**

Randomly chooses an option from a list. Use quote marks "" around the options if they are longer than one word.

⚠️ `/choose` does not currently support choices with multiple words.

> **~meme** or **/meme**

Sends a random meme from Reddit.

> **~poll `yes/no question`** or **/poll `yes/no question`**

Creates a poll that users can react with yes or no to.

> **~twitch `streamer name`** or **/twitch `streamer name`**

Gets information about a Twitch stream if the streamer is currently streaming.

> **~echo `text`** or **/echo `text`**

Repeats a message in a text channel.

> **~ping** or **/ping**

Shows your current ping/latency in milliseconds.

> **~youtube | ~yt `search term`** or **/youtube `search term`**

Searches YouTube for a video and sends you a link to it. You can choose to view it on YouTube or in Discord.


### 💡 Info Commands

❓ Just like misc commands, we're also testing out **[slash commands](https://support.discord.com/hc/en-us/articles/1500000368501-Slash-Commands-FAQ)** for this category.

> **~joined `@member?`** or **/joined `@member?`**

Shows the join date of a member on a server. If no member is specified, it shows your join date.

> **~toprole `@member?`** or **/toprole `@member?`**

Shows a member's highest ranking role on a server. If no member is specified, it shows your top role.

> **~permissions | ~perms `@member?`** or **/permissions `@member?`**

Shows the permissions a member has on a server. If no member is specified, it shows your permissions.


## 🚀 Self Hosting
How to set up **BB.Bot** for self-hosting, step by step.

⚠️ For **development** versions of the bot, the prefix is `'?'`. This is so that we don't get the main & dev versions mixed up!

* Click **[here](https://realpython.com/installing-python/)** for more information on **installing Python**.
* Click **[here](https://discordpy.readthedocs.io/en/stable/discord.html)** for more information on **setting up a Discord bot** using the **Discord Developer Portal**.
* Click **[here](https://dev.twitch.tv/docs/authentication/register-app)** for more information on **registering a Twitch API application**.


### 🔖 Prerequisites

* **Python** 3.10+

* A **Discord API application with a Bot user**, with:

* **All** priveleged gateway intents
* `Administrator` permissions
* `bot` and `applications.commands` scopes.
* A registered **Twitch API application**.


### ⏳ Installing

1. Install a **.ZIP** from the **[releases](https://github.com/matthewflegg/bb-bot/releases)** page.

3. **Extract it** to your preferred file location.

4. **Create a file** in the **root directory** called `.env`. It should look like this:
```
TOKEN=
TEST_GUILD_ID=
TWITCH_CLIENT_ID=
TWITCH_CLIENT_SECRET=
```

### 🔌 Running

##### 🐧 Linux/UNIX
* Go to the **root directory** and run `chmod +x scripts/start.sh`.
* Then **run the script** using `./scripts/start.sh`.

##### 🏠 Windows
* Press **Windows + X**.
* Choose **Windows PowerShell (Admin)**.
* Go to the **root directory** and run `Set-ExecutionPolicy Bypass`.
* Finally, **run** `.\scripts\start.ps1`.