Fix small bugs and redesign some cards (#8)

* fix: 🐛 fix some config examples

* docs: 📝 add doc that install genshin.py with starrail support

* fix: 🐛 suring mysql won't think 'admin' as sys word

* feat(stats):  new design of stats card

* feat(gacha):  new design of gacha log card
This commit is contained in:
CWorld 2023-05-07 18:56:52 +08:00 committed by GitHub
parent a9dca3bf2a
commit 5616f0637c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 324 additions and 314 deletions

View File

@ -40,7 +40,7 @@ OWNER=0
# VERIFY_GROUPS=[]
# logger 配置 可选配置项
# LOGGER_NAME="TGPaimon"
# LOGGER_NAME="HonkaiStarRailGram"
# 打印时的宽度
# LOGGER_WIDTH=180
# log 文件存放目录
@ -80,12 +80,11 @@ LOGGER_FILTERED_NAMES=["uvicorn","ErrorPush","ApiHelper"]
# API_ID=12345
# API_HASH="abcdefg"
# ENKA_NETWORK_API 可选配置项
# ENKA_NETWORK_API 可选配置项(暂时无法使用)
# ENKA_NETWORK_API_AGENT=""
# Web Server
# WEB_SWITCH=False # 是否开启
# WEB_URL=http://localhost:8080/
# WEB_ENABLE=False # 是否开启 WebServer
# WEB_HOST=localhost
# WEB_PORT=8080

1
.gitignore vendored
View File

@ -139,6 +139,7 @@ data/
plugins/genshin/daily/daily.json
metadata/data/
resources/assets/
run.ps1
### private plugins ###
plugins/private

View File

@ -13,7 +13,6 @@
基于 [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) 的 PaiGram
![Alt](https://repobeats.axiom.co/api/embed/f73c1121006cb86196f83da2170242b7a97f8be0.svg "Repobeats analytics image")
## 环境需求
@ -37,6 +36,10 @@ poetry install
poetry run playwright install chromium
```
```bash
pip install git+https://github.com/PaiGramTeam/genshin.py@sr
```
#### 可选依赖项
```bash

View File

@ -193,7 +193,7 @@ def upgrade() -> None:
)
try:
statement = "SELECT * FROM admin;"
statement = "SELECT * FROM `admin`;"
old_user_table_data = connection.execute(text(statement))
except NoSuchTableError:
logger.warning("Table 'admin' doesn't exist")

View File

@ -1,341 +1,342 @@
@font-face {
font-family: "tttgbnumber";
src: url("./../../fonts/tttgbnumber.ttf");
font-weight: normal;
font-style: normal;
font-family: "tttgbnumber";
src: url("./../../fonts/tttgbnumber.ttf");
font-weight: normal;
font-style: normal;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
user-select: none;
.header {
background: #e0dad3 url(./img/starrail.png) no-repeat right;
box-shadow: 0 0 8px #72a2ae79;
}
.frame {
border-color: #cdbea8;
}
body {
font-size: 18px;
color: #1e1f20;
font-family: PingFangSC-Medium, PingFang SC, sans-serif;
transform: scale(1.5);
transform-origin: 0 0;
width: 510px;
font-size: 18px;
color: #1e1f20;
font-family: PingFangSC-Medium, PingFang SC, sans-serif;
transform: scale(1.5);
transform-origin: 0 0;
width: 510px;
}
.container {
width: 510px;
padding: 20px 15px 10px 15px;
background-color: #f5f6fb;
width: 510px;
padding: 20px 15px 10px 15px;
background-color: #f5f6fb;
}
.head_box {
border-radius: 9999px;
font-family: tttgbnumber, sans-serif;
padding: 10px 20px;
position: relative;
box-shadow: 0 5px 10px 0 rgb(0 0 0 / 15%);
border-radius: 9999px;
font-family: tttgbnumber, sans-serif;
padding: 10px 20px;
position: relative;
box-shadow: 0 5px 10px 0 rgb(0 0 0 / 15%);
}
.head_box .id_text {
font-size: 24px;
font-size: 24px;
}
.head_box .day_text {
font-size: 20px;
font-size: 20px;
}
.head_box .starrail_logo {
position: absolute;
top: 10px;
right: 30px;
width: 120px;
position: absolute;
top: 10px;
right: 30px;
width: 120px;
}
.logo {
font-size: 12px;
font-family: "tttgbnumber", serif;
text-align: center;
color: #7994a7;
position: relative;
padding-left: 10px;
font-size: 12px;
font-family: "tttgbnumber", serif;
text-align: center;
color: #7994a7;
position: relative;
padding-left: 10px;
}
.data_box {
border-radius: 15px;
margin-top: 20px;
margin-bottom: 10px;
padding: 20px 0 5px 10px;
background: #fff;
box-shadow: 0 5px 10px 0 rgb(0 0 0 / 15%);
position: relative;
border-radius: 15px;
margin-top: 20px;
margin-bottom: 10px;
padding: 20px 0 5px 10px;
background: #fff;
box-shadow: 0 5px 10px 0 rgb(0 0 0 / 15%);
position: relative;
}
.tab_lable {
position: absolute;
top: -10px;
left: -8px;
background: #d4b98c;
color: #fff;
font-size: 14px;
padding: 3px 10px;
border-radius: 15px 0 15px 15px;
z-index: 20;
position: absolute;
top: -10px;
left: -8px;
background: #d4b98c;
color: #fff;
font-size: 14px;
padding: 3px 10px;
border-radius: 15px 0 15px 15px;
z-index: 20;
}
.data_line {
display: flex;
justify-content: space-around;
margin-bottom: 14px;
padding-right: 10px;
display: flex;
justify-content: space-around;
margin-bottom: 14px;
padding-right: 10px;
}
.data_line_item {
width: 100px;
text-align: center;
width: 100px;
text-align: center;
/* margin: 0 20px; */
/* margin: 0 20px; */
}
.num {
font-family: tttgbnumber, serif;
font-size: 24px;
font-family: tttgbnumber, serif;
font-size: 24px;
}
.num .unit {
font-size: 12px;
font-size: 12px;
}
.data_box .lable {
font-size: 14px;
color: #7f858a;
line-height: 1;
margin-top: 3px;
font-size: 14px;
color: #7f858a;
line-height: 1;
margin-top: 3px;
}
.info_box_border {
border-radius: 15px;
border-radius: 15px;
/* margin-top: 20px; */
margin-bottom: 20px;
padding: 6px 0 5px 10px;
background: #fff;
box-shadow: 0 5px 10px 0 rgb(0 0 0 / 15%);
position: relative;
/* margin-top: 20px; */
margin-bottom: 20px;
padding: 6px 0 5px 10px;
background: #fff;
box-shadow: 0 5px 10px 0 rgb(0 0 0 / 15%);
position: relative;
}
.card_list {
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
}
.card_list .item {
margin: 0 8px 10px 0;
border-radius: 7px;
box-shadow: 0 2px 6px 0 rgb(132 93 90 / 30%);
height: 90px;
position: relative;
overflow: hidden;
background: #e7e5d9;
margin: 0 8px 10px 0;
border-radius: 7px;
box-shadow: 0 2px 6px 0 rgb(132 93 90 / 30%);
height: 90px;
position: relative;
overflow: hidden;
background: #e7e5d9;
}
.card_list .item img {
width: 70px;
height: 70px;
border-radius: 7px 7px 20px 0;
width: 70px;
height: 70px;
border-radius: 7px 7px 20px 0;
}
.card_list .item.star5 img {
background-image: url(./../../genshin/abyss/background/roleStarBg5.png);
width: 100%;
height: 70px;
/* filter: brightness(1.1); */
background-size: 100%;
background-repeat: no-repeat;
background-image: url(./../../genshin/abyss/background/roleStarBg5.png);
width: 100%;
height: 70px;
/* filter: brightness(1.1); */
background-size: 100%;
background-repeat: no-repeat;
}
.card_list .item.star4 img {
width: 100%;
height: 70px;
background-image: url(./../../genshin/abyss/background/roleStarBg4.png);
background-size: 100%;
background-repeat: no-repeat;
width: 100%;
height: 70px;
background-image: url(./../../genshin/abyss/background/roleStarBg4.png);
background-size: 100%;
background-repeat: no-repeat;
}
.card_list .item .num {
position: absolute;
top: 0;
right: 0;
z-index: 9;
font-size: 18px;
text-align: center;
color: #fff;
border-radius: 3px;
padding: 1px 5px;
background: rgb(0 0 0 / 50%);
font-family: "tttgbnumber", serif;
position: absolute;
top: 0;
right: 0;
z-index: 9;
font-size: 18px;
text-align: center;
color: #fff;
border-radius: 3px;
padding: 1px 5px;
background: rgb(0 0 0 / 50%);
font-family: "tttgbnumber", serif;
}
.card_list .item .name,
.card_list .item .num_name {
position: absolute;
top: 71px;
left: 0;
z-index: 9;
font-size: 12px;
text-align: center;
width: 100%;
height: 16px;
line-height: 18px;
position: absolute;
top: 71px;
left: 0;
z-index: 9;
font-size: 12px;
text-align: center;
width: 100%;
height: 16px;
line-height: 18px;
}
.card_list .item .num_name {
font-family: "tttgbnumber", serif;
font-size: 16px;
font-family: "tttgbnumber", serif;
font-size: 16px;
}
.base_info {
position: relative;
padding-left: 10px;
margin: 5px 10px;
position: relative;
padding-left: 10px;
margin: 5px 10px;
}
.uid::before {
content: " ";
position: absolute;
width: 5px;
height: 24px;
border-radius: 1px;
left: 0;
top: 0;
background: #d3bc8d;
content: " ";
position: absolute;
width: 5px;
height: 24px;
border-radius: 1px;
left: 0;
top: 0;
background: #d3bc8d;
}
.label_301 {
background-color: rgb(235 106 75);
background-color: rgb(235 106 75);
}
.label_302 {
background-color: #e69449;
background-color: #e69449;
}
.label_200 {
background-color: #757cc8;
background-color: #757cc8;
}
.label {
color: #fff;
border-radius: 10px;
font-size: 12px;
padding: 2px 7px;
vertical-align: 2px;
color: #fff;
border-radius: 10px;
font-size: 12px;
padding: 2px 7px;
vertical-align: 2px;
}
.ritem {
display: flex;
font-size: 12px;
margin-bottom: 5px;
display: flex;
font-size: 12px;
margin-bottom: 5px;
}
.info_role {
display: flex;
flex-wrap: wrap;
padding: 0 0 5px 9px;
display: flex;
flex-wrap: wrap;
padding: 0 0 5px 9px;
}
.ritem .role {
width: 20px;
height: 20px;
background-color: #ffb285;
border-radius: 100%;
width: 20px;
height: 20px;
background-color: #ffb285;
border-radius: 100%;
}
.ritem .weapon_box {
overflow: hidden;
width: 20px;
height: 20px;
border-radius: 100%;
overflow: hidden;
width: 20px;
height: 20px;
border-radius: 100%;
}
.ritem .weapon {
width: 20px;
height: 20px;
background-color: #ffb285;
border-radius: 100%;
transform: scale(1.5);
-webkit-transform: scale(1.5);
width: 20px;
height: 20px;
background-color: #ffb285;
border-radius: 100%;
transform: scale(1.5);
-webkit-transform: scale(1.5);
}
.ritem .role_text {
margin: 2px 3px 0 2px;
display: flex;
align-items: baseline;
margin: 2px 3px 0 2px;
display: flex;
align-items: baseline;
}
.ritem .role_name {
width: 24px;
white-space: nowrap;
overflow: hidden;
width: 24px;
white-space: nowrap;
overflow: hidden;
}
.ritem .role_num {
width: 24px;
width: 24px;
}
.line_box {
height: 32px;
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 12px;
color: #7d7d7d;
padding-bottom: 5px;
height: 32px;
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 12px;
color: #7d7d7d;
padding-bottom: 5px;
}
.line_box .line {
height: 2px;
flex-grow: 1;
background-color: #ebebeb;
margin: 0 10px;
height: 2px;
flex-grow: 1;
background-color: #ebebeb;
margin: 0 10px;
}
.red {
color: #f21000;
color: #f21000;
}
.orange {
color: #ff8d00;
color: #ff8d00;
}
.green {
color: #12d88c;
color: #12d88c;
}
.blue {
color: #4169e1;
color: #4169e1;
}
.purple {
color: #7500ff;
color: #7500ff;
}
.minimum {
position: absolute;
top: 0;
right: 0;
z-index: 9;
font-size: 12px;
text-align: center;
color: #fff;
border-radius: 3px;
padding: 1px 3px;
background-color: rgb(0 0 0 / 80%);
font-family: "tttgbnumber", serif;
position: absolute;
top: 0;
right: 0;
z-index: 9;
font-size: 12px;
text-align: center;
color: #fff;
border-radius: 3px;
padding: 1px 3px;
background-color: rgb(0 0 0 / 80%);
font-family: "tttgbnumber", serif;
}
.hasMore {
font-size: 12px;
margin: 6px 0;
color: #7f858a;
font-size: 12px;
margin: 6px 0;
color: #7f858a;
}

View File

@ -1,88 +1,80 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<link rel="shortcut icon" href="#"/>
<link rel="stylesheet" type="text/css" href="gacha_log.css"/>
<link rel="preload" href="./../../fonts/tttgbnumber.ttf" as="font">
<link rel="preload" href="./img/提纳里.png" as="image">
<link rel="preload" href="./../../genshin/abyss/background/roleStarBg5.png" as="image">
<link rel="preload" href="./../../genshin/abyss/background/roleStarBg4.png" as="image">
<style>
.head_box {
background-position: right center;
background: #fff url(./img/提纳里.png) no-repeat;
background-size: cover;
}
</style>
<title></title>
</head>
<body id="container" class="body_box">
<div class="container">
<div class="info_box">
<div class="head_box">
<div class="id_text">
ID: {{ uid }}
</div>
<h2 class="day_text">
{{ allNum }}抽
<span class="label label_{{type}}">{{ typeName }}</span>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<link rel="stylesheet" type="text/css" href="gacha_log.css" />
<link type="text/css" href="../../styles/public.css" rel="stylesheet" />
<link rel="preload" href="./img/starrail.png" as="image" />
<script src="../../js/tailwindcss-3.1.8.js"></script>
<title>Title</title>
</head>
<body id="container" class="body_box">
<div class="container">
<div class="info_box">
<div class="header p-2 rounded-xl bg-contain mb-6">
<div class="frame p-4 flex-col rounded-lg border-solid border-2">
<h2 class="font-bold italic">ID: {{ uid }}</h2>
<h2 class="italic">
{{ allNum }}抽
<span class="label text-neutral-600 label_{{type}}"
>{{ typeName }}</span
>
</h2>
<img class="starrail_logo" src="./../../bot/help/background/starrail.png" alt=""/>
</div>
</div>
<div class="data_box">
<div class="tab_lable">数据总览</div>
{% for val in line %}
<div class="data_line">
{% for item in val %}
<div class="data_line_item">
<div class="num">{{item.num}}<span class="unit">{{item.unit}}</span></div>
<div class="lable">{{item.lable}}</div>
</div>
{% endfor %}
<div class="tab_lable">数据总览</div>
{% for val in line %}
<div class="data_line">
{% for item in val %}
<div class="data_line_item">
<div class="num">
{{item.num}}<span class="unit">{{item.unit}}</span>
</div>
<div class="lable">{{item.lable}}</div>
</div>
{% endfor %}
</div>
{% endfor %}
<div class="line_box">
<span class="line"></span>
<span class="text">五星历史 {{firstTime}} ~ {{lastTime}}</span>
<span class="line"></span>
<div class="line_box">
<span class="line"></span>
<span class="text">五星历史 {{firstTime}} ~ {{lastTime}}</span>
<span class="line"></span>
</div>
<div class="card_list">
{% for val in fiveLog %}
<div class="item star5">
{% if val.isUp %}
<span class="minimum">UP</span>
{% endif %}
<img class="role" src="{{ val.icon }}" alt="" />
<!-- <div class="num">{{val.num}}</div>-->
<div class="num_name">{{ val.count }}</div>
</div>
{% endfor %}
</div>
<div class="line_box">
<span class="line"></span>
<span class="text">四星最近历史</span>
<span class="line"></span>
</div>
<div class="card_list">
{% for val in fiveLog %}
<div class="item star5">
{% if val.isUp %}
<span class="minimum">UP</span>
{% endif %}
<img class="role" src="{{ val.icon }}" alt=""/>
<!-- <div class="num">{{val.num}}</div>-->
<div class="num_name">{{ val.count }}</div>
</div>
{% endfor %}
</div>
<div class="line_box">
<span class="line"></span>
<span class="text">四星最近历史</span>
<span class="line"></span>
</div>
<div class="card_list">
{% for val in fourLog %}
<div class="item star4">
<img class="role" src="{{ val.icon }}" alt=""/>
<!-- <div class="num">{{val.num}}</div>-->
<div class="num_name">{{ val.count }}</div>
</div>
{% endfor %}
<div class="card_list">
{% for val in fourLog %}
<div class="item star4">
<img class="role" src="{{ val.icon }}" alt="" />
<!-- <div class="num">{{val.num}}</div>-->
<div class="num_name">{{ val.count }}</div>
</div>
{% endfor %}
</div>
</div>
<div class="logo"> Template By Yunzai-Bot</div>
<div class="logo">Template By Yunzai-Bot</div>
</div>
</div>
</div>
</body>
</html>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 860 B

View File

@ -13,18 +13,25 @@
</head>
<body class="text-neutral-600">
<div class="mx-auto max-w-[600px] py-8">
<div class="header p-6 flex mb-8 rounded-xl bg-cover justify-between">
<div class="flex flex-col items-center justify-center">
<h1 class="text-4xl italic name mb-2 px-2">
{{ info.nickname }}
<span class="text-lg">lv.{{ info.level }}</span>
</h1>
<h1 class="italic uid px-10">UID - {{ uid }}</h1>
<div class="header p-2 rounded-xl bg-cover mb-6">
<div
class="frame-pic p-4 flex justify-between rounded-lg border-solid border-2"
>
<div class="flex flex-col items-center justify-center">
<h1 class="name text-4xl italic mb-2 px-2 text-shadow">
{{ info.nickname }}
<span class="text-lg">lv.{{ info.level }}</span>
</h1>
<h1 class="italic uid px-10">UID - {{ uid }}</h1>
</div>
</div>
</div>
<div class="box pt-4 rounded-xl overflow-hidden">
<div>
<h2 class="box-title text-center text-xl ring text-neutral-100 p-1">
<div class="box p-2 rounded-xl overflow-hidden">
<div class="frame rounded-lg border-solid border-2">
<h2
class="title font-semibold pt-4 text-center text-xl text-neutral-700 p-1"
>
<img src="./items/star.png" class="inline-block w-4" />
数据总览
</h2>
<div class="p-6 grid grid-cols-4 gap-4 text-center">
@ -35,10 +42,10 @@
</div>
{% endfor %}
</div>
</div>
<div class="about text-center leading-8 text-xs opacity-50">
所有数据会有一小时延迟 以游戏内为准 此处仅供参考
<div class="about text-center leading-8 text-xs opacity-50">
所有数据会有一小时延迟 以游戏内为准 此处仅供参考
</div>
</div>
</div>
</div>

View File

@ -1,49 +1,56 @@
body {
background-color: #f5f6fb;
background-color: #f5f6fb;
}
.header {
background-image: url(../../bot/help/background/header.png);
box-shadow: 0 0 8px rgb(123 242 248 / 50%);
background-image: url(../../bot/help/background/header.png);
box-shadow: 0 0 8px #72a2ae79;
}
.box {
background-color: #fdfdf3;
box-shadow: 0 0 8px rgb(123 242 248 / 50%);
}
.box-title {
background-color: #43849abb;
--tw-ring-color: #43849a;
background-color: #f4f2e4;
box-shadow: 0 0 8px #72a2ae79;
}
.pointer-bar {
width: 95%;
height: 8px;
display: inline-block;
background-color: rgb(0, 0, 0, 0.2);
border-radius: 0.25rem;
width: 95%;
height: 8px;
display: inline-block;
background-color: rgb(0, 0, 0, 0.2);
border-radius: 0.25rem;
}
.pointer-progress-bar {
border-radius: 0.25rem;
height: 100%;
background: #fff6e2;
border-radius: 0.25rem;
height: 100%;
background: #fff6e2;
}
.name {
background: linear-gradient(to bottom, #FFFFEE, #FFEEFF, #EEFFFF);
background-clip: text;
-webkit-background-clip: text;
color: transparent;
color: #ffffee;
text-shadow: 0 0.08em 0.1em #00000093, 0 0.1em 0.3em rgba(0, 0, 0, 0.4);
}
.uid {
color: #fff;
background: linear-gradient(to right, rgb(0, 0, 0, 0), #5ddddd, rgb(0, 0, 0, 0));
color: #fff;
background: linear-gradient(
to right,
rgb(0, 0, 0, 0),
#3f7587 25%,
#3f7587 75%,
rgb(0, 0, 0, 0)
);
}
.about {
background-color: #e0dad3;
color: #8a4d30;
background-color: #e0dad3;
color: #8a4d30;
}
.frame-pic {
border-color: #fdfdf356;
}
.frame {
border-color: #cdbea8;
}