[APPROVED] Kennnyshiwa cogs

Discord Name:
kennnyshiwa#1337

GitHub Repository (Must be V3):
https://github.com/kennnyshiwa/kennnyshiwa-cogs

Description:
A couple cogs that I found useful for use with Red Discord Bot
Ark Looks up CPU information from intel (only intel cpus)
embedinvite A invite command replacement with more options
imperialtoolkit useful commands (at the moment only botstat)
trackerinfo Returns status information on some private tracker websites

Commit hash: b4429511d3186714944f500a3d12a1449dbde304
Red v3.1.5
Consider anything prefaced with “You might want” to be optional

General
-Your repo info.json is missing some keys, so [p]repo list and [p]repo info do not include a description of your repo.
-Your cog class names are not what I expect them to be, making it harder to get help for the entire cog (Invite instead of EmbedInvite, ARKCog instead of Ark or ARK).
-You might want to pass two strings instead of using a string with “and” in your cog info.json author fields.

Ark
-The website in [p]help ark is outdated or does not work without an account.
-I’m not sure why you have "".join(query) in line 63, since query should already be a string.
-There is both a file __author__ and a class __author__.
-Very specific inputs can cause the command to error. [p]ark &$format= errors with:

Exception in command 'ark'
Traceback (most recent call last):
  File "<datapath>\cogs\CogManager\cogs\ark\ark.py", line 71, in ark
    cpu_data = await self.do_lookup(query)
  File "<datapath>\cogs\CogManager\cogs\ark\ark.py", line 33, in do_lookup
    data = await r.json()
  File "path\to\venv\lib\site-packages\aiohttp\client_reqrep.py", line 1027, in json
    headers=self.headers)
aiohttp.client_exceptions.ContentTypeError: 0, message='Attempt to decode JSON with unexpected mimetype: text/html'

EmbedInvite
-The message [p]invite says when a support server is not set has poor grammar (“Owner needs to set support server !”).
-The help text of [p]invitesettings description has poor grammar (“Set to None if you don’t want description.”).
-You might want to add an alias for [p]invitesettings colour of color.
-You might want to add an option to [p]invitesettings colour to use the bot’s color.
-[p]invitesettings support defaults to True, however there is not a support server set by default. This means that [p]invite will not work until either [p]invitesettings support is set to False or [p]invitesettings supportserv is set.
-The syntax for [p]invitesettings support is confusing, the param is called toggle yet it sets the value directly. It also defaults to True, possibly making it unclear how to set it to False if the user does not do [p]help invitesettings support.
-The help text for [p]invitesettings description says the default description is “Thanks for choosing to invite {botname} to your server”, however attempting to use {botname} in the description does not replace it with the bot name.
-You might want to check that the value passed to [p]invitesettings setpermissions is within the range of values accepted by discord (or at least that it is not negative).
-The global var method of adding the old invite command does not appear to work. You can pass the old invite to the class (the same way you pass bot) instead.
-The help text of [p]inviteset description and [p]invitesettings setpermissions do not say that passing no value resets them to the default.
-The help text of [p]invitesettings setpermissions does not say that passing None disables the permissions value.
-You might want to just use the value of toggle in [p]invitesettings support rather than testing the value.

ImperialToolkit
-The description field of the cog’s info.json is the description field for EmbedInvite.
-[p]botstat throws an error for me (so I can’t exactly test it):

Exception in command 'botstat'
  File "<datapath>\cogs\CogManager\cogs\imperialtoolkit\imperialtoolkit.py", line 101, in botstat
    cpu = cpuinfo.get_cpu_info()["brand"]
KeyError: 'brand'

Pottermore
-You should not be printing things to console. If you need to post things to console (in prod), use the bot’s logging.
-You might want to use the user’s id and random.seed for [p]housesort.
-Very specific inputs can cause the command [p]charactersearch to error. [p]charactersearch &%format= errors with:

Exception in command 'charactersearch'
  File "<datapath>\cogs\CogManager\cogs\pottermore\pottermore.py", line 116, in charactersearch
    pottermore_data = await self.do_lookup(query)
  File "<datapath\cogs\CogManager\cogs\pottermore\pottermore.py", line 99, in do_lookup
    print(data[0])
KeyError: 0

Space
-[p]astronauts should not have a hardcoded length.
-[p]apod throws an error when the bot does not have send_embeds permission:

Exception in command 'apod'
Traceback (most recent call last):
  File "<datapath>\cogs\CogManager\cogs\space\space.py", line 68, in apod
    await ctx.send(embed=embed)
discord.errors.Forbidden: 403 FORBIDDEN (error code: 50013): Missing Permissions

-[p]astronauts throws an error when the bot does not have send_embeds permission:

Exception in command 'astronauts'
Traceback (most recent call last):
  File "<datapath>\cogs\CogManager\cogs\space\space.py", line 163, in astronauts
    await ctx.send(embed=embed)
discord.errors.Forbidden: 403 FORBIDDEN (error code: 50013): Missing Permissions

-[p]isslocation throws an error when the bot does not have send_embeds permission:

Exception in command 'isslocation'
Traceback (most recent call last):
  File "<datapath>\cogs\CogManager\cogs\space\space.py", line 143, in isslocation
    await ctx.send(embed=embed)
discord.errors.Forbidden: 403 FORBIDDEN (error code: 50013): Missing Permissions

-[p]spacepic throws an error when the bot does not have send_embeds permission:

Exception in command 'spacepic'
Traceback (most recent call last):
  File "<datapath>\cogs\CogManager\cogs\space\space.py", line 123, in spacepic
    return await menu(ctx, pages, DEFAULT_CONTROLS)
discord.errors.Forbidden: 403 FORBIDDEN (error code: 50013): Missing Permissions

-Running [p]spacepic cow throws an error:

Exception in command 'spacepic'
Traceback (most recent call last):
  File "<datapath>\cogs\CogManager\cogs\space\space.py", line 104, in spacepic
    space_data = await self.do_lookup(query)
  File "<datapath>\cogs\CogManager\cogs\space\space.py", line 83, in do_lookup
    space_data.append(data.get("collection")["items"][x]["links"][0]["href"])
IndexError: list index out of range

TrackerInfo
-You might want to make a function for all of the repeated code.

Thanks for the review Flame, fixed all of these with commit ba277158576a37c01222106efa8a862859b75048

looks like i had accidentally removed the escape i had for mentions in ark, i added that back in my latest commit 8c8761822174259657fd78356b4d65938f56a680

Fixed some additional issues as discussed in discord, commit for these fixes is a4dac022149d880a2efddeba53bfcd3c9859de81

Alright, everything looks good now. Expect the cog creator perks within the next couple of days.