mirror of
https://github.com/xuthus83/LittlePaimon.git
synced 2024-12-16 13:40:53 +08:00
✨ 原神扫码绑定
的二维码改为发送图片链接,前提为开启CookieWeb
。
This commit is contained in:
parent
b614a284d0
commit
1daea6a038
@ -6,15 +6,19 @@ import json
|
|||||||
import random
|
import random
|
||||||
import time
|
import time
|
||||||
import uuid
|
import uuid
|
||||||
|
import base64
|
||||||
from hashlib import md5
|
from hashlib import md5
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from string import ascii_letters
|
from string import ascii_letters
|
||||||
from string import digits
|
from string import digits
|
||||||
|
|
||||||
import qrcode
|
import qrcode
|
||||||
from nonebot import on_command, get_bot
|
from fastapi import FastAPI
|
||||||
|
from fastapi.responses import StreamingResponse
|
||||||
|
from nonebot import on_command, get_bot, get_app
|
||||||
from nonebot.adapters.onebot.v11 import Bot, MessageSegment, MessageEvent, GroupMessageEvent
|
from nonebot.adapters.onebot.v11 import Bot, MessageSegment, MessageEvent, GroupMessageEvent
|
||||||
|
|
||||||
|
from LittlePaimon.config import config
|
||||||
from LittlePaimon.database.models import PrivateCookie, LastQuery
|
from LittlePaimon.database.models import PrivateCookie, LastQuery
|
||||||
from LittlePaimon.utils import NICKNAME
|
from LittlePaimon.utils import NICKNAME
|
||||||
from LittlePaimon.utils.requests import aiorequests
|
from LittlePaimon.utils.requests import aiorequests
|
||||||
@ -75,7 +79,7 @@ def generate_qrcode(url):
|
|||||||
img = qr.make_image(fill_color='black', back_color='white')
|
img = qr.make_image(fill_color='black', back_color='white')
|
||||||
bio = BytesIO()
|
bio = BytesIO()
|
||||||
img.save(bio)
|
img.save(bio)
|
||||||
return MessageSegment.image(bio)
|
return f'base64://{base64.b64encode(bio.getvalue()).decode()}'
|
||||||
|
|
||||||
|
|
||||||
async def create_login_data():
|
async def create_login_data():
|
||||||
@ -124,7 +128,9 @@ async def _(event: MessageEvent): # sourcery skip: use-fstring-for-concatenatio
|
|||||||
await qrcode_bind.finish('你已经在绑定中了,请扫描上一次的二维码')
|
await qrcode_bind.finish('你已经在绑定中了,请扫描上一次的二维码')
|
||||||
login_data = await create_login_data()
|
login_data = await create_login_data()
|
||||||
running_login_data[str(event.user_id)] = login_data
|
running_login_data[str(event.user_id)] = login_data
|
||||||
img = generate_qrcode(login_data['url'])
|
img_b64 = generate_qrcode(login_data['url'])
|
||||||
|
running_login_data[str(event.user_id)]['img_b64'] = img_b64
|
||||||
|
img = f'二维码链接:{config.CookieWeb_url}/qrcode?user_id={event.user_id}' if config.CookieWeb_enable else MessageSegment.image(img_b64)
|
||||||
msg_data = await qrcode_bind.send(
|
msg_data = await qrcode_bind.send(
|
||||||
img + f'\n请在3分钟内使用米游社扫码并确认进行绑定。\n注意:1.扫码即代表你同意将Cookie信息授权给{NICKNAME}\n2.扫码时会提示登录原神,实际不会把你顶掉原神\n3.其他人请不要乱扫,否则会将你的账号绑到TA身上!',
|
img + f'\n请在3分钟内使用米游社扫码并确认进行绑定。\n注意:1.扫码即代表你同意将Cookie信息授权给{NICKNAME}\n2.扫码时会提示登录原神,实际不会把你顶掉原神\n3.其他人请不要乱扫,否则会将你的账号绑到TA身上!',
|
||||||
at_sender=True)
|
at_sender=True)
|
||||||
@ -190,3 +196,14 @@ async def check_qrcode():
|
|||||||
if not running_login_data:
|
if not running_login_data:
|
||||||
break
|
break
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
|
|
||||||
|
|
||||||
|
app: FastAPI = get_app()
|
||||||
|
|
||||||
|
|
||||||
|
@app.get('/LittlePaimon/cookie/qrcode')
|
||||||
|
async def qrcode_img_url(user_id: str):
|
||||||
|
if user_id not in running_login_data:
|
||||||
|
return {'status': 'error', 'msg': '二维码不存在'}
|
||||||
|
img_base64 = running_login_data[user_id]['img_b64'].lstrip('base64://')
|
||||||
|
return StreamingResponse(BytesIO(base64.b64decode(img_base64)), media_type='image/png')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user