功能外部的“收益”

时间:2018-11-03 00:31:29

标签: python bots discord yield discord.py

所以我有一个不和谐机器人的代码,该机器人将跟踪/添加/删除点。我是python的新手,到目前为止,我已经通过运气或一些Google帮助修复了所有错误,但似乎无法解决该问题。每当我尝试运行代码时,我都会得到

  

函数外部的“收益”。

我该如何解决这个问题?

@asyncio.coroutine
def func(self): passon_message (self, message)
if message.content.startswith('p!'):
        if message.content[2] in self.houses:
            split_message = message.content.split()
            if split_message[0] == f'p!{message.content[2]}':
                if split_message[1] == 'add' or split_message[1] == 'remove':
                    if split_message[2].isdigit():
                        if split_message[1] == 'add':
                            old_points = self.bot.hp.data.get('housepoints').get(self.houses.get(message.content[2])).get('points')
                            self.bot.hp.data['housepoints'][self.houses.get(message.content[2])]['points'] = old_points + int(split_message[2])
                            self.bot.hp.save()
                            yield from message.channel.send('added')
                        if split_message[1] == 'remove':
                            old_points = self.bot.hp.data.get('housepoints').get(self.houses.get(message.content[2])).get('points')
                            self.bot.hp.data['housepoints'][self.houses.get(message.content[2])]['points'] = old_points - int(split_message[2])
                            self.bot.hp.save()
                            yield from message.channel.send('removed')
  

编辑:

这是代码的图像。不能让它看起来更好 代码:

Code

1 个答案:

答案 0 :(得分:2)

(您的屏幕快照证实了my comment's的理论,因此将其发布为您接受的答案。)

Python通过缩进来识别函数(或if语句,for循环,...)中包含的代码。如果您在同一行上放置一条语句,就像这样:

def foo(): print("Hello.")

它假定函数仅包含该语句。因此,在您的代码中,只有passon_message (self, message)语句位于func内部。要包括所有这些行,您需要将该语句放在缩进的新行上,并缩进以下if语句:

@asyncio.coroutine
def func(self):
    passon_message (self, message)
    if message.content.startswith('p!'):
        if message.content[2] in self.houses:
            split_message = message.content.split()
            # ...