add qr code gen
This commit is contained in:
17
garfmain.py
17
garfmain.py
@ -6,8 +6,8 @@ import subprocess
|
|||||||
from garfpy import(
|
from garfpy import(
|
||||||
logger, is_private,
|
logger, is_private,
|
||||||
kroger_token, find_store, search_product,
|
kroger_token, find_store, search_product,
|
||||||
picture_time, process_image_requests, generate_chat,
|
garfpic, process_image_requests, generate_chat,
|
||||||
aod_message, wikisum)
|
aod_message, wikisum, generate_qr)
|
||||||
|
|
||||||
|
|
||||||
gapikey = config.GIF_TOKEN
|
gapikey = config.GIF_TOKEN
|
||||||
@ -50,13 +50,24 @@ async def on_message(message):
|
|||||||
prompt = message.content[8:]
|
prompt = message.content[8:]
|
||||||
logger.info(f"Image Request - User: {user}, Server: {server}, Prompt: {prompt}")
|
logger.info(f"Image Request - User: {user}, Server: {server}, Prompt: {prompt}")
|
||||||
await message.channel.send(f"`Please wait... image generation queued: {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 '):
|
if message.content.lower().startswith('garfwiki '):
|
||||||
search_term = message.content[9:]
|
search_term = message.content[9:]
|
||||||
summary = await wikisum(search_term)
|
summary = await wikisum(search_term)
|
||||||
await message.channel.send(summary)
|
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 "):
|
if message.content.lower().startswith("garfping "):
|
||||||
try:
|
try:
|
||||||
query = message.content.split()
|
query = message.content.split()
|
||||||
|
@ -4,10 +4,11 @@ from .kroger import(
|
|||||||
kroger_token, find_store, search_product
|
kroger_token, find_store, search_product
|
||||||
)
|
)
|
||||||
from .garfai import(
|
from .garfai import(
|
||||||
picture_time,
|
garfpic,
|
||||||
process_image_requests,
|
process_image_requests,
|
||||||
generate_chat
|
generate_chat
|
||||||
)
|
)
|
||||||
from .iputils import is_private
|
from .iputils import is_private
|
||||||
from .aod import aod_message
|
from .aod import aod_message
|
||||||
from .wiki import wikisum
|
from .wiki import wikisum
|
||||||
|
from .qr import generate_qr
|
@ -12,10 +12,9 @@ openaikey = config.OPENAI_TOKEN
|
|||||||
txtmodel = config.TXT_MODEL
|
txtmodel = config.TXT_MODEL
|
||||||
imgmodel = config.IMG_MODEL
|
imgmodel = config.IMG_MODEL
|
||||||
|
|
||||||
# GarfPics
|
|
||||||
image_request_queue = asyncio.Queue()
|
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})
|
await image_request_queue.put({'message': message, 'prompt': prompt})
|
||||||
|
|
||||||
async def generate_image(prompt):
|
async def generate_image(prompt):
|
||||||
|
63
garfpy/qr.py
Normal file
63
garfpy/qr.py
Normal 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
|
Reference in New Issue
Block a user