所以我有一个不和谐机器人的代码,该机器人将跟踪/添加/删除点。我是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')
编辑:
这是代码的图像。不能让它看起来更好 代码:
答案 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()
# ...