@BrenLike

Очень странная ошибка в Discord.py связанная с «ctx»?

У меня не работает всего лишь 2 команды остальные все работают.

Код:
@client.command(aliases= config['aliases']['repl'])
@commands.has_any_role(config['role']['bankir'])
async def repl(ctx, member:discord.Member=None, count:int):
    author = ctx.message.author
    server = ctx.message.guild
    mentioned = member
    cursor.execute(f'UPDATE users ADD cash = {count} WHERE (id == {mentioned.id})')
    emb = discord.Embed(title= 'Успешно', description= f'На баланс пользавателя {mentioned.mention},\nНачисленно {count} порох(а).', colour=0xE13923)
    await ctx.send(content=f'{author.mention}', embed=emb)

@client.command(aliases=config['aliases']['send'])
@commands.has_any_role(config['role']['client'])
async def send(ctx, member:discord.Member=None, count:int):
    mentioned = member
    author = ctx.message.author
    server = ctx.message.guild
    if cursor.execute(f'SELECT id FROM users WHERE id == {mentioned.id}').fetchone() is None:
        emb = discord.Embed(title= 'Ошибка', description= 'Такого участника нету в базе данных!\nНаверное он не создавал себе аккаунт.', colour= 0xE13923)
        emb.set_footer(text = f"г.{server.name}", icon_url = f'{server.icon_url}')
        await ctx.send(content=f'{author.mention}', embed=emb)
    else:
        if count > 14:
            emb = embed(title= 'Успешно!', description= f'На счёт пользователя {mentioned.mention}\n**Переведенно** `{count}` **порох(а) с вашего счёта.**\nn**Комиссия: 2 порох(а)\n**Ваш баланс составляет** `{balance}` **порох(а)**', colour= 0xB7E10D)
            emb.set_footer(text = f"г.{server.name}", icon_url = f'{server.icon_url}')
            await ctx.send(content=f'{author.mention}', embed=emb)
        else:
            emb = embed(title= 'Успешно!', description= f'На счёт пользователя {mentioned.mention}\n**Переведенно** `{count}` **порох(а) с вашего счёта.**\n\n**Комиссия: 0 порох(а)\n**Ваш баланс составляет** `{balance}` **порох(а)**', colour= 0xB7E10D)
            emb.set_footer(text = f"г.{server.name}", icon_url = f'{server.icon_url}')
            await ctx.send(content=f'{author.mention}', embed=emb)


Ошибка:
File "main.py", line 49
    async def repl(ctx, member:discord.Member=None, count:int):
                   ^
SyntaxError: non-default argument follows default argument
  • Вопрос задан
  • 674 просмотра
Решения вопроса 2
alternativshik
@alternativshik
Потому что питон сначала учить надо, а потом ботов писать. Текст ошибки четко говорит, в чем проблема и проблема тут не в ctx, а в целом в сигнатуре функции
Ответ написан
Комментировать
Поярдковые аргументы со стандартными значениями могут находиться только перед такими же аргументами со стандартными значениями.

def func(a, b: int = 0, c) - не работает, так как a, b и c являются порядковым аргументом.
def func(a, b: int = 0, c = 0) - работает

В вашем случае, если вы хотите чтобы аргумент member был опциональным, используйте typing.Optional:
from typing import Optional

...

@commands.command()
async def cmd(ctx, member: Optional[discord.Member], count: int): ...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы