Skip to content

Instantly share code, notes, and snippets.

@Painezor
Last active April 18, 2024 05:22
Show Gist options
  • Save Painezor/eb2519022cd2c907b56624105f94b190 to your computer and use it in GitHub Desktop.
Save Painezor/eb2519022cd2c907b56624105f94b190 to your computer and use it in GitHub Desktop.
Built-in Checks for the commands extension of discord py
@commands.guild_only()
# Command cannot be used in private messages.
@commands.dm_only()
# Command can only be used in private messages.
@commands.is_owner()
# Command can only be used by the bot owner.
@commands.is_nsfw()
# Command can only be used in NSFW channels
@commands.has_role("name")
# Check if member has a role with the name "name"
@commands.bot_has_role(11132312313213)
# As above, but for the bot itself. (name can be replaced with id)
@commands.has_any_role("role1","foo",11132312313213)
# Check if user has any of the roles with the names "role1", "foo", or the role with id 11132312313213
@commands.bot_has_any_role(*roles)
# As above, but for the bot itself
@commands.has_permissions(ban_members=True, kick_members=True)
# Check if user has all of the passed permissions
# e.g. this command will require both kick and ban permissions
@commands.bot_has_permissions(**perms)
# As above, but for the bot itself.
@commands.has_guild_permissions(**perms)
@commands.bot_has_guild_permissions(**perms)
# As for the two above, but for guild permissions rather than channel permissions.
@commands.check(myfunction)
# Check against your own function that returns those able to use your command
@commands.check_any(*myfunctions)
# Command will be ran if the conditions of any of your own check functions are met
from discord.ext.commands.cooldowns import BucketType
# BucketType can be BucketType.default, member, user, guild, role, or channel
@commands.cooldown(rate,per,BucketType)
# Limit how often a command can be used, (num per, seconds, BucketType)
@commands.max_concurrency(number, per=BucketType.default, *, wait=False)
# Limit how many instances of the command can be running at the same time.
# Setting wait=True will queue up additional commands. False will raise MaxConcurrencyReached
# Checks can be stacked, and will Raise a CheckFailure if any check fails.
@AwSkies
Copy link

AwSkies commented Jun 29, 2021

@parthshingari28 Could you show your code, or contact me on discord at CaptainClumsy#3018, since just saying "Not working" isn't very helpful and I can't really tell what's the problem.

@Mr-ROI
Copy link

Mr-ROI commented Jul 7, 2021

Can You give a example how to do it for Cogs , that will be very helpful for me .

@AwSkies
Copy link

AwSkies commented Jul 7, 2021

@Mr-ROI what is "it", are you talking about the checks, or something else?
If you're talking about the checks, simply put the check decorator before a method that is being used for a command.

@writeblankspace
Copy link

Is there an example as to how I could use my own function? What should the function return? Should it be true/false or a list of ID's?

@xjunko
Copy link

xjunko commented Oct 17, 2021

@jeanravenclaw true/false yea

@writeblankspace
Copy link

@FireRedz thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment