Package Name: discord_cooldown
• With this package you can create the command cooldowns which will not get reset whenever the bot re-run
Join Official Discord Server for more guidance !
- Cooldowns of Bot commands are stored in a DATABASE
- Available Databases MySQL, PostgreSQL and Sqlite
(Sqlite3)
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
Note: Don't install more than one DEPENDENCY !
To use discord_cooldown
in cogs or multiple files, go through the template:
cooldown-bot-template
from discord_cooldown import Cooldown, SQlite, MySQL, PostgreSQL
import discord
from datetime import timedelta
from discord.ext import commands
from os import getenv
token = getenv("TOKEN")
intents = discord.Intents.all()
client = commands.Bot(command_prefix="$", intents=intents)
# For Indian timezone (UTC +5:30)
timezone = +timedelta(hours=5, minutes=30)
# For sqlite
db = SQlite()
# For mysql
# db = MySQL(host=..., port=..., user=..., passwd=..., db_name=...)
# For postgresql
# db = PostgreSQL(host=..., port=..., user=..., passwd=..., db_name=...)
CD = Cooldown(db, 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_application_command_error(ctx: discord.ApplicationContext, error):
if isinstance(error, commands.CommandOnCooldown):
return await ctx.respond(
f"on cooldown retry after `{timedelta(seconds=error.retry_after)}`",
ephemeral=True
)
else:
# For resetting a command cooldown if any error occurred
return await CD.reset_cooldown(ctx)
@client.event
async def on_command_error(ctx: commands.Context, 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 cooldown if any error occurred
return await CD.reset_cooldown(ctx)
@CD.cooldown(2, 1 * 60, type=commands.BucketType.channel)
@client.command()
async def test(ctx):
await ctx.send("testing")
@CD.cooldown(1, reset_per_day=True, type=commands.BucketType.guild)
@client.command()
async def vote(ctx):
await ctx.send("done")
@CD.cooldown(2, 60)
@client.command()
async def test1(ctx, msg: str):
if msg is None:
raise ValueError("msg is missing, cooldown not triggered")
await ctx.send("message is " + msg)
if __name__ == "__main__":
client.run(token)
You can get support/help/guidance from below social-media links