【发布时间】:2018-02-04 00:22:55
【问题描述】:
不久前开始编码,大约一个月左右。我目前正在为 Discord 编写一个机器人,一切正常,直到我在添加新命令后尝试运行该机器人时收到此错误消息:
Traceback (most recent call last):
File "C:\Users\Jeriel\Desktop\JerryBot\run.py", line 162, in main
from musicbot import MusicBot
File "C:\Users\Jeriel\Desktop\JerryBot\musicbot\__init__.py", line 1, in <modu
le>
from .bot import MusicBot
File "C:\Users\Jeriel\Desktop\JerryBot\music\bot.py", line 2094
if __name__ == "__main__":
^
IndentationError: unexpected unindent
它是在我添加这个之后开始的。我检查了这些之前的每一行,我在任何地方都找不到一个取消缩进:
async def kick(message,*args):
"""Kicks the specified user from the server"""
if len(message.mentions) < 1:
return False
if message.channel.is_private:
msg = await client.send_message(message.channel,'Users cannot be kicked/banned from private channels.')
asyncio.ensure_future(message_timeout(msg, 40))
return
if not message.channel.permissions_for(message.server.get_member(client.user.id)).kick_members:
msg = await client.send_message(message.channel, message.author.mention + ', I do not have permission to kick users.')
asyncio.ensure_future(message_timeout(msg, 40))
return
members = []
if not message.channel.is_private and message.channel.permissions_for(message.author).kick_members:
for member in message.mentions:
if member != message.author:
try:
await client.kick(member)
members.append(member.name)
except:
pass
else:
msg = await client.send_message(message.channel, message.author.mention + ', You should not kick yourself from a channel, use the leave button instead.')
asyncio.ensure_future(message_timeout(msg, 40))
else:
msg = await client.send_message(message.channel, message.author.mention + ', I do not have permission to kick users, or this is a private message channel.')
asyncio.ensure_future(message_timeout(msg, 40))
msg = await client.send_message(message.channel,'Successfully kicked user(s): `{}`'.format('`, `'.join(members)))
asyncio.ensure_future(message_timeout(msg, 60))
@register('ban','@<mention users>',owner=True)
async def ban(message,*args):
"""Bans the specified user from the server"""
if len(message.mentions) < 1:
return False
if message.channel.is_private:
msg = await client.send_message(message.channel,'Users cannot be kicked/banned from private channels.')
asyncio.ensure_future(message_timeout(msg, 40))
return
if not message.channel.permissions_for(message.server.get_member(client.user.id)).ban_members:
msg = await client.send_message(message.channel, message.author.mention + ', I do not have permission to ban users.')
asyncio.ensure_future(message_timeout(msg, 40))
return
members = []
if message.channel.permissions_for(message.author).ban_members:
for member in message.mentions:
if member != message.author:
try:
await client.ban(member)
members.append(member.name)
except:
pass
else:
msg = await client.send_message(message.channel, message.author.mention + ', You should not ban yourself from a channel, use the leave button instead.')
asyncio.ensure_future(message_timeout(msg, 40))
else:
msg = await client.send_message(message.channel, message.author.mention + ', I do not have permission to ban users, or this is a private message channel.')
asyncio.ensure_future(message_timeout(msg, 40))
msg = await client.send_message(message.channel,'Successfully banned user(s): `{}`'.format('`, `'.join(members)))
asyncio.ensure_future(message_timeout(msg, 30))
@register('bans',alias='bannedusers')
@register('bannedusers')
if __name__ == "__main__":
bot = JerryBot()
bot.run("---")
【问题讨论】:
-
错误信息指向
if __name__ == "__main__":。为什么该行相对于其余代码没有缩进? -
您是复制并粘贴代码,还是自己输入?如果您复制并粘贴它,可能是由于您使用制表符在某些地方缩进,而在其他地方使用空格来缩进的问题。这样做总是很有趣……
-
@Blorgbeard 我认为 OP 想使用
if __name__ == "__main__":块作为主要功能,如果是这样,那么它必须不缩进
标签: python python-3.x