Discord.py Command signature requires at least 0 parameter(s)

Question:

I wanna make a price alert bot. It’s just for the fun btw I dın’t have any purpose about it but also I wanna run certain code every n minutes. Anyway the most import thing is I am gettin the bellow error rightnow I hope you guys can guide me and help me about run certain code every n min. Thank you for ur info.

from discord.ext import commands
import requests
import discord
import asyncio


intents = discord.Intents.all()
bot = commands.Bot(command_prefix= "?", intents=intents)



@bot.command()
async def foo(ctx, arg):
    await ctx.send(arg)


@bot.command()
async def on_ready():
    print("bot online")


@bot.command()
async def on_message(message):
    if message.author == bot.id:
        return

    if message.content == "ana":
        await message.channel.send("baban")

@bot.commands()
async def start_count(ctx):
            key = "some-crypto-shit-api"
            data = requests.get(key)  
            data = data.json()
            price = data["price"]
            coin = data["symbol"]
            await ctx.send(price)


bot.add_command(start_count)
bot.run('my_Token')

And this is my error =

Traceback (most recent call last):
  File "c:Usersusrbtc takipyenibot.py", line 17, in <module>
    async def on_ready():
  File "C:UsersusrAppDataLocalPackagesPythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0LocalCachelocal-packagesPython310site-packagesdiscordextcommandscore.py", line 1475, in decorator
    result = command(name=name, cls=cls, *args, **kwargs)(func)
  File "C:UsersusrAppDataLocalPackagesPythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0LocalCachelocal-packagesPython310site-packagesdiscordextcommandscore.py", line 1748, in decorator
    return cls(func, name=name, **attrs)
  File "C:UsersusrAppDataLocalPackagesPythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0LocalCachelocal-packagesPython310site-packagesdiscordextcommandscore.py", line 361, in __init__
    self.callback = func
  File "C:UsersusrAppDataLocalPackagesPythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0LocalCachelocal-packagesPython310site-packagesdiscordextcommandscore.py", line 470, in callback
    self.params: Dict[str, Parameter] = get_signature_parameters(function, globalns)
  File "C:UsersusrAppDataLocalPackagesPythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0LocalCachelocal-packagesPython310site-packagesdiscordextcommandscore.py", line 128, in get_signature_parameters
    raise TypeError(f'Command signature requires at least {required_params - 1} parameter(s)')
TypeError: Command signature requires at least 0 parameter(s)
Asked By: Shaumne

||

Answers:

There are three problems in you code:

  1. command name

In your code, @bot.command(name="") requires a name in it which is the command name. In order to fix your code, change it to

@bot.command(name="MY_COMMAND_NAME")
  1. on ready

In your code, on_ready() is defined as a bot command, it should be a bot event, So it would not work anyways. So change it to:

@bot.event
async def on_ready():
  1. bot.add_command doesn’t exist

I’m pretty sure it doesn’t exist. Just leave it blank and follow the above tips and your code will work fine, bot commands should register.

Answered By: Annoymous

The accepted answer is just wrong so I’ll leave the actual solution here.

Correct answer to the problem

@bot.commands()

The decorator is bot.command, not commandS.

bot.add_command(start_count)

This line is unnecessary. @bot.command() already adds the command, as its name suggests. Unnecessarily using the method, combined with the typo from the point above, is what raises this error. This line can be deleted as the decorator (when spelled correctly) does this for you.

Problems with the accepted answer

  1. In your code, @bot.command(name="") requires a name in it which is the command name.

This is wrong. If no value for name is provided, this defaults to the name of the underlying callback.

  1. In your code, on_ready() is defined as a bot command, it should be a bot event, So it would not work anyways.

While true, this isn’t the cause of OP’s problem. The on_ready event doesn’t do anything related to command handling, nor does it raise the exception in the post.

  1. bot.add_command doesn’t exist

Yes it does…

Answered By: stijndcl
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.