Add files via upload

This commit is contained in:
HibiKier 2021-05-20 19:31:25 +08:00 committed by GitHub
parent 53d1ab9948
commit 5c6063d466
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 549 additions and 0 deletions

View File

@ -0,0 +1,49 @@
from .alc import get_almanac_base64_str, load_data
import os
from util.utils import get_bot, scheduler
from nonebot import on_command
from models.level_user import LevelUser
from nonebot.typing import T_State
from nonebot.adapters.cqhttp import Bot, GroupMessageEvent
from util.init_result import image
from services.log import logger
from models.group_remind import GroupRemind
FILE_PATH = os.path.dirname(__file__)
almanac = on_command('原神黄历', priority=5, block=True)
reload = on_command('重载原神黄历数据', priority=5, block=True)
@almanac.handle()
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
almanac_base64 = get_almanac_base64_str()
mes = image(b64=almanac_base64) + "\n ※ 黄历数据来源于 genshin.pub"
await almanac.send(mes)
logger.info(
f"(USER {event.user_id}, GROUP {event.group_id if event.message_type != 'private' else 'private'})"
f" 发送查看原神黄历")
@reload.handle()
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
if await LevelUser.check_level(event.user_id, event.group_id, 5):
load_data()
await reload.send("重载成功")
@scheduler.scheduled_job(
'cron',
hour=10,
minute=25,
)
async def _():
# 每日提醒
bot = get_bot()
gl = await bot.get_group_list(self_id=bot.self_id)
gl = [g['group_id'] for g in gl]
almanac_base64 = get_almanac_base64_str()
mes = image(b64=almanac_base64) + "\n ※ 黄历数据来源于 genshin.pub"
for gid in gl:
if await GroupRemind.get_status(gid, 'almanac'):
await bot.send_group_msg(group_id=int(gid), message=mes)

View File

@ -0,0 +1,123 @@
from PIL import Image, ImageDraw, ImageFont
from io import BytesIO
import os
import json
import random
import base64
import time
FILE_PATH = os.path.dirname(__file__)
FONT_PATH = os.path.join(FILE_PATH, "汉仪文黑.ttf")
data = {} # configs.json里的数据
almanac_data = {
# 生成的黄历base64字符串和黄历更新日期
"date": "",
"almanac_base64_str": ""
}
chinese = {"0": "", "1": "", "2": "", "3": "", "4": "", "5": "", "6": "", "7": "", "8": "", "9": ""}
def month_to_chinese(month: str):
# 把日期数字转成中文数字
m = int(month)
if m < 10:
return chinese[month[-1]]
elif m < 20:
return "" + chinese[month[-1]]
else:
return chinese[month[0]] + "" + chinese[month[-1]]
def load_data():
# 载入config.json文件的数据
global data
with open(os.path.join(FILE_PATH, 'config.json'), 'r', encoding='UTF-8') as f:
data = json.load(f)
almanac_data["date"] = ""
almanac_data["almanac_base64_str"] = ""
load_data()
def seed_random_list(seed: str, l: list):
# 使用随机种子随机选择列表中的元素,相同的种子和列表将返回同样的输出
seed = seed + str(l)
random.seed(seed)
index = random.random() * len(l)
return l[int(index)]
def generate_almanac():
# 生成黄历图片然后转换成base64保存到 almanac_data["almanac_base64_str"]
seed = time.strftime("%Y-%m-%d")
offset = 1
today_luck = []
l = list(data.keys())
while len(today_luck) < 6:
# 随机6个不同的运势放到 today_luck
r = seed_random_list(str(offset) + seed, l)
if r in today_luck:
offset += 1
else:
today_luck.append(r)
back = Image.open(os.path.join(FILE_PATH, "back.png"))
year = time.strftime("%Y")
month = month_to_chinese(time.strftime("%m")) + ""
day = month_to_chinese(time.strftime("%d")) + ""
draw = ImageDraw.Draw(back)
draw.text((118, 165), year, fill="#8d7650ff", font=ImageFont.truetype(FONT_PATH, size=30), anchor="mm",
align="center")
draw.text((260, 165), day, fill="#f7f8f2ff", font=ImageFont.truetype(FONT_PATH, size=35), anchor="mm",
align="center")
draw.text((410, 165), month, fill="#8d7650ff", font=ImageFont.truetype(FONT_PATH, size=30), anchor="mm",
align="center")
buff = Image.new("RGBA", (325, 160))
debuff = Image.new("RGBA", (325, 160))
buff_draw = ImageDraw.Draw(buff)
debuff_draw = ImageDraw.Draw(debuff)
for i in range(3):
buff_name = today_luck[i]
debuff_name = today_luck[(i + 3)]
buff_effect = seed_random_list(seed, data[buff_name]["buff"])
debuff_effect = seed_random_list(seed, data[debuff_name]["debuff"])
buff_draw.text((0, i * 53), buff_name, fill="#756141ff", font=ImageFont.truetype(FONT_PATH, size=25))
debuff_draw.text((0, i * 53), debuff_name, fill="#756141ff", font=ImageFont.truetype(FONT_PATH, size=25))
buff_draw.text((0, i * 53 + 28), buff_effect, fill="#b5b3acff", font=ImageFont.truetype(FONT_PATH, size=19))
debuff_draw.text((0, i * 53 + 28), debuff_effect, fill="#b5b3acff", font=ImageFont.truetype(FONT_PATH, size=19))
back.paste(buff, (150, 230), buff)
back.paste(debuff, (150, 400), debuff)
bio = BytesIO()
back.save(bio, format='PNG')
base64_str = base64.b64encode(bio.getvalue()).decode()
almanac_data["date"] = time.strftime("%Y-%m-%d")
almanac_data["almanac_base64_str"] = 'base64://' + base64_str
def get_almanac_base64_str():
# if almanac_data["date"] == time.strftime("%Y-%m-%d"):
# return almanac_data["almanac_base64_str"]
# else:
# generate_almanac()
# return almanac_data["almanac_base64_str"]
generate_almanac()
return almanac_data["almanac_base64_str"]

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -0,0 +1,70 @@
{
"抽卡":{
"buff": ["欧气满满,十连出金","出金不歪"],
"debuff": ["武器大师","保底出金","金色会是痛苦大剑"]
},
"刷世界boss":{
"buff": ["双攻双爆角斗士"],
"debuff": ["只有保底材料","贪生怕死角斗士"]
},
"刷风本":{
"buff": ["会有极品猎人套","会掉真正的少女心","治疗加成少女头"],
"debuff": ["勇往直前少女心","少女飘摇的杀意","少女暴怒的容颜"]
},
"刷火本":{
"buff": ["魔女帽子火伤杯","暴伤魔女帽!","火伤魔女心!"],
"debuff": ["幡 然 醒 悟","这么阴间的地方真的会有魔女套吗?","不务正业火魔女","会匹配到3个卢姥爷"]
},
"刷岩本":{
"buff": ["悠久的磐岩伴你左右","岩神的庇护常在"],
"debuff": ["防御流星杯,你值得拥有"]
},
"刷宗室":{
"buff": ["物理伤害骑士道,元素精通宗室套"],
"debuff": ["贪生怕死骑士道,物理伤害宗室杯"]
},
"刷冰本":{
"buff": ["双暴词条概率up"],
"debuff": ["防御力船帽,无人可及"]
},
"刷雷本":{
"buff": ["愿雷鸟伴你左右"],
"debuff": ["来表演一个只掉平雷套的绝活","风神忽悠雷凶兆"]
},
"锄大地":{
"buff": ["会掉一大堆紫色材料"],
"debuff": ["深渊法师爱你哟","会被冰水法控到死"]
},
"挖矿":{
"buff": ["开矿出双材料"],
"debuff": ["去别人世界会被拒"]
},
"刷天赋本":{
"buff": ["金色!我看到了金色的书!"],
"debuff": ["2蓝2绿不会变"]
},
"刷突破材料":{
"buff": ["金色!我看到了金色的材料!"],
"debuff": ["2蓝2绿不会变"]
},
"升级圣遗物":{
"buff": ["稀有词条跳跳跳","会双爆拉满"],
"debuff": ["女 仆 狂 喜","无中生有防御力","生命拉满","完美避开双爆"]
},
"打风魔龙":{
"buff": ["看我一箭一个风魔鸡","今天特瓦林可以给想要的突破材料","5金加原胚"],
"debuff": ["会不小心掉下平台","不小心被地板烫死了"]
},
"打狼王":{
"buff": ["今天安德琉斯的心情不错可以py一下","5金加原胚"],
"debuff": ["狼尾巴*1"]
},
"打公子":{
"buff": ["今天可以和公子py想要的突破材料","5金加原胚"],
"debuff": ["要角没有!要命一条!"]
}
}

Binary file not shown.

View File

@ -0,0 +1,72 @@
from nonebot import on_command
from nonebot.typing import T_State
from nonebot.adapters.cqhttp import Bot, MessageEvent
from util.init_result import image
import time
material = on_command('今日素材', aliases={'今日材料', '今天素材', '今天材料'}, priority=5, block=True)
role_material = on_command('天赋材料', priority=5, block=True)
def get_today_material(name: str):
# 返回今天的材料图片CQ码
if name == '天赋材料':
return image('天赋材料.png', "genshin/material/")
week = time.strftime("%w")
png_name = ''
if week == "0":
return "今天是周日,所有材料副本都开放了。"
elif week in ["1", "4"]:
png_name = f"{name}_周一周四.png"
elif week in ["2", "5"]:
png_name = f"{name}_周二周五.png"
elif week in ["3", "6"]:
png_name = f"{name}_周三周六.png"
return image(png_name, "genshin/material/")
# @sv.on_fullmatch('开启原神每日素材提醒')
# async def open_remind(bot , ev):
# gid = str(ev.group_id)
# if not (gid in group_list):
# group_list.append(gid)
# save_group_list()
# await bot.send(ev, "每日提醒已开启每天8点会发送今日素材")
#
#
# @sv.on_fullmatch('关闭原神每日素材提醒')
# async def off_remind(bot , ev):
# gid = str(ev.group_id)
# if gid in group_list:
# group_list.remove(gid)
# save_group_list()
# await bot.send(ev, "每日提醒已关闭")
@material.handle()
async def _(bot: Bot, event: MessageEvent, state: T_State):
if time.strftime("%w") == "0":
await material.send("今天是周日,所有材料副本都开放了。")
return
arms_material_CQ = get_today_material("武器突破材料")
roles_material_CQ = get_today_material("角色天赋材料")
await material.send(arms_material_CQ + roles_material_CQ)
@role_material.handle()
async def _(bot: Bot, event: MessageEvent, state: T_State):
await material.send(get_today_material("天赋材料"))
# @sv.scheduled_job('cron', hour='8')
# async def material_remind():
# # 每日提醒
# if time.strftime("%w") == "0":
# # 如果今天是周日就不发了
# return
# bot = get_bot()
# arms_material_CQ = get_today_material("武器突破材料")
# roles_material_CQ = get_today_material("角色天赋材料")
# for gid in group_list:
# await bot.send_group_msg(group_id=int(gid), message=arms_material_CQ)
# await bot.send_group_msg(group_id=int(gid), message=roles_material_CQ)

View File

@ -0,0 +1,37 @@
from .qiu_translation import qiu_qiu_word_translation, qiu_qiu_phrase_translation
from nonebot.adapters.cqhttp import Bot, MessageEvent
from nonebot.typing import T_State
from nonebot import on_command
from util.utils import get_message_text
from services.log import logger
qiuqiu = on_command("丘丘语翻译", aliases={"丘丘一下", "丘丘翻译"}, priority=5, block=True)
suffix = "\n※ 只能从丘丘语翻译为中文,不能反向翻译\n" \
"※ 注意空格,不要加入任何标点符号\n" \
"※ 翻译数据来源于 米游社论坛"
@qiuqiu.handle()
async def _(bot: Bot, event: MessageEvent, state: T_State):
txt = get_message_text(event.json()).lower()
if txt == "":
return
mes = qiu_qiu_phrase_translation(txt)
if not mes:
mes = qiu_qiu_word_translation(txt)
mes += suffix
# print(mes)
await qiuqiu.send(mes, at_sender=True)
logger.info(
f"(USER {event.user_id}, GROUP {event.group_id if event.message_type != 'private' else 'private'})"
f" 发送丘丘翻译:" + txt)

View File

@ -0,0 +1,127 @@
{
"word": {
"a": "啊",
"beru": "做",
"biadam": "找死啊",
"biat": "暴揍",
"buka": "肚子",
"celi": "元素",
"dada": "厉害",
"dala": "什么",
"domu": "跳舞",
"eleka": "此时此刻",
"guru": "咕",
"gusha": "草",
"ika": "敌人",
"kundela": "活着",
"kuzi": "强大",
"kucha": "吃草",
"la": "啦~",
"lata": "水元素",
"mani": "给予",
"mi": "我",
"mimi": "我们",
"mita": "肉类",
"mosi": "吃",
"movo": "带来",
"muhe": "胜利",
"ni": "风",
"nini": "风暴",
"nunu": "睡觉",
"nye": "不",
"odomu": "朋友",
"olah": "你好",
"plata": "盾牌",
"pupu": "噗噗",
"sada": "唱歌",
"shato": "伴随",
"si": "什么",
"tomo": "感激",
"todo": "放心",
"tiga": "矿石",
"upa": "聚集",
"unu": "乌努",
"valo": "谢谢你",
"vin": "酒",
"ya": "人",
"yaya": "人们",
"ye": "家伙",
"yeye": "这些家伙",
"yo": "你",
"yoyo": "你们",
"zido": "杀死"
},
"phrase": {
"beru si": "做什么",
"biadam": "可恶啊,找死啊,愤怒语气",
"biat": "打爆,暴揍;可恶的",
"dada": " 极好的,厉害的",
"dala": "表示疑问,不明白的集合,翻译为哪个,什么",
"guru-guru": "拟声词,形容肚子咕咕叫的声音,饥饿",
"guru guru": "拟声词,形容肚子咕咕叫的声音,饥饿",
"gusha": "植物类食物,不怎么好的,难过的",
"kucha pupu": "拟声词,吃草时候的拟声词,咯吱噗噗,形容吃草吃得香,贬义",
"mita": "肉类,好的,好东西,有时代丘丘人,丘丘人部落,好肉族",
"mosi mita": "吃肉,表示开心",
"mosi gusha": "吃草,表示难过",
"movo": "带来,搬运;可引申为收获,丰收",
"muhe": "胜利,战胜;成功的",
"nini": "大量风元素,风暴,狂风",
"nye": "表示否定,没有了,不是",
"pupu":"拟声词,噗噗,表示嘲讽",
"sada": "唱歌,歌颂",
"shato": "乘着,伴随着",
"upa": "凝聚,聚集,集合;聚落,部落",
"unu": "乌努,丘丘人所崇拜的神灵",
"valo": "谢谢你,不客气/再见",
"vin": "酒的,喝酒有关的,酒桶盖子",
"ya": "特指人类,一个人类",
"yaya": "人类的复数 ,大群人类",
"ye": "你这个家伙,蔑称;或用于地位高者对地位低者的称呼",
"yeye": "你们这些家伙蔑称ye的复数",
"yo": "你,友善称呼",
"yoyo": "你们yo的复数友善称呼ye",
"nye mita da ye mosi zido": "再见,一路平安",
"vin plata dada": "你的酒桶盾牌真不错",
"kucha pupu gucha ye": "你咯吱噗噗的吃草的样子真的好搞笑",
"mani nini biaodomu": "愿风暴给予你死亡",
"celi dada mimi nunu": "赞美元素,我们睡觉吧",
"muhe ye": "你们是不可战胜的",
"ye dada": "你们可真棒",
"ye yika": "你们是敌人",
"nini zido": "愿风暴杀死你"
}
}

View File

@ -0,0 +1,71 @@
import json
import os
FILE_PATH = os.path.dirname(__file__)
QIU_QIU_WORD = {}
QIU_QIU_PHRASE = {}
with open(os.path.join(FILE_PATH, 'qiu_qiu_dictionary.json'), 'r', encoding='UTF-8') as f:
data = json.load(f)
QIU_QIU_WORD = data["word"]
QIU_QIU_PHRASE = data["phrase"]
def compare_words(word):
# 比对word库是否有匹配的单词有的话返回翻译没有返回原词
if word in QIU_QIU_WORD:
return QIU_QIU_WORD[word]
return word
def compare_phrase(phrase):
# 比对phrase库是否有匹配的单词有的话返回翻译没有的话匹配word库都没有返回原词
if phrase in QIU_QIU_PHRASE:
return QIU_QIU_PHRASE[phrase]
if phrase in QIU_QIU_WORD:
return QIU_QIU_WORD[phrase]
return phrase
def qiu_qiu_word_translation(txt: str):
# 对语句按空格分隔替换单词翻译
txt_list = txt.split(" ")
mes = "你查询的的丘丘语意思为:\n"
for word in txt_list:
tra_word = compare_words(word)
if tra_word == word:
# 如果是原词表示没有翻译,前后加空格接回语句里
if not mes[-1] == " ":
mes += " "
mes += tra_word
mes += " "
else:
mes += tra_word
mes += "\n"
return mes
def qiu_qiu_phrase_translation(phrase):
# 语句翻译先看phrase库是不是有匹配的语句
# 没有的话把单词拆开返回单词的意思
tra_phrase = compare_phrase(phrase)
if tra_phrase != phrase:
return f"\n翻译丘丘语意思为:\n{tra_phrase}\n"
txt_list = phrase.split(" ")
mes = "没有查到这句丘丘语,以下是单词的翻译\n"
for word in txt_list:
if word == " ":
continue
tra_word = compare_phrase(word)
if tra_word == word:
mes += f"{word} : 没有这个词的翻译\n"
else:
mes += f"{word} : {tra_word}\n"
return mes