zhenxun_bot/plugins/help/data_source.py
2021-05-20 19:23:32 +08:00

176 lines
6.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from util.img_utils import CreateImg
from configs.path_config import IMAGE_PATH, DATA_PATH
import ujson as json
import os
from .config import *
from nonebot import require
export = require("nonebot_plugin_manager")
width = 1200
e_height = 0
u_height = 700
o_height = 1250
# f_height =
def create_help_img():
if os.path.exists(IMAGE_PATH + 'help.png'):
os.remove(IMAGE_PATH + 'help.png')
h = (100 + len(utility_help) * 24 + len(entertainment_help) * 24 + len(other_help) * 24) * 2
A = CreateImg(width, h - 200, font_size=24)
e = CreateImg(width, len(entertainment_help) * 42, font_size=24)
rst = ''
i = 0
for cmd in entertainment_help:
rst += f'{i + 1}.{entertainment_help[cmd]}\n'
i += 1
e.text((10, 10), '娱乐功能:')
e.text((40, 40), rst)
u = CreateImg(width, len(utility_help) * 40 + 50, font_size=24, color='black')
rst = ''
i = 0
for cmd in utility_help:
rst += f'{i + 1}.{utility_help[cmd]}\n'
i += 1
u.text((10, 10), '实用功能:', fill=(255, 255, 255))
u.text((40, 40), rst, fill=(255, 255, 255))
o = CreateImg(width, len(other_help) * 40, font_size=24)
rst = ''
i = 0
for i in range(len(other_help)):
rst += f'{i + 1}.{other_help[i]}\n'
i += 1
o.text((10, 10), '其他功能:')
o.text((40, 40), rst)
A.paste(e, (0, 0))
A.paste(u, (0, u_height))
A.paste(o, (0, o_height))
A.text((10, h * 0.72), '大部分交互功能可以通过输入‘取消’,‘算了’来取消当前交互\n对我说 “指令名 帮助” 获取对应详细帮助\n'
'可以通过 “滴滴滴- 后接内容” 联系管理员(有趣的想法尽管来吧!<还有Bug和建议>\n[群管理员请看 管理员帮助(群主与管理员自带 5 级权限)]')
A.text((10, h * 0.79), f"【注】「色图概率:好感度 + 70%\n"
f"\t\t每 3 点好感度 + 1次开箱初始 20 次\n"
f"\t\t开启/关闭功能只需输入‘开启/关闭 指令名’(每个功能的第一个指令)」\n"
f"\t\t示例:开启签到")
A.save(IMAGE_PATH + 'help.png')
def create_group_help_img(group_id: int):
group_id = str(group_id)
try:
with open(DATA_PATH + 'manager/plugin_list.json', 'r', encoding='utf8') as f:
plugin_list = json.load(f)
except (ValueError, FileNotFoundError):
pass
h = (100 + len(utility_help) * 24 + len(entertainment_help) * 24 + len(other_help) * 24) * 2
A = CreateImg(1200, h - 200, font_size=24)
u = CreateImg(1200, len(utility_help) * 40, font_size=24, color='black')
o = CreateImg(1200, len(other_help) * 40, font_size=24)
e = CreateImg(width, len(entertainment_help) * 42, font_size=24)
rst = ''
i = 1
# print(plugin_list)
for cmd in entertainment_help.keys():
# dfg = '_'
# if cmd == 'draw_card_p':
# cmd = 'draw_card'
# dfg = 'p'
# elif cmd == 'draw_card_g':
# cmd = 'draw_card'
# dfg = 'g'
# flag = '√'
# if group_id in plugin_list[cmd]:
# if not plugin_list[cmd][group_id]:
# flag = '×'
# if cmd in ['nickname']:
# flag = '-'
flag, dfg = parse_cmd(cmd, group_id, plugin_list)
if dfg:
cmd = rcmd(dfg)
# if dfg == 'p':
# cmd = 'draw_card_p'
# elif dfg == 'g':
# cmd = 'draw_card_g'
rst += f'{flag}{i}.{entertainment_help[cmd]}\n'
i += 1
e.text((10, 10), '娱乐功能:')
e.text((40, 40), rst)
rst = ''
i = 1
for cmd in utility_help.keys():
# flag = '√'
# if group_id in plugin_list[cmd]:
# if not plugin_list[cmd][group_id]:
# flag = '×'
# if cmd in ['bt', 'reimu']:
# flag = '-'
flag, dfg = parse_cmd(cmd, group_id, plugin_list)
rst += f'{flag}{i}.{utility_help[cmd]}\n'
i += 1
u.text((10, 10), '实用功能:', fill=(255, 255, 255))
u.text((40, 40), rst, fill=(255, 255, 255))
rst = ''
for i in range(len(other_help)):
rst += f'{i + 1}.{other_help[i]}\n'
o.text((10, 10), '其他功能:')
o.text((40, 40), rst)
A.paste(e, (0, 0))
A.paste(u, (0, u_height))
A.paste(o, (0, o_height))
# A.text((width, 10), f'总开关【{"√" if data["总开关"] else "×"}】')
A.text((10, h * 0.72), '大部分交互功能可以通过输入‘取消’,‘算了’来取消当前交互\n对我说 “指令名 帮助” 获取对应详细帮助\n'
'可以通过 “滴滴滴- 后接内容” 联系管理员(有趣的想法尽管来吧!<还有Bug和建议>'
'\n[群管理员请看 管理员帮助(群主与管理员自带 5 级权限)]')
A.text((10, h * 0.79), f"【注】「色图概率:好感度 + 70%\n"
f"\t\t每 3 点好感度 + 1次开箱初始 20 次\n"
f"\t\t开启/关闭功能只需输入‘开启/关闭 指令名’(每个功能的第一个指令)」\n"
f"\t\t示例:开启签到\n"
f"\t\t可以通过管理员开关自动发送消息(早晚安等)\n"
f"\t\t^请查看管理员帮助^")
A.save(DATA_PATH + f'group_help/{group_id}.png')
def parse_cmd(cmd, group_id, plugin_list):
flag = ''
dfg = None
if cmd == 'draw_card_p':
cmd = 'draw_card'
dfg = 'p'
elif cmd == 'draw_card_g':
cmd = 'draw_card'
dfg = 'g'
elif cmd == 'draw_card_h':
cmd = 'draw_card'
dfg = 'h'
elif cmd == 'pixiv_r':
cmd = 'pixiv'
dfg = 'r'
elif cmd == 'pixiv_s':
cmd = 'pixiv'
dfg = 's'
if group_id in plugin_list[cmd]:
if not plugin_list[cmd][group_id]:
flag = '×'
if cmd in ['bt', 'reimu', 'nickname']:
flag = '- '
return flag, dfg
def rcmd(dfg):
if dfg == 'p':
return 'draw_card_p'
if dfg == 'g':
return 'draw_card_g'
if dfg == 'g':
return 'draw_card_h'
if dfg == 'r':
return 'pixiv_r'
if dfg == 's':
return 'pixiv_s'