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',