re-add jonbot and do some linting

This commit is contained in:
2026-06-18 15:01:30 -05:00
parent 4dbacab952
commit 602db1bbf2
7 changed files with 112 additions and 15 deletions

View File

@@ -23,7 +23,7 @@ jobs:
docker compose down
fi
docker build -t git.crate.zip/crate/garfbot:latest .
docker compose up -d
docker compose up -d --build
else
docker restart garfbot
fi

View File

@@ -2,6 +2,19 @@ services:
garfbot:
image: git.crate.zip/crate/garfbot:latest
container_name: garfbot
build:
context: .
dockerfile: Dockerfile
restart: always
volumes:
- /home/crate/garfbot:/usr/src/app
- ../garfbot:/usr/src/app
jonbot:
image: git.crate.zip/crate/jonbot:latest
container_name: jonbot
build:
context: ./jonbot
dockerfile: Dockerfile
restart: always
volumes:
- ../garfbot/jonbot:/usr/src/app

View File

@@ -1,4 +1,3 @@
import re
import config
import asyncio
import discord

View File

@@ -1,12 +1,11 @@
# garfpy/__init__.py
from .log import logger
from .help import help
from .kroger import Kroger
from .kroger import Kroger
from .garfai import GarfAI
from .respond import GarfbotRespond
from .aod import aod_message
from .qr import generate_qr
from .iputils import IPUtils
from .weather import WeatherAPI
from .log import logger as logger
from .help import help as help
from .kroger import Kroger as Kroger
from .garfai import GarfAI as GarfAI
from .respond import GarfbotRespond as GarfbotRespond
from .aod import aod_message as aod_message
from .qr import generate_qr as generate_qr
from .iputils import IPUtils as IPUtils
from .weather import WeatherAPI as WeatherAPI

View File

@@ -1,5 +1,4 @@
import os
import re
import json
import discord
from garfpy import logger

30
jonbot/Dockerfile Normal file
View File

@@ -0,0 +1,30 @@
FROM python:alpine
WORKDIR /usr/src/app
RUN apk update && \
apk add --no-cache \
iputils \
bind-tools \
nmap \
gcc \
musl-dev \
jpeg-dev \
zlib-dev \
freetype-dev \
lcms2-dev \
openjpeg-dev \
tiff-dev \
tk-dev \
tcl-dev
RUN pip3 install --no-cache-dir \
config \
discord \
openai \
aiohttp \
requests \
wikipedia \
pillow \
qrcode
CMD [ "python", "jonbot.py" ]

View File

@@ -2,7 +2,33 @@ import config
import openai
import discord
import asyncio
import os
import logging
from logging.handlers import TimedRotatingFileHandler
from openai import AsyncOpenAI
logger = logging.getLogger("garflog")
logger.setLevel(logging.INFO)
formatter = logging.Formatter(
"%(asctime)s [%(levelname)s] %(message)s", datefmt="%Y-%m-%d %H:%M:%S"
)
file_handler = TimedRotatingFileHandler(
"jonbot.log",
when="midnight",
interval=1,
backupCount=7,
delay=True,
)
file_handler.setFormatter(formatter)
console_handler = logging.StreamHandler()
console_handler.setFormatter(formatter)
logger.addHandler(file_handler)
logger.addHandler(console_handler)
if not logger.hasHandlers():
logger.addHandler(file_handler)
logger.addHandler(console_handler)
openai.api_key = config.OPENAI_TOKEN
jonkey = config.JONBOT_TOKEN
@@ -13,6 +39,7 @@ intents.messages = True
intents.message_content = True
client = discord.Client(intents=intents)
@client.event
async def on_ready():
print(f"Logged in as {client.user.name} running {model}.", flush=True)
@@ -40,6 +67,36 @@ async def on_message(message):
e = str(e)
await message.channel.send(f"`JonBot Error: {e}`")
oai = AsyncOpenAI(
api_key=config.OPENAI_TOKEN,
base_url=config.BASE_URL,
)
async def generate_chat(self, question: str) -> str:
try:
response = await oai.chat.completions.create(
model=self.txtmodel,
messages=[
{"role": "system", "content": self.sysprompt},
{"role": "user", "content": question},
],
max_tokens=400,
temperature=1.2,
)
answer = response.choices[0].message.content
return answer.replace("an AI language model", "a cartoon animal")
except openai.BadRequestError as e:
logger.error(e)
return f"`JonBot Error: {e}`"
except openai.APIError as e:
logger.error(e)
return "`JonBot Error: Odie`"
except Exception as e:
logger.error(e)
return "`JonBot Error: Liz`"
async def jonbot_connect():
while True:
try: