嗨,我有点语法错误,我不确定这是缩进错误还是except discord.NotFound
的错误使用
这是我在控制台中遇到的错误
File "C:\Users\Tom\Documents\adiscordhelper\cogs\star.py", line 119
except discord.NotFound:
^
SyntaxError: invalid syntax
这是我使用异常并要处理代码中错误的方式,以下是代码段。
@commands.command(pass_context=True)
@checks.mod_or_permissions()
async def star(self, ctx, msg_id):
"""Manually add message to the starboard follows same restrictions
does not have a threshold"""
server = ctx.message.server
channel = ctx.message.channel
user = discord.utils.get(server.members)
msg = await self.bot.get_message(channel, msg_id)
author = msg.author
if server.id not in self.settings:
return
if msg.channel.id in self.settings[server.id]["ignore"]:
return
emoji =self.settings[server.id]["emoji"]
threshold = self.settings[server.id]["threshold"]
count = await self.get_count(server, msg)
if await self.check_is_posted(server, msg):
channel = self.bot.get_channel(self.settings[server.id]["channel"])
msg_id, count = await self.get_posted_message(server, msg)
if msg_id is not None:
msg_edit = await self.bot.get_message(channel, msg_id)
await self.bot.edit_message(new_content="{} your post made it to the star **{}** board! :raised_hands:".format(author.mention, emoji))
return
# else:
channel2 = self.bot.get_channel(id=self.settings[server.id]["channel"])
em = await self.build_embed(msg)
post_msg = await self.bot.send_message(channel2, "{} your post made it to the {} board! :raised_hands:".format(author.mention, emoji, 1), embed=em)
modpush = "{} added {}'s post to {} :star2:".format(user.mention, author.name, channel2.mention)
await self.bot.send_message(channel, modpush)
await self.bot.delete_message(ctx.message)
except discord.NotFound:
await self.bot.send_message("Message not found.")
past_message_list = self.settings[server.id]["messages"]
past_message_list.append({"original_message":msg.id, "new_message":msg.id, "count":1})
dataIO.save_json("data/star/settings.json", self.settings)
我不确定我在哪里出问题了,因此您的帮助将不胜感激。
编辑添加try语句:
channel2 = self.bot.get_channel(id=self.settings[server.id]["channel"])
em = await self.build_embed(msg)
post_msg = await self.bot.send_message(channel2, "{} your post made it to the {} board! :raised_hands:".format(author.mention, emoji, 1), embed=em)
try:
modpush = "{} added {}'s post to {} :star2:".format(user.mention, author.name, channel2.mention)
await self.bot.send_message(channel, modpush)
await self.bot.delete_message(ctx.message)
except discord.NotFound:
await self.bot.send_message("Message not found.")
past_message_list = self.settings[server.id]["messages"]
past_message_list.append({"original_message":msg.id, "new_message":msg.id, "count":1})
dataIO.save_json("data/star/settings.json", self.settings)
答案 0 :(得分:1)
问题是因为try语句放置在错误的位置。
它应该像这样:
@commands.command(pass_context=True)
@checks.mod_or_permissions()
async def star(self, ctx, msg_id):
"""Manually add message to the starboard follows same restrictions
does not have a threshold"""
try:
server = ctx.message.server
channel = ctx.message.channel
user = discord.utils.get(server.members)
msg = await self.bot.get_message(channel, msg_id)
author = msg.author
if server.id not in self.settings:
return
if msg.channel.id in self.settings[server.id]["ignore"]:
return
emoji =self.settings[server.id]["emoji"]
threshold = self.settings[server.id]["threshold"]
count = await self.get_count(server, msg)
if await self.check_is_posted(server, msg):
channel = self.bot.get_channel(self.settings[server.id]["channel"])
msg_id, count = await self.get_posted_message(server, msg)
if msg_id is not None:
msg_edit = await self.bot.get_message(channel, msg_id)
await self.bot.edit_message(new_content="{} your post made it to the star **{}** board! :raised_hands:".format(author.mention, emoji))
# else:
channel2 = self.bot.get_channel(id=self.settings[server.id]["channel"])
em = await self.build_embed(msg)
post_msg = await self.bot.send_message(channel2, "{} your post made it to the {} board! :raised_hands:".format(author.mention, emoji, 1), embed=em)
await self.bot.send_message(channel, "{} added {}'s post to {} :star2:".format(user.mention, author.name, channel2.mention))
await self.bot.delete_message(ctx.message)
past_message_list = self.settings[server.id]["messages"]
past_message_list.append({"original_message":msg.id, "new_message":msg.id, "count":1})
dataIO.save_json("data/star/settings.json", self.settings)
except discord.NotFound:
await self.bot.send_message("Message not found.")
您还需要在此行之后删除return
语句:
await self.bot.edit_message(new_content="{} your post made it to the star **{}** board! :raised_hands:".format(author.mention, emoji))
答案 1 :(得分:0)
except
块告诉python如果关联的try
块失败了该怎么办。您没有try
块,因此会引发语法错误。