discord.py обработка нескольких исключений - PullRequest
1 голос
/ 09 апреля 2019

В моем блоке try я добавил 2 исключения.Один, если бот не имеет разрешения, и другое исключение для всего остального.Однако приведенный ниже код не показывает исключение для ошибки разрешения, вместо этого используется другое.

@commands.command(no_pm=True)
    async def mal(self, *, srch=None):
        try:
            if srch is None:
                await self.Nao.say('You need to provide an anime name')
                return
            if " " in srch:
                srch.replace(" ", "/")
            url = 'https://api.jikan.moe/v3/search/anime/?q=' + srch + '&page=1'
            response = requests.get(url)
            data = response.json()
            malEmbed = discord.Embed(title=data['results'][0]['title'], description=data['results'][0]['synopsis'], url=data['results'][0]['url'], color=0xff00ff)
            malEmbed.set_thumbnail(url=data['results'][0]['image_url'])
            malEmbed.add_field(name='Episodes: ', value=data['results'][0]['episodes'])
            malEmbed.add_field(name='Rated: ', value=data['results'][0]['rated'])
            await self.Nao.say(embed=malEmbed)
        except PermissionError:
            await self.Nao.say('I need permission to embed links to do this.')
            return
        except:
            await self.Nao.say('There was an error. My developers have been alerted!')

Я удалил разрешение ботов для встраивания ссылок, означающее, что оно должно отвечать исключением для PermissionError, однаковозвращаясь "Произошла ошибка. Мои разработчики были предупреждены!"вместо этого.

1 Ответ

0 голосов
/ 09 апреля 2019

Я нашел исправление для ошибки.Вместо того, чтобы попробовать и поймать нет разрешения.Сначала я проверил разрешение ботов, и если у него есть разрешения, он выполнит сброс, а если нет, то сразу перейдет к оператору else

    @commands.command(pass_context=True, no_pm=True)
    async def mal(self, ctx, *, srch=None):
        if ctx.message.server.me.server_permissions.embed_links:
            try:
                if srch is None:
                    await self.Nao.say('You need to provide an anime name')
                    return
                if " " in srch:
                    srch.replace(" ", "/")
                url = 'https://api.jikan.moe/v3/search/anime/?q=' + srch + '&page=1'
                response = requests.get(url)
                data = response.json()
                malEmbed = discord.Embed(title=data['results'][0]['title'], description=data['results'][0]['synopsis'], url=data['results'][0]['url'], color=0xff00ff)
                malEmbed.set_thumbnail(url=data['results'][0]['image_url'])
                malEmbed.add_field(name='Episodes: ', value=data['results'][0]['episodes'])
                malEmbed.add_field(name='Rated: ', value=data['results'][0]['rated'])
                await self.Nao.say(embed=malEmbed)
            except:
                await self.Nao.say('There was an error. My developers have been alerted!')
        else:
            await self.Nao.say('I need permission to embed links to do this.')
.
...