Add ip command
This commit is contained in:
parent
c332d25adf
commit
3a6fc75f0d
1 changed files with 34 additions and 0 deletions
|
@ -1,5 +1,6 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
import io
|
import io
|
||||||
|
import json
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import time
|
import time
|
||||||
|
@ -7,6 +8,7 @@ import typing
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
|
import httpx
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
from dns import asyncresolver
|
from dns import asyncresolver
|
||||||
from rich.console import Console
|
from rich.console import Console
|
||||||
|
@ -253,6 +255,38 @@ class NetworkCog(commands.Cog):
|
||||||
await ctx.defer()
|
await ctx.defer()
|
||||||
await ctx.respond(file=discord.File(f))
|
await ctx.respond(file=discord.File(f))
|
||||||
|
|
||||||
|
@commands.slash_command(name="ip")
|
||||||
|
async def get_ip_address(self, ctx: discord.ApplicationContext, lookup: str = None):
|
||||||
|
"""Fetches IP info from SHRONK IP servers"""
|
||||||
|
await ctx.defer()
|
||||||
|
async with httpx.AsyncClient(headers={"User-Agent": "Mozilla/5.0 Jimmy/v2"}) as client:
|
||||||
|
if not lookup:
|
||||||
|
response = await client.get("https://api.ipify.org")
|
||||||
|
lookup = response.text
|
||||||
|
servers = [
|
||||||
|
"ip.shronk.net",
|
||||||
|
"ip.i-am.nexus",
|
||||||
|
"ip.shronk.nicroxio.co.uk"
|
||||||
|
]
|
||||||
|
embed = discord.Embed(
|
||||||
|
title="IP lookup information for: %s" % lookup,
|
||||||
|
)
|
||||||
|
for server in servers:
|
||||||
|
try:
|
||||||
|
start = time.perf_counter()
|
||||||
|
response = await client.get(f"https://{server}/{lookup}")
|
||||||
|
end = time.perf_counter()
|
||||||
|
except (httpx.HTTPError, ConnectionError) as e:
|
||||||
|
embed.add_field(
|
||||||
|
name=server,
|
||||||
|
value=f"An error occurred while fetching the data: {e}",
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
v = json.dumps(response.json(), indent=4)
|
||||||
|
embed.add_field(name="%s (%.2fms)" % (server, (end - start) * 1000), value="```json\n%s\n```" % v)
|
||||||
|
|
||||||
|
await ctx.respond(embed=embed)
|
||||||
|
|
||||||
|
|
||||||
def setup(bot):
|
def setup(bot):
|
||||||
bot.add_cog(NetworkCog(bot))
|
bot.add_cog(NetworkCog(bot))
|
||||||
|
|
Loading…
Reference in a new issue