Skip to main content

A discord bot framework!

Project description

Betterbot

A modern, event-driven bot framework for Python, designed for simplicity and flexibility.

Install

Install via pip:

pip install betterbot

How to Use

Import the Setup module and initialize your bot:

from betterbot import Setup

Example Bot Script

import asyncio
import json
from betterbot import Setup, Events, InteractionTypes

# Load bot token from configuration
with open("config.json") as f:
    config = json.load(f)

TOKEN = config["TOKEN"]

class Bot:
    def __init__(self):
        self.bot = Setup(TOKEN, intents=53608447)
        self.bot.debug = True  # Enable detailed debug logs
        self.rest = self.bot.rest_client
        self.bot_username = None
        self.event = self.bot.event

    async def main(self):
        # Register event handlers
        await self.event.register(Events.BOT_READY, self.on_ready) # You can register multiple handlers per event.
        await self.event.register(Events.MESSAGE_CREATE, self.on_message)
        await self.bot.start()

    # -----------------------
    # Event Handlers
    # -----------------------
    async def on_ready(self, username, application_id):
        self.bot_username = username
        print(f"Logged in as {username}")

        # Create a guild slash command
        await self.rest.create_guild_command(
            self.test_command,
            application_id=application_id,
            guild_id=GUILD_ID,
            name="testrest",
            description="Test all REST endpoints with defer"
        )

    async def on_message(self, username, content, channel_id):
        if username == self.bot_username:
            return
        print(f"{username}: {content}")
        if content.lower() == "test rest":
            await self.test_rest_methods()

    # -----------------------
    # Slash Command Handler
    # -----------------------
    async def test_command(self, interaction_id, token):
        # Immediately respond to the interaction
        await self.rest.send_interaction_callback(
            interaction_id,
            token,
            cmd_type=InteractionTypes.RESPOND_WITH_MESSAGE,
            content="Hello, it is starting!"
        )
        await self.test_rest_methods()

    async def test_rest_methods(self):
        # -----------------------
        # Channel Methods
        # -----------------------
        await self.rest.send_message(CHANNEL_ID, "Hello from Betterbot REST test!")

        messages = await self.rest.get_messages(CHANNEL_ID)
        if messages:
            msg_id = messages[0]["id"]
            await self.rest.typing(CHANNEL_ID)
            await self.rest.add_reaction(CHANNEL_ID, msg_id, "👍")
            await self.rest.remove_reaction(CHANNEL_ID, msg_id, "👍")
            await self.rest.pin_message(CHANNEL_ID, msg_id)
            await self.rest.unpin_message(CHANNEL_ID, msg_id)

        # -----------------------
        # Guild Methods
        # -----------------------
        guild_info = await self.rest.get_guild_info(GUILD_ID)
        members = await self.rest.get_guild_members(GUILD_ID, limit=5)
        roles = await self.rest.get_guild_roles(GUILD_ID)

        print("REST test complete!")

# -----------------------
# Run Bot
# -----------------------
asyncio.run(Bot().main())

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

betterbot-4.2.0.tar.gz (34.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

betterbot-4.2.0-py3-none-any.whl (53.7 kB view details)

Uploaded Python 3

File details

Details for the file betterbot-4.2.0.tar.gz.

File metadata

  • Download URL: betterbot-4.2.0.tar.gz
  • Upload date:
  • Size: 34.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for betterbot-4.2.0.tar.gz
Algorithm Hash digest
SHA256 8759d8a4aed63b3d9398f6405e2b8977d424853ddf3358b30b25b65940216fe0
MD5 df7a10e68eeb6555895a1ad3d5f6efa3
BLAKE2b-256 f76053b7be4b689b36c2b3977f0defd89e6eb17e3666a72943503dadc3f27778

See more details on using hashes here.

File details

Details for the file betterbot-4.2.0-py3-none-any.whl.

File metadata

  • Download URL: betterbot-4.2.0-py3-none-any.whl
  • Upload date:
  • Size: 53.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for betterbot-4.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a9e99db62806e229d6c24d64e73dcfb6acee19b1896d6527da32e865f14a6a6d
MD5 a2159d1896ed259ee9462013af025a7c
BLAKE2b-256 61e537764b811e9960d827f344f0065f3130b7f5c074a2d202f199a3f3e5bf36

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page