looks good
This commit is contained in:
86
garfmain.py
86
garfmain.py
@ -1,10 +1,9 @@
|
|||||||
import config
|
import config
|
||||||
import asyncio
|
import asyncio
|
||||||
import discord
|
import discord
|
||||||
import subprocess
|
|
||||||
|
|
||||||
from garfpy import(
|
from garfpy import(
|
||||||
logger, is_private,
|
logger, IPUtils,
|
||||||
aod_message, generate_qr,
|
aod_message, generate_qr,
|
||||||
Kroger, GarfAI, GarfbotRespond)
|
Kroger, GarfAI, GarfbotRespond)
|
||||||
|
|
||||||
@ -22,9 +21,11 @@ garfbot = discord.Client(intents=intents)
|
|||||||
|
|
||||||
garf_respond = GarfbotRespond()
|
garf_respond = GarfbotRespond()
|
||||||
garfield = GarfAI()
|
garfield = GarfAI()
|
||||||
|
iputils = IPUtils()
|
||||||
kroger = Kroger()
|
kroger = Kroger()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@garfbot.event
|
@garfbot.event
|
||||||
async def on_ready():
|
async def on_ready():
|
||||||
try:
|
try:
|
||||||
@ -37,28 +38,18 @@ async def on_ready():
|
|||||||
|
|
||||||
@garfbot.event
|
@garfbot.event
|
||||||
async def on_message(message):
|
async def on_message(message):
|
||||||
|
|
||||||
content = message.content.strip()
|
|
||||||
lower = content.lower()
|
|
||||||
user = message.author.name
|
|
||||||
guild = message.guild.name if message.guild else "Direct Message"
|
|
||||||
guild_id = message.guild.id
|
|
||||||
|
|
||||||
# Chats & pics
|
|
||||||
if message.author == garfbot.user:
|
if message.author == garfbot.user:
|
||||||
return
|
return
|
||||||
|
|
||||||
if lower.startswith("hey garfield") or isinstance(message.channel, discord.DMChannel):
|
content = message.content.strip()
|
||||||
prompt = content[12:] if lower.startswith("hey garfield") else message.content
|
lower = content.lower()
|
||||||
answer = await garfield.generate_chat(prompt)
|
user_name = message.author.name
|
||||||
logger.info(f"Chat Request - User: {user}, Server: {guild}, Prompt: {prompt}")
|
guild_id = message.guild.id
|
||||||
await message.channel.send(answer)
|
guild_name = message.guild.name if message.guild else "Direct Message"
|
||||||
|
|
||||||
if lower.startswith('garfpic '):
|
# IP utils
|
||||||
prompt = content[8:]
|
if message.guild and lower.startswith(("garfping ", "garfdns ", "garfhack ")):
|
||||||
logger.info(f"Image Request - User: {user}, Server: {guild}, Prompt: {prompt}")
|
await iputils.scan(message, user_name, guild_name, lower)
|
||||||
await message.channel.send(f"`Please wait... image generation queued: {prompt}`")
|
|
||||||
await garfield.garfpic(message, prompt)
|
|
||||||
|
|
||||||
# Wikipedia
|
# Wikipedia
|
||||||
if lower.startswith('garfwiki '):
|
if lower.startswith('garfwiki '):
|
||||||
@ -80,47 +71,6 @@ async def on_message(message):
|
|||||||
logger.error(e)
|
logger.error(e)
|
||||||
await message.channel.send(e)
|
await message.channel.send(e)
|
||||||
|
|
||||||
# IP utils
|
|
||||||
query = message.content.split()
|
|
||||||
target = query[-1]
|
|
||||||
|
|
||||||
if lower.startswith("garfping "):
|
|
||||||
try:
|
|
||||||
logger.info(f"Ping Request - User: {user}, Server: {guild}, Target: {target}")
|
|
||||||
if is_private(target):
|
|
||||||
rejection = await garfield.generate_chat("Hey Garfield, explain to me why I am dumb for trying to hack your private computer network.")
|
|
||||||
await message.channel.send(rejection)
|
|
||||||
else:
|
|
||||||
result = subprocess.run(['ping', '-c', '4', target], capture_output=True, text=True)
|
|
||||||
await message.channel.send(f"`Ping result for {target}:`\n```\n{result.stdout}\n```")
|
|
||||||
except Exception as e:
|
|
||||||
await message.channel.send(f"`GarfBot Error: {str(e)}`")
|
|
||||||
|
|
||||||
if lower.startswith("garfdns "):
|
|
||||||
try:
|
|
||||||
logger.info(f"NSLookup Request - User: {user}, Server: {guild}, Target: {target}")
|
|
||||||
if is_private(target):
|
|
||||||
rejection = await garfield.generate_chat("Hey Garfield, explain to me why I am dumb for trying to hack your private computer network.")
|
|
||||||
await message.channel.send(rejection)
|
|
||||||
else:
|
|
||||||
result = subprocess.run(['nslookup', target], capture_output=True, text=True)
|
|
||||||
await message.channel.send(f"`NSLookup result for {target}:`\n```\n{result.stdout}\n```")
|
|
||||||
except Exception as e:
|
|
||||||
await message.channel.send(f"`GarfBot Error: {str(e)}`")
|
|
||||||
|
|
||||||
if lower.startswith("garfhack "):
|
|
||||||
try:
|
|
||||||
logger.info(f"Nmap Request - User: {user}, Server: {guild}, Target: {target}")
|
|
||||||
if is_private(target):
|
|
||||||
rejection = await garfield.generate_chat("Hey Garfield, explain to me why I am dumb for trying to hack your private computer network.")
|
|
||||||
await message.channel.send(rejection)
|
|
||||||
else:
|
|
||||||
await message.channel.send(f"`Scanning {target}...`")
|
|
||||||
result = subprocess.run(['nmap', '-Pn', '-O', '-v', target], capture_output=True, text=True)
|
|
||||||
await message.channel.send(f"`Ping result for {target}:`\n```\n{result.stdout}\n```")
|
|
||||||
except Exception as e:
|
|
||||||
await message.channel.send(f"`GarfBot Error: {str(e)}`")
|
|
||||||
|
|
||||||
# Kroger Shopping
|
# Kroger Shopping
|
||||||
if lower.startswith("garfshop "):
|
if lower.startswith("garfshop "):
|
||||||
try:
|
try:
|
||||||
@ -147,6 +97,20 @@ async def on_message(message):
|
|||||||
await message.channel.send(response)
|
await message.channel.send(response)
|
||||||
break
|
break
|
||||||
|
|
||||||
|
# Chats & pics
|
||||||
|
elif lower.startswith("hey garfield") or isinstance(message.channel, discord.DMChannel):
|
||||||
|
prompt = content[12:] if lower.startswith("hey garfield") else message.content
|
||||||
|
answer = await garfield.generate_chat(prompt)
|
||||||
|
logger.info(f"Chat Request - User: {user_name}, Server: {guild_name}, Prompt: {prompt}")
|
||||||
|
await message.channel.send(answer)
|
||||||
|
|
||||||
|
elif lower.startswith('garfpic '):
|
||||||
|
prompt = content[8:]
|
||||||
|
logger.info(f"Image Request - User: {user_name}, Server: {guild_name}, Prompt: {prompt}")
|
||||||
|
await message.channel.send(f"`Please wait... image generation queued: {prompt}`")
|
||||||
|
await garfield.garfpic(message, prompt)
|
||||||
|
|
||||||
|
|
||||||
# Run Garfbot
|
# Run Garfbot
|
||||||
async def garfbot_connect():
|
async def garfbot_connect():
|
||||||
while True:
|
while True:
|
||||||
|
@ -2,9 +2,10 @@
|
|||||||
|
|
||||||
from .log import logger
|
from .log import logger
|
||||||
from .kroger import Kroger
|
from .kroger import Kroger
|
||||||
from .iputils import is_private
|
# from .iputils import scan
|
||||||
from .aod import aod_message
|
|
||||||
from .qr import generate_qr
|
|
||||||
from .kroger import Kroger
|
from .kroger import Kroger
|
||||||
from .garfai import GarfAI
|
from .garfai import GarfAI
|
||||||
from .respond import GarfbotRespond
|
from .respond import GarfbotRespond
|
||||||
|
from .aod import aod_message
|
||||||
|
from .qr import generate_qr
|
||||||
|
from .iputils import IPUtils
|
@ -1,6 +1,11 @@
|
|||||||
|
import discord
|
||||||
import ipaddress
|
import ipaddress
|
||||||
|
import subprocess
|
||||||
|
from garfpy import logger
|
||||||
|
|
||||||
def is_private(target):
|
|
||||||
|
class IPUtils:
|
||||||
|
def is_private(self, target):
|
||||||
try:
|
try:
|
||||||
ip_obj = ipaddress.ip_address(target)
|
ip_obj = ipaddress.ip_address(target)
|
||||||
if ip_obj.is_private:
|
if ip_obj.is_private:
|
||||||
@ -17,3 +22,43 @@ def is_private(target):
|
|||||||
if "garfbot.art" in target.lower():
|
if "garfbot.art" in target.lower():
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
async def scan(self, message, user, guild, query):
|
||||||
|
split = query.split()
|
||||||
|
target = split[-1]
|
||||||
|
if self.is_private(target):
|
||||||
|
return
|
||||||
|
|
||||||
|
if query.startswith("garfping "):
|
||||||
|
try:
|
||||||
|
logger.info(f"Ping Request - User: {user}, Server: {guild}, Target: {target}")
|
||||||
|
await message.channel.send(f"`Pinging {target}...`")
|
||||||
|
result = subprocess.run(['ping', '-c', '4', target], capture_output=True, text=True)
|
||||||
|
embed = discord.Embed(title=f"Ping result:", color=0x4d4d4d)
|
||||||
|
embed.add_field(name=target, value=f"```{result.stdout}```")
|
||||||
|
await message.channel.send(embed=embed)
|
||||||
|
except Exception as e:
|
||||||
|
await message.channel.send(f"`GarfBot Error: {str(e)}`")
|
||||||
|
|
||||||
|
if query.startswith("garfdns "):
|
||||||
|
try:
|
||||||
|
logger.info(f"NSLookup Request - User: {user}, Server: {guild}, Target: {target}")
|
||||||
|
await message.channel.send(f"`Requesting {target}...`")
|
||||||
|
result = subprocess.run(['nslookup', target], capture_output=True, text=True)
|
||||||
|
embed = discord.Embed(title=f"NSLookup result:", color=0x4d4d4d)
|
||||||
|
embed.add_field(name=target, value=f"```{result.stdout}```")
|
||||||
|
await message.channel.send(embed=embed)
|
||||||
|
except Exception as e:
|
||||||
|
await message.channel.send(f"`GarfBot Error: {str(e)}`")
|
||||||
|
|
||||||
|
if query.startswith("garfhack "):
|
||||||
|
try:
|
||||||
|
logger.info(f"Nmap Request - User: {user}, Server: {guild}, Target: {target}")
|
||||||
|
await message.channel.send(f"`Scanning {target}...`")
|
||||||
|
result = subprocess.run(['nmap', '-Pn', '-O', '-v', target], capture_output=True, text=True)
|
||||||
|
embed = discord.Embed(title=f"Nmap scan result:", color=0x4d4d4d)
|
||||||
|
embed.add_field(name=target, value=f"```{result.stdout}```")
|
||||||
|
embed.set_footer(text="https://nmap.org/")
|
||||||
|
await message.channel.send(embed=embed)
|
||||||
|
except Exception as e:
|
||||||
|
await message.channel.send(f"`GarfBot Error: {str(e)}`")
|
Reference in New Issue
Block a user