В обратном вызове для команды соединения отсутствует параметр "ctx" - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь сделать муси c винтик для моего бота. В настоящее время я делаю команды для бота, чтобы присоединиться и покинуть голосовой канал. Но каждый раз, когда я пытаюсь запустить обе эти команды, возникает одна и та же ошибка.

Ignoring exception in on_message
Traceback (most recent call last):
  File "C:\Users\Daniel\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\core.py", line 663, in _parse_arguments
    next(iterator)
StopIteration

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Daniel\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\client.py", line 312, in _run_event
    await coro(*args, **kwargs)
  File "C:\Users\Daniel\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\bot.py", line 930, in on_message
    await self.process_commands(message)
  File "C:\Users\Daniel\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\bot.py", line 927, in process_commands
    await self.invoke(ctx)
  File "C:\Users\Daniel\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\bot.py", line 892, in invoke
    await ctx.command.invoke(ctx)
  File "C:\Users\Daniel\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\core.py", line 790, in invoke
    await self.prepare(ctx)
  File "C:\Users\Daniel\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\core.py", line 751, in prepare
    await self._parse_arguments(ctx)
  File "C:\Users\Daniel\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\core.py", line 666, in _parse_arguments
    raise discord.ClientException(fmt.format(self))
discord.errors.ClientException: Callback for join/leave command is missing "ctx" parameter.

Вот мой код:

import discord
from discord.ext import commands

import youtube_dl

class Music(commands.Cog):

    def __init__(self, client):
        self.client = client

    @commands.command()
    async def join(ctx):
        channel = ctx.message.author.voice.channel
        await channel.connect()

    @commands.command()
    async def leave(ctx):
        await ctx.voice_client.diconnect()


def setup(client):
    client.add_cog(Music(client))

Кто-нибудь знает, как я могу это исправить?

1 Ответ

0 голосов
/ 28 апреля 2020

Вам нужно поставить self в своей функции asyn c def join, а также функцию выхода:

@commands.command()
async def join(self, ctx):
    channel = ctx.message.author.voice.channel
    await channel.connect()

Вы используете cog, поэтому у вас есть класс с self, который должно быть передано классам, не украшенным @staticmethod или @classmethod. С помощью discord.py я рекомендую вам не выполнять ни одну из перечисленных выше функций команд / событий.

См .: https://discordpy.readthedocs.io/en/latest/ext/commands/cogs.html

Для шестеренок в разногласиях. ру

...