TypeError:func()缺少1个必需的位置参数:从discord.py中的不同文件夹导入函数时为'self'

Posted

技术标签:

【中文标题】TypeError:func()缺少1个必需的位置参数:从discord.py中的不同文件夹导入函数时为\'self\'【英文标题】:TypeError: func() missing 1 required positional argument: 'self' when importing a function from a different folder in discord.pyTypeError:func()缺少1个必需的位置参数:从discord.py中的不同文件夹导入函数时为'self' 【发布时间】:2021-07-21 20:39:32 【问题描述】:

我在 code.py 中的文件夹(cog)中有一个类,如下所示:

import discord
from discord.ext import commands

class Class(commands.Cog):
    def __init__(self):
        # Basic initialisation

    @commands.command()
    async def func(self, ctx = commands.Context):
        # Code for the command

当我尝试导入它(使用APScheduler 将其添加到调度程序)时,如下所示:

from folder import code

async def schedule_func():
    func_class = code.Class()
    await func_class.func()

我收到以下错误:

File "bot/main.py", line 45, in schedule_meme
     await func_class.func()
File "/python/lib/python3.8/site-packages/discord/ext/commands/core.py", line 374, in __call__
     return await self.callback(*args, **kwargs)
TypeError: func() missing 1 required positional argument: 'self'

我到处查找并仔细检查了我是否首先初始化了该类,但我仍然无法克服错误。 我在这里做错了什么?

【问题讨论】:

【参考方案1】:

不完全确定这里发生了什么,它是可重现的,当我简单地将 ctx 作为随机值传递时它就起作用了。

await func_class.func(commands.Context) #if you need to use it, or just 1 or any literal

编辑:commands.command() 装饰器似乎是这里的问题,删除它使其在没有参数的情况下运行,我的猜测是装饰器使 ctx 成为必需参数,如果你不想使用 ctx.您可以将装饰器更改为@commands.command(pass_context=False),它可以在没有任何参数的情况下正常运行

【讨论】:

很抱歉,这对我不起作用。它再次返回相同的错误,即send() missing 1 required positional argument: 'self' 你可以尝试删除commands.command装饰器,只是为了调试

以上是关于TypeError:func()缺少1个必需的位置参数:从discord.py中的不同文件夹导入函数时为'self'的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:缺少 1 个必需的位置参数:'self'

TypeError:AuthMiddlewareStack() 缺少 1 个必需的位置参数:'inner'

TypeError:scatter()缺少1个必需的位置参数:'y'

TypeError: fit() 缺少 1 个必需的位置参数:'y',

Pandas:TypeError:sort_values() 缺少 1 个必需的位置参数:'by'

StandardScaler:TypeError:fit()缺少1个必需的位置参数:'X'