我遇到了一个问题,我不知道此错误试图告诉我什么。
这是代码
@client.command()
async def lofi(ctx):
await customplay.invoke(ctx, 'https://discord.com/channels/630231925860204556/661802160605888531/753484931547791390')
await ctx.send('Playing Discord Lofi Mix, by Discord on YouTube!')
提前谢谢! -Roke Madoki
答案 0 :(得分:0)
表达式:
customplay.invoke(oneThing, anotherThing)
将通过参数invoke
,customplay
和customplay
调用任何oneThing
类的anotherThing
方法。 customplay
自动添加到对象调用中,通常以self
的形式接收,因此您可以知道要在哪个对象上进行操作。
此问题的一个很常见的原因是忘记接收此参数,该操作可能会执行如下操作:
class CustomPlay:
def invoke(self, thing):
weaveYourMagic()
customPlay = CustomPlay()
result = customplay.invoke(42) # self param added automagically
另一种可能性与您在 second 行上使用ctx
的方式有关。该变量名通常是指上下文(通常类似于self
),很可能就是您想使用的变量。
因此您可以尝试将第一行替换为:
await ctx.invoke('https://discord.com/channels/bigHexNumber')
以使其与第二种形式匹配。
如果是您犯了错误(请在范围堆栈中进一步引用customplay
变量,并将其作为ctx
传递,而不是仅使用{ {1}}传入),则可以有效地调用函数的两个副本。
我是说您可能正在按照以下方式做某事:
ctx
现在我无法从代码中分辨出是哪一个(或者即使是完全不同的东西),但是这两个是其中之一,可能后者。