add qr code gen

This commit is contained in:
2025-05-25 04:02:34 -05:00
parent 716e30e2b1
commit a081edfa97
4 changed files with 81 additions and 7 deletions

View File

@ -6,8 +6,8 @@ import subprocess
from garfpy import(
logger, is_private,
kroger_token, find_store, search_product,
picture_time, process_image_requests, generate_chat,
aod_message, wikisum)
garfpic, process_image_requests, generate_chat,
aod_message, wikisum, generate_qr)
gapikey = config.GIF_TOKEN
@ -50,13 +50,24 @@ async def on_message(message):
prompt = message.content[8:]
logger.info(f"Image Request - User: {user}, Server: {server}, Prompt: {prompt}")
await message.channel.send(f"`Please wait... image generation queued: {prompt}`")
await picture_time(message, prompt)
await garfpic(message, prompt)
if message.content.lower().startswith('garfwiki '):
search_term = message.content[9:]
summary = await wikisum(search_term)
await message.channel.send(summary)
if message.content.lower().startswith('garfqr '):
text = message.content[7:]
if len(text) > 1000:
await mesage.channel.send("❌ Text too long! Maximum 1000 characters.")
else:
try:
qr_code = generate_qr(text)
await discord.File(fp=qr_code, filename="qrcode.png")
except Exception as e:
await message.channel.send(e)
if message.content.lower().startswith("garfping "):
try:
query = message.content.split()

View File

@ -4,10 +4,11 @@ from .kroger import(
kroger_token, find_store, search_product
)
from .garfai import(
picture_time,
garfpic,
process_image_requests,
generate_chat
)
from .iputils import is_private
from .aod import aod_message
from .wiki import wikisum
from .wiki import wikisum
from .qr import generate_qr

View File

@ -12,10 +12,9 @@ openaikey = config.OPENAI_TOKEN
txtmodel = config.TXT_MODEL
imgmodel = config.IMG_MODEL
# GarfPics
image_request_queue = asyncio.Queue()
async def picture_time(message, prompt):
async def garfpic(message, prompt):
await image_request_queue.put({'message': message, 'prompt': prompt})
async def generate_image(prompt):

63
garfpy/qr.py Normal file
View File

@ -0,0 +1,63 @@
import qrcode
from io import BytesIO
def calculate_qr_settings(text):
text_length = len(text)
if text_length <= 25:
version = 1
box_size = 12
elif text_length <= 47:
version = 2
box_size = 10
elif text_length <= 77:
version = 3
box_size = 8
elif text_length <= 114:
version = 4
box_size = 7
elif text_length <= 154:
version = 5
box_size = 6
elif text_length <= 195:
version = 6
box_size = 5
elif text_length <= 224:
version = 7
box_size = 5
elif text_length <= 279:
version = 8
box_size = 4
elif text_length <= 335:
version = 9
box_size = 4
elif text_length <= 395:
version = 10
box_size = 3
else:
version = None
box_size = 3
return version, box_size
async def generate_qr(text):
version, box_size = calculate_qr_settings(text)
qr = qrcode.QRCode(
version=version,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=box_size,
border=4,
)
qr.add_data(text)
qr.make(fit=True)
qr_image = qr.make_image(fill_color="black", back_color="white")
img_buffer = BytesIO()
qr_image.save(img_buffer, format='PNG')
img_buffer.seek(0)
return img_buffer