jonbot #13
@@ -23,7 +23,7 @@ jobs:
|
|||||||
docker compose down
|
docker compose down
|
||||||
fi
|
fi
|
||||||
docker build -t git.crate.zip/crate/garfbot:latest .
|
docker build -t git.crate.zip/crate/garfbot:latest .
|
||||||
docker compose up -d
|
docker compose up -d --build
|
||||||
else
|
else
|
||||||
docker restart garfbot
|
docker restart garfbot
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -2,6 +2,19 @@ services:
|
|||||||
garfbot:
|
garfbot:
|
||||||
image: git.crate.zip/crate/garfbot:latest
|
image: git.crate.zip/crate/garfbot:latest
|
||||||
container_name: garfbot
|
container_name: garfbot
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
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
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import re
|
|
||||||
import config
|
import config
|
||||||
import asyncio
|
import asyncio
|
||||||
import discord
|
import discord
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
# garfpy/__init__.py
|
# garfpy/__init__.py
|
||||||
|
|
||||||
from .log import logger
|
from .log import logger as logger
|
||||||
from .help import help
|
from .help import help as help
|
||||||
from .kroger import Kroger
|
from .kroger import Kroger as Kroger
|
||||||
from .kroger import Kroger
|
from .garfai import GarfAI as GarfAI
|
||||||
from .garfai import GarfAI
|
from .respond import GarfbotRespond as GarfbotRespond
|
||||||
from .respond import GarfbotRespond
|
from .aod import aod_message as aod_message
|
||||||
from .aod import aod_message
|
from .qr import generate_qr as generate_qr
|
||||||
from .qr import generate_qr
|
from .iputils import IPUtils as IPUtils
|
||||||
from .iputils import IPUtils
|
from .weather import WeatherAPI as WeatherAPI
|
||||||
from .weather import WeatherAPI
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import os
|
import os
|
||||||
import re
|
|
||||||
import json
|
import json
|
||||||
import discord
|
import discord
|
||||||
from garfpy import logger
|
from garfpy import logger
|
||||||
|
|||||||
30
jonbot/Dockerfile
Normal file
30
jonbot/Dockerfile
Normal 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" ]
|
||||||
@@ -2,7 +2,33 @@ import config
|
|||||||
import openai
|
import openai
|
||||||
import discord
|
import discord
|
||||||
import asyncio
|
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
|
openai.api_key = config.OPENAI_TOKEN
|
||||||
jonkey = config.JONBOT_TOKEN
|
jonkey = config.JONBOT_TOKEN
|
||||||
@@ -13,6 +39,7 @@ intents.messages = True
|
|||||||
intents.message_content = True
|
intents.message_content = True
|
||||||
client = discord.Client(intents=intents)
|
client = discord.Client(intents=intents)
|
||||||
|
|
||||||
|
|
||||||
@client.event
|
@client.event
|
||||||
async def on_ready():
|
async def on_ready():
|
||||||
print(f"Logged in as {client.user.name} running {model}.", flush=True)
|
print(f"Logged in as {client.user.name} running {model}.", flush=True)
|
||||||
@@ -40,6 +67,36 @@ async def on_message(message):
|
|||||||
e = str(e)
|
e = str(e)
|
||||||
await message.channel.send(f"`JonBot Error: {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():
|
async def jonbot_connect():
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
Reference in New Issue
Block a user