Skip to main content

Custom Cooldowns for discord Bot commands

Project description

Package Name: discord_cooldown

A responsive package for Bot command cooldowns

• With this package you can create the command cooldowns which will not get reset whenever the bot re-run

forthebadge made-with-python

CodeQL Python Github License Windows Linux

GitHub stars GitHub forks GitHub issues

Join Official Discord Server for more guidance !


Features

  • Cooldowns of Bot commands are stored in a DATABASE
  • Available Databases MySQL, PostgreSQL and Sqlite(Sqlite3)

Installation

Python 3.8 or higher is required !

# Linux/macOS
  python3 -m pip install discord-cooldown

# Windows
  # Method-1:
    py -3 -m pip install discord-cooldown
    # or
    python -m pip install discord-cooldown
  # Method-2:
    pip install discord-cooldown

# Using GIT for ALPHA or BETA Versions
  # Method-1:
    pip install git+https://github.com/Modern-Realm/discord_cooldown
  # Method-2:
    pip install -U git+https://github.com/Modern-Realm/discord_cooldown

Note: For better stability install package from GitHub using GIT


REQUIRED DEPENDENCIES

You can use ANY ONE of the below discord API Package

Note: Don't install more than one DEPENDENCY !

Other Dependencies


QuickStart

from discord_cooldown.modules import MySQL
from discord_cooldown import Cooldown

import discord

from discord.ext import commands
from datetime import timedelta

TOKEN = ""
intents = discord.Intents.all()
client = commands.Bot(command_prefix="&", intents=intents)

# MySQL Database Setup
db = MySQL(
    host="", db_name="",
    user="", passwd=""
)

# For Indian timezone (UTC +5:30)
timezone = +timedelta(hours=5, minutes=30)


def CD():
    return Cooldown(database=db, timezone=timezone)


@client.event
async def on_ready():
    await client.change_presence(status=discord.Status.online, activity=discord.Game("&help"))
    print("Bot is online")


@client.event
async def on_command_error(ctx, error):
    if isinstance(error, commands.CommandOnCooldown):
        return await ctx.send(
            f"on cooldown retry after `{timedelta(seconds=error.retry_after)}`"
        )
    else:
        # For resetting a command on any error other than CommandOnCooldown
        return await CD().reset_cooldown(ctx.author, ctx.command.name)


@CD().cooldown(1, 2 * 60)
@client.command()
async def test(ctx):
    await ctx.send("testing")


@CD().cooldown(2, 0, reset_per_day=True)
@client.command()
async def vote(ctx):
    await ctx.send("done")


@CD().cooldown(3, 60)
@client.command()
async def test1(ctx, *, msg: str):
    await ctx.send("message is " + msg)


if __name__ == "__main__":
    client.run(TOKEN)

Project Links

You can get support/help/guidance from below social-media links

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

discord-cooldown-0.1.4.tar.gz (9.4 kB view hashes)

Uploaded Source

Built Distribution

discord_cooldown-0.1.4-py3-none-any.whl (8.4 kB view hashes)

Uploaded Python 3

Supported by

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