`!doc setdoc` gives malformed request error when setting a package that already exists
If you run, for example
```python
!doc setdoc pygame https://www.pygame.org/docs/objects.inv
```
twice, you'll get a message saying `According to the API, your request is malformed.` and this error:
```python
bot_1        | 2021-10-05 18:04:59 | bot.exts.backend.error_handler | DEBUG | API responded with 400 for command docs setdoc: {'package': ['documentation link with this package already exists.']}.
```
We should handle this and give the user a better error message
diff --git a/bot/exts/info/doc/_cog.py b/bot/exts/info/doc/_cog.py
index e7710db2..ca6af946 100644
--- a/bot/exts/info/doc/_cog.py
+++ b/bot/exts/info/doc/_cog.py
@@ -13,6 +13,7 @@ import aiohttp
 import discord
 from discord.ext import commands
 
+from bot.api import ResponseCodeError
 from bot.bot import Bot
 from bot.constants import MODERATION_ROLES, RedirectOutput
 from bot.converters import Inventory, PackageName, ValidURL, allowed_strings
@@ -395,7 +396,14 @@ class DocCog(commands.Cog):
             "base_url": base_url,
             "inventory_url": inventory_url
         }
-        await self.bot.api_client.post("bot/documentation-links", json=body)
+        try:
+            await self.bot.api_client.post("bot/documentation-links", json=body)
+        except ResponseCodeError as err:
+            if err.status == 400 and "already exists" in err.response_json.get("package", [""])[0]:
+                log.info(f"Ignoring HTTP 400 as package {package_name} has already been added.")
+                await ctx.send(f"Package {package_name} has already been added.")
+                return
+            raise
 
         log.info(
             f"User @{ctx.author} ({ctx.author.id}) added a new documentation package:\\n"
['bot/exts/info/doc/_cog.py']