今日塔罗提交,并删除冗余文件

This commit is contained in:
SlyAimer 2025-02-03 22:18:01 +08:00
parent 5ac73876b4
commit 47cc84e958
11 changed files with 262 additions and 254 deletions

1
.gitignore vendored
View file

@ -18,3 +18,4 @@ error.log
bili.cookie bili.cookie
*.log *.log
.mp4 .mp4
/bili.cookie

View file

@ -18,10 +18,10 @@ TEMP_PATH = Path() / "resources" / "temp"
TEMPLATE_PATH = Path() / "resources" / "template" TEMPLATE_PATH = Path() / "resources" / "template"
IMAGE_PATH.mkdir(parents=True, exist_ok=True) # IMAGE_PATH.mkdir(parents=True, exist_ok=True)
RECORD_PATH.mkdir(parents=True, exist_ok=True) # RECORD_PATH.mkdir(parents=True, exist_ok=True)
TEXT_PATH.mkdir(parents=True, exist_ok=True) # TEXT_PATH.mkdir(parents=True, exist_ok=True)
LOG_PATH.mkdir(parents=True, exist_ok=True) # LOG_PATH.mkdir(parents=True, exist_ok=True)
FONT_PATH.mkdir(parents=True, exist_ok=True) # FONT_PATH.mkdir(parents=True, exist_ok=True)
DATA_PATH.mkdir(parents=True, exist_ok=True) # DATA_PATH.mkdir(parents=True, exist_ok=True)
TEMP_PATH.mkdir(parents=True, exist_ok=True) # TEMP_PATH.mkdir(parents=True, exist_ok=True)

View file

@ -77,6 +77,7 @@ def netease_cloud_music_is_login(session):
try: try:
loginurl = session.post(f'https://music.163.com/weapi/w/nuser/account/get?csrf_token={csrf_token}',data={'params': login_params(None), 'encSecKey': login_encSecKey()}, headers=headers).json() loginurl = session.post(f'https://music.163.com/weapi/w/nuser/account/get?csrf_token={csrf_token}',data={'params': login_params(None), 'encSecKey': login_encSecKey()}, headers=headers).json()
if '200' in str(loginurl['code']): if '200' in str(loginurl['code']):
print(loginurl)
print('登录成功') print('登录成功')
return session, True return session, True
else: else:
@ -171,9 +172,6 @@ def netease_music_download(song_id,song_name,singer,session):
download_url = 'https://music.163.com/weapi/song/enhance/player/url/v1?br=999000' download_url = 'https://music.163.com/weapi/song/enhance/player/url/v1?br=999000'
url = session.post(download_url, headers=headers,data=data).json()['data'][0]['url'] url = session.post(download_url, headers=headers,data=data).json()['data'][0]['url']
if url is None:
return -1
#下载歌曲 #下载歌曲
data = requests.get(url, stream=True) data = requests.get(url, stream=True)
file_path = os.path.join(save_path, f"{song_name}-{singer}.wav") file_path = os.path.join(save_path, f"{song_name}-{singer}.wav")

View file

@ -20,17 +20,23 @@ class QrFortune(Model):
table_description = "运势表" table_description = "运势表"
@classmethod @classmethod
async def get_fortune(cls) -> Self | None: async def get_fortune(cls,member_openid:str | None) -> Self | None:
""" """
随机获取运势 随机获取运势
:return: :return:
""" """
fortunes = await cls.all() # 查询今日是否已经获取过今日运势,如果获取过则直接从日志取
if not fortunes: result = await QrFortuneLog.is_get_fortune_log(member_openid)
if result is None:
result = await cls.all()
if not result:
# 执行初始化 # 执行初始化
await cls.bulk_create(Fortune_initial_data) await cls.bulk_create(Fortune_initial_data)
fortunes = await cls.all() result = random.choice(await cls.all())
return random.choice(fortunes) if fortunes else None # 把抽取的今日运势插入日志
await QrFortuneLog.insert_fortune_log(result, member_openid)
return
return result
class QrFortuneLog(Model): class QrFortuneLog(Model):

View file

@ -0,0 +1,219 @@
import os
import random
from datetime import datetime
from tortoise import fields
from typing_extensions import Self
from src.my_sqlite.data_init.db_connect import Model
tarots_img_path = os.getcwd()+'/src/image/tarot/TarotImages/'
class MajorArcanaLog:
pass
class MajorArcana(Model):
"""
大阿尔克纳牌
"""
id = fields.IntField(pk=True)
name = fields.CharField(max_length=255, unique=True, description="牌名")
upright_meaning = fields.TextField(description="正位含义")
reversed_meaning = fields.TextField(description="逆位含义")
image = fields.CharField(max_length=255, description="图片文件名")
class Meta:
# 指定表名
table = "major_arcana"
table_description = "大阿尔克纳牌"
@classmethod
async def tarotChoice(cls, user_id: str | None) -> MajorArcanaLog | None:
"""
大阿尔克纳牌抽取
:param user_id:
:return:
"""
record = await MajorArcanaLog.getTarotLog(user_id)
if record:
return record
# 0正1逆
ints = random.randint(0, 1)
arcana = await cls.all()
if not arcana:
await cls.bulk_create(Major_arcana_initial_data)
arcana = await cls.all()
tarots = random.choice(arcana)
# 正位
if ints == 0:
return await MajorArcanaLog.insertTarotLog(tarots, user_id, tarots_img_path+tarots.image,"正位")
# 逆位
if ints == 1:
return await MajorArcanaLog.insertTarotLog(tarots, user_id, tarots_img_path+tarots.image,"逆位")
class MajorArcanaLog(Model):
"""
大阿尔克纳牌
"""
id = fields.IntField(pk=True)
user_id = fields.CharField(max_length=255, description="用户id")
ints = fields.CharField(max_length=64,description="正逆")
name = fields.CharField(max_length=64, unique=True, description="牌名")
meaning = fields.TextField(description="正位/逆位含义")
image = fields.CharField(max_length=255, description="图片文件名")
create_time = fields.DateField(auto_now_add=True)
class Meta:
# 指定表名
table = "major_arcana_log"
table_description = "大阿尔克纳牌抽取日志"
@classmethod
async def insertTarotLog(cls, model: MajorArcana | None, user_id: str | None, image: str | None, ints:str | None) -> Self | None:
"""
插入大阿尔克纳牌抽取日志
:param model:
:param user_id:
:param image:
:param ints:
:return:
"""
if ints == "正位":
meaning = model.upright_meaning
else:
meaning = model.reversed_meaning
data = {
'user_id': user_id,
'ints': ints,
'name': model.name,
'meaning': meaning,
'image': image,
'create_time':datetime.now().date()
}
return await cls.create(**data)
@classmethod
async def getTarotLog(cls, user_id: str | None ) -> Self | None:
"""
查询大阿尔克纳牌抽取日志
:param user_id:
:return:
"""
return await cls.filter(user_id=user_id,create_time = datetime.now().date()).first()
Major_arcana_initial_data = [
MajorArcana(
name="愚者 (The Fool) ",
upright_meaning="从零开始; 好赌运; 不墨守成规; 追求新奇的梦想; 冒险; 放浪形骸; 艺术家的气质; 异于常人; 直攻要害、盲点; 爱情狩猎者; 爱情历经沧桑; 不拘形式的自由恋爱",
reversed_meaning=" 不安定; 孤注一掷会失败; 缺乏责任感; 损失; 脚跟站不稳; 堕落; 没发展; 没计划; 走错路; 行为乖张; 轻浮的恋情; 感情忽冷忽热; 不安定的爱情之旅",
image="The Fool.jpg"),
MajorArcana(
name="魔术师 (The Magician)",
upright_meaning="好的开始; 具独创性; 有发展的; 新计划成功; 想像力丰富或有好点子; 有恋情发生; 拥有默契良好的伴侣; 有新恋人出现; 值得效仿的对象出现",
reversed_meaning=" 失败; 优柔寡断; 才能平庸; 有被欺诈的危险; 技术不足; 过于消极; 没有判断力; 缺乏创造力; 爱情没有进展 ",
image="The Magician.jpg"),
MajorArcana(
name="女祭司 (The High Priestess)",
upright_meaning="知性、优秀的判断力; 具洞察力及先见之明; 强大的战斗意志; 冷静的统率力; 学问、研究等精神方面幸运; 独立自主的女性; 柏拉图式的爱情; 有心灵上交往至深的友人; 冷淡的恋情 ",
reversed_meaning=" 无知、缺乏理解力; 研究不足; 不理性的态度; 自我封闭; 神经质; 洁癖; 与女性朋友柒争执; 对人冷淡; 晚婚或独身主义; 没有结果的单相思; 气色不好; 不孕",
image="The High Priestess.jpg"),
MajorArcana(
name="皇后 (The Empress)",
upright_meaning="充满创造力与母性光辉; 生活富足、美满; 事业上有出色的规划与执行能力,易取得成果; 感情中温柔体贴,是理想的伴侣; 孕育新生命或有新的创意项目诞生",
reversed_meaning=" 创造力受阻; 生活陷入混乱,经济上可能出现问题; 感情中可能变得情绪化、占有欲强; 缺乏实际行动,计划难以实现; 健康方面可能有妇科问题",
image="The Empress.jpg "),
MajorArcana(
name="皇帝 (The Emperor)",
upright_meaning="以坚强的意志力及手腕获致成功; 富裕和力量; 有责任感; 良好的处理能力; 具领导能力; 男性的思考; 坚持到底; 虽有点专制却值得信赖; 条件诱人的提亲; 与年长者恋爱 ",
reversed_meaning=" 不成熟; 意志薄弱; 虚有其表; 看不清现实; 欠缺实务能力; 因傲慢而招人反感; 工作过度; 固执; 没有经济基础; 没有好对象; 苦恋结束; 勉强的感情",
image="The Emperor.jpg "),
MajorArcana(
name="教皇 (The Hierophant) ",
upright_meaning="受人信赖; 有贵人相助; 贡献; 受上司重视; 能胜任工作; 拥有一颗温柔的心; 受惠于有益的建言; 接触宗教的事物大吉; 与年长的异性有缘; 良缘; 深情宽大的爱; 有结良缘的机会 ",
reversed_meaning=" 没信用; 没有贵人相助; 孤立无援; 不受欢迎的好意; 依赖心是最大的敌人; 太罗嗦而讨人厌; 碍于私情而无法成功; 心胸狭窄; 得不到亲人的谅解的恋情; 彼此过于关心; 缘分浅薄的恋情 ",
image="The Hierophant.jpg"),
MajorArcana(
name="恋人 (The Lovers) ",
upright_meaning="幸运的结合; 有希望的将来; 有共同做事的伙伴; 与人合作或社团活动; 敏感决定前进之路的好时机; 有意气相投的朋友; 爱情机会将到来; 罗曼蒂克的恋情; 爱的预感",
reversed_meaning=" 分离; 消解; 不合作的态度; 眼花缭乱; 没有满意的成果; 无法持续; 退休; 妨碍; 血气方刚; 多情的人; 分手; 冷漠的爱; 背信; 逃避爱情; 短暂的恋情",
image="The Lovers.jpg"),
MajorArcana(
name="战车 (The Chariot)",
upright_meaning="前进必胜; 先下手为强; 独立; 起程; 在颠簸中仍有好成绩; 活泼; 有野心; 以速度取胜; 有开拓精神; 握有指挥权; 战胜敌手; 富行动力的恋情; 恋爱的胜利者 ",
reversed_meaning=" 失败; 丧失战斗意志; 状态不佳; 挫折; 性子过急为失败之因; 不感兴趣; 效率不佳; 资金运转困难; 无奋斗精神; 有强劲敌手进入; 被拒绝; 因怯懦而使恋情不顺 ",
image="The Chariot.jpg "),
MajorArcana(
name="力量 (Strength) ",
upright_meaning="不屈不挠的精神; 将不可能化为可能的意志力; 全力以赴; 突破难关; 坚强的信念和努力; 挑战已知危险的勇气; 神秘的力量; 旺盛的斗志; 轰轰烈烈的恋情; 克服困难的真实爱情",
reversed_meaning=" 疑心病; 犹豫不决; 实力不足; 无忍耐力; 危险的赌注; 勉强为之而适得其反; 丧失自信; 喜欢故弄玄虚; 体力不足; 自大自负; 误用力气 ",
image="Strength.jpg"),
MajorArcana(
name="隐士 (The Hermit) ",
upright_meaning="智能与卓越见解; 不断地追求更高层次的东西; 思虑周密; 冷静沉着; 不多言; 接触知性事物吉; 正中核心的建言; 活动慢慢进行较有成果; 出局; 追求柏拉图式的爱情; 暗中的爱情",
reversed_meaning=" 一视同仁; 不够通融; 不专心易生错误; 过分警戒,无法顺利进行; 秘密泄漏; 过于固执不听别人的意见; 孤独; 动机不单纯; 因怨言及偏见招人嫌; 轻浮的爱情; 怀疑爱情",
image="The Hermit.jpg"),
MajorArcana(
name="命运之轮 (The Wheel of Fortune) ",
upright_meaning="机会到来; 随机应变能力佳; 好运; 转换期; 意想不到的幸运; 升迁有望; 变化丰富; 好时机; 宿命的相逢; 一见钟情; 幸运的婚姻; 富贵的身份 ",
reversed_meaning=" 低潮期; 时机未到; 评估易出错; 时机不好; 没有头绪; 处于劣势; 生活艰苦; 情况恶化; 计划停滞需要再等待; 失恋; 短暂的恋情; 易错失良机; 不敌诱惑; 爱情无法持久 ",
image="The Wheel of Fortune.jpg"),
MajorArcana(
name="正义 (Justice)",
upright_meaning="公正; 严正的意见; 良好的均衡关系; 严守中立立场; 凡事合理化; 身兼两种工作; 协调者; 与裁判、法律相关者; 表里一致的公正人物; 以诚实之心光明正大地交往; 彼此能获得协调 ",
reversed_meaning=" 不公正; 不平衡; 不利的条件; 偏颇; 先入为主的观念; 偏见与独断; 纷争、诉讼; 问心有愧; 无法两全; 天平两边无法平衡; 性格不一致; 无视于社会道德观的恋情; 偏爱",
image="Justice.jpg "),
MajorArcana(
name="倒吊人 (The Hanged Man)",
upright_meaning="接受考验; 无法动弹; 被牺牲; 有失必有得; 从痛苦的体验中获得教训; 过度期; 不贪图眼前利益; 浴火重生; 多方学习; 奉献的爱; 明知辛苦但全力以赴",
reversed_meaning=" 无谓的牺牲; 折断骨头; 有噩运、居于劣势; 任性妄为; 不努力; 变得没有耐性; 利己主义者; 受到惩罚; 无偿的爱; 缺乏共同奋斗的伙伴",
image="The Hanged Man.jpg"),
MajorArcana(
name="死神 (Death)",
upright_meaning="失败; 毁灭之日将近; 损害继续延续; 失业; 进展停滞; 交易停止; 为时已晚; 停滞状态; 生病或意外的暗示; 味如嚼蜡的生活; 不幸的恋情; 恋情终止; 彼此间有很深的鸿沟; 别离 ",
reversed_meaning=" 起死回生的机会; 脱离低迷期; 改变印象; 回心转意再出发; 挽回名誉; 奇迹似地康复; 突然改变方针; 已经死心的事有了转机; 斩断情丝,重新出发",
image="Death.jpg "),
MajorArcana(
name="节欲 (Temperance) ",
upright_meaning="单纯化; 顺畅; 交往平顺; 两者相融顺畅; 调整; 彼此交换有利条件; 平凡中也有重要的契机; 平顺的心境; 纯爱; 从好感转为爱意; 深爱 ",
reversed_meaning=" 消耗; 每节制的损耗,对身心产生不好的影响; 疲劳; 不定性的工作; 缺乏调整能力; 下降; 浪费; 不要与人 合作; 不融洽; 爱情的配合度不佳 ",
image="Temperance.jpg"),
MajorArcana(
name="恶魔 (The Devil)",
upright_meaning="被束缚; 堕落; 恶魔的私语; 卑躬屈膝; 欲望的俘虏; 荒废的生活; 举债度日; 病魔入侵; 夜游过多; 不可告人的事; 恶意; 不可抗拒的诱惑; 私密恋情; 沉溺于感官刺激之下",
reversed_meaning=" 逃离拘束; 长期的苦恼获得解放; 斩断前缘; 越过难关; 暂时停止; 拒绝诱惑; 舍弃私欲; 治愈长期病痛; 别离 时刻; 如深陷泥沼爱恨交加的恋情",
image="The Devil.jpg "),
MajorArcana(
name="塔 (The Tower) ",
upright_meaning="致命的打击; 纷争; 纠纷不断; 与周遭事物对立,情况恶化; 意想不到的事情; 急病; 受牵连; 急剧的大变动; 信念奔溃; 逆境; 破产; 没有预警,突然分离; 破灭的爱; 玩火自焚",
reversed_meaning=" 紧迫的状态; 险恶的气氛; 内讧; 即将破灭; 急需解决的问题; 承受震撼; 背水一战; 注意刑事问题; 因骄傲自大将付出惨痛的代价; 状况不佳; 困境; 爱情危机; 分离的预感 ",
image="The Tower.jpg "),
MajorArcana(
name="星辰 (The Star) ",
upright_meaning="愿望达成; 前途光明; 充满希望的未来; 美好的生活; 曙光出现; 大胆的幻想; 水准提高; 新的创造力; 想像力; 理想的对象; 美好的恋情; 爱苗滋生 ",
reversed_meaning=" 挫折、失败; 理想过高; 缺乏想像力; 异想天开; 事与愿违; 失望; 从事不喜欢的工作; 好高骛远; 情况悲观; 不可期待的对象; 没 有爱的生活; 秘密恋情; 仓皇失措",
image="The Star.jpg"),
MajorArcana(
name="月亮 (The Moon) ",
upright_meaning="不安与动摇; 心中不平静; 谎言; 暧昧不明; 鬼迷心窍; 暗藏动乱; 欺骗; 终止; 不安的爱; 三角关系",
reversed_meaning=" 从危险的骗局中逃脱; 状况稍为好转; 误会冰释; 破除迷惘; 时间能解决一切; 眼光要长远; 静观等待; 早期发现早期治疗有效; 事前察知危险; 对虚情假意的恋情已不在乎 ",
image="The Moon.jpg"),
MajorArcana(
name="太阳 (The Sun)",
upright_meaning="丰富的生命力; 巨大的成就感; 人际关系非常好; 爱情美满; 内心充满了热情和力量; 一定能够实现的约定; 飞黄腾达; 无忧无虑",
reversed_meaning=" 情绪低落; 事情失败; 朋友的离去和人际关系的恶化; 无法安定内心; 忧郁孤单寂寞; 爱情不顺 利; 取消的计划; 工作上困难重重 ",
image="The Sun.jpg "),
MajorArcana(
name="审判 (Judgement)",
upright_meaning="复活的喜悦; 开运; 公开; 改革期; 危机解除; 决断; 荣升; 崭露头角; 好消息; 爱的使者; 恢复健康; 坦白; 复苏的爱; 再会; 爱的奇迹 ",
reversed_meaning="一败不起; 幻灭; 离复苏还有很长的时间; 不利的决定; 不被采用; 还未开始就结束了; 坏消息; 延期; 无法决定; 虽重新开始,却又恢复原状; 分离、消除; 恋恋不舍",
image="Judgement.jpg "),
MajorArcana(
name="世界 (The World)",
upright_meaning="完成; 成功; 拥有毕生的志业; 达成目标; 永续不断; 最盛期; 完美无缺; 接触异国,将获得幸运; 到达标准; 精神亢奋; 快乐的结束; 模范情侣 ",
reversed_meaning=" 未完成; 无法达到计划中的成就; 因准备不足而失败; 中途无法在进行; 不完全燃烧; 一时不顺利; 饱和状态; 烦恼延续; 精神松弛; 个人惯用的表现方式; 因不成熟而 使情感受挫; 合谋; 态度不够圆融",
image="The World.jpg ")]

View file

@ -1,5 +0,0 @@
运势&塔罗:
lockLuck: false #是否启用运势功能
lockTarot: false #是否启用塔罗牌功能

View file

@ -1,147 +0,0 @@
import datetime
import os
import random
import yaml
from PIL import Image
from nonebot.adapters.onebot.v11 import Bot, Event
from nonebot.adapters.qq import MessageSegment
from nonebot.plugin.on import on_command
from nonebot.rule import to_me
# 创建一个消息事件处理器,当收到消息时触发
tarot = on_command("今日塔罗", rule=to_me(), priority=10, block=True)
# 导入yaml模块
with open('src/onebot_plugins/config/controller.yaml', 'r', encoding='utf-8') as f:
# 读取yaml文件
controllerResult = yaml.load(f.read(), Loader=yaml.FullLoader)
lockLuck = controllerResult.get("运势&塔罗").get("lockLuck")
lockTarot = controllerResult.get("运势&塔罗").get("lockTarot")
@tarot.handle()
async def handle_tarot(bot: Bot,event: Event):
txt, img = tarotChoice(lockTarot)
tod = str(datetime.date.today())
image_segment = MessageSegment.image(os.getcwd()+'/'+img)
await bot.send(event, image_segment)
await bot.send(event, txt)
def tarotChoice(lockTarot):
ints = random.randint(0, 1)
if ints == 0:
tarots = random.choice(tarot)
txt = tarots[0] + '\n' + '正位' + '\n' + tarots[1]
img = f'src/image/tarotT/TarotImages' + tarots[3]
img_folder = 'AbstractImages' if lockTarot else 'TarotImages'
img = f'src/image/tarot/{img_folder}/{tarots[3]}'
return txt, img
if ints == 1:
tarots = random.choice(tarot)
txt = tarots[0] + '\n' + '逆位' + '\n' + tarots[2]
img_folder = 'AbstractImages' if lockTarot else 'TarotImages'
img1 = f'src/image/tarot/side{img_folder}/' + tarots[3]
if not os.path.exists(f'src/image/tarot/side{img_folder}'):
os.mkdir(f'src/image/tarot/side{img_folder}')
if os.path.exists(img1):
return txt, img1
else:
# 打开图像
img = Image.open(f'src/image/tarot/{img_folder}/{tarots[3]}')
if img.mode == 'RGBA':
img = img.convert('RGB')
# 旋转180度
rotated_img = img.rotate(180)
# 保存旋转后的图像
rotated_img.save(f'src/image/tarot/side{img_folder}/' + tarots[3])
return txt, img1
tarot = [['愚者 (The Fool)',
'从零开始; 好赌运; 不墨守成规; 追求新奇的梦想; 冒险; 放浪形骸; 艺术家的气质; 异于常人; 直攻要害、盲点; 爱情狩猎者; 爱情历经沧桑; 不拘形式的自由恋爱',
'不安定; 孤注一掷会失败; 缺乏责任感; 损失; 脚跟站不稳; 堕落; 没发展; 没计划; 走错路; 行为乖张; 轻浮的恋情; 感情忽冷忽热; 不安定的爱情之旅',
'The Fool.jpg'],
['魔术师 (The Magician)',
'好的开始; 具独创性; 有发展的; 新计划成功; 想像力丰富或有好点子; 有恋情发生; 拥有默契良好的伴侣; 有新恋人出现; 值得效仿的对象出现',
'失败; 优柔寡断; 才能平庸; 有被欺诈的危险; 技术不足; 过于消极; 没有判断力; 缺乏创造力; 爱情没有进展',
'The Magician.jpg'],
['女祭司 (The High Priestess)',
'知性、优秀的判断力; 具洞察力及先见之明; 强大的战斗意志; 冷静的统率力; 学问、研究等精神方面幸运; 独立自主的女性; 柏拉图式的爱情; 有心灵上交往至深的友人; 冷淡的恋情',
'无知、缺乏理解力; 研究不足; 不理性的态度; 自我封闭; 神经质; 洁癖; 与女性朋友柒争执; 对人冷淡; 晚婚或独身主义; 没有结果的单相思; 气色不好; 不孕',
'The High Priestess.jpg'],
['皇帝 (The Emperor)',
'以坚强的意志力及手腕获致成功; 富裕和力量; 有责任感; 良好的处理能力; 具领导能力; 男性的思考; 坚持到底; 虽有点专制却值得信赖; 条件诱人的提亲; 与年长者恋爱',
'不成熟; 意志薄弱; 虚有其表; 看不清现实; 欠缺实务能力; 因傲慢而招人反感; 工作过度; 固执; 没有经济基础; 没有好对象; 苦恋结束; 勉强的感情',
'The Emperor.jpg'],
['教皇 (The Hierophant)',
'受人信赖; 有贵人相助; 贡献; 受上司重视; 能胜任工作; 拥有一颗温柔的心; 受惠于有益的建言; 接触宗教的事物大吉; 与年长的异性有缘; 良缘; 深情宽大的爱; 有结良缘的机会',
'没信用; 没有贵人相助; 孤立无援; 不受欢迎的好意; 依赖心是最大的敌人; 太罗嗦而讨人厌; 碍于私情而无法成功; 心胸狭窄; 得不到亲人的谅解的恋情; 彼此过于关心; 缘分浅薄的恋情',
'The Hierophant.jpg'],
['恋人 (The Lovers)',
'幸运的结合; 有希望的将来; 有共同做事的伙伴; 与人合作或社团活动; 敏感决定前进之路的好时机; 有意气相投的朋友; 爱情机会将到来; 罗曼蒂克的恋情; 爱的预感',
'分离; 消解; 不合作的态度; 眼花缭乱; 没有满意的成果; 无法持续; 退休; 妨碍; 血气方刚; 多情的人; 分手; 冷漠的爱; 背信; 逃避爱情; 短暂的恋情',
'The Lovers.jpg'],
['战车 (The Chariot)',
'前进必胜; 先下手为强; 独立; 起程; 在颠簸中仍有好成绩; 活泼; 有野心; 以速度取胜; 有开拓精神; 握有指挥权; 战胜敌手; 富行动力的恋情; 恋爱的胜利者',
'失败; 丧失战斗意志; 状态不佳; 挫折; 性子过急为失败之因; 不感兴趣; 效率不佳; 资金运转困难; 无奋斗精神; 有强劲敌手进入; 被拒绝; 因怯懦而使恋情不顺',
'The Chariot.jpg'],
['力量 (Strength)',
'不屈不挠的精神; 将不可能化为可能的意志力; 全力以赴; 突破难关; 坚强的信念和努力; 挑战已知危险的勇气; 神秘的力量; 旺盛的斗志; 轰轰烈烈的恋情; 克服困难的真实爱情',
'疑心病; 犹豫不决; 实力不足; 无忍耐力; 危险的赌注; 勉强为之而适得其反; 丧失自信; 喜欢故弄玄虚; 体力不足; 自大自负; 误用力气',
'Strength.jpg'],
['隐士 (The Hermit)',
'智能与卓越见解; 不断地追求更高层次的东西; 思虑周密; 冷静沉着; 不多言; 接触知性事物吉; 正中核心的建言; 活动慢慢进行较有成果; 出局; 追求柏拉图式的爱情; 暗中的爱情',
'一视同仁; 不够通融; 不专心易生错误; 过分警戒,无法顺利进行; 秘密泄漏; 过于固执不听别人的意见; 孤独; 动机不单纯; 因怨言及偏见招人嫌; 轻浮的爱情; 怀疑爱情',
'The Hermit.jpg'],
['命运之轮 (The Wheel of Fortune)',
'机会到来; 随机应变能力佳; 好运; 转换期; 意想不到的幸运; 升迁有望; 变化丰富; 好时机; 宿命的相逢; 一见钟情; 幸运的婚姻; 富贵的身份',
'低潮期; 时机未到; 评估易出错; 时机不好; 没有头绪; 处于劣势; 生活艰苦; 情况恶化; 计划停滞需要再等待; 失恋; 短暂的恋情; 易错失良机; 不敌诱惑; 爱情无法持久',
'The Wheel of Fortune.jpg'],
['正义 (Justice)',
'公正; 严正的意见; 良好的均衡关系; 严守中立立场; 凡事合理化; 身兼两种工作; 协调者; 与裁判、法律相关者; 表里一致的公正人物; 以诚实之心光明正大地交往; 彼此能获得协调',
'不公正; 不平衡; 不利的条件; 偏颇; 先入为主的观念; 偏见与独断; 纷争、诉讼; 问心有愧; 无法两全; 天平两边无法平衡; 性格不一致; 无视于社会道德观的恋情; 偏爱',
'Justice.jpg'],
['倒吊人 (The Hanged Man)',
'接受考验; 无法动弹; 被牺牲; 有失必有得; 从痛苦的体验中获得教训; 过度期; 不贪图眼前利益; 浴火重生; 多方学习; 奉献的爱; 明知辛苦但全力以赴',
'无谓的牺牲; 折断骨头; 有噩运、居于劣势; 任性妄为; 不努力; 变得没有耐性; 利己主义者; 受到惩罚; 无偿的爱; 缺乏共同奋斗的伙伴',
'The Hanged Man.jpg'],
['死神 (Death)',
'失败; 毁灭之日将近; 损害继续延续; 失业; 进展停滞; 交易停止; 为时已晚; 停滞状态; 生病或意外的暗示; 味如嚼蜡的生活; 不幸的恋情; 恋情终止; 彼此间有很深的鸿沟; 别离',
'起死回生的机会; 脱离低迷期; 改变印象; 回心转意再出发; 挽回名誉; 奇迹似地康复; 突然改变方针; 已经死心的事有了转机; 斩断情丝,重新出发',
'Death.jpg'],
['节欲 (Temperance)',
'单纯化; 顺畅; 交往平顺; 两者相融顺畅; 调整; 彼此交换有利条件; 平凡中也有重要的契机; 平顺的心境; 纯爱; 从好感转为爱意; 深爱',
'消耗; 每节制的损耗,对身心产生不好的影响; 疲劳; 不定性的工作; 缺乏调整能力; 下降; 浪费; 不要与人 合作; 不融洽; 爱情的配合度不佳',
'Temperance.jpg'],
['恶魔 (The Devil)',
'被束缚; 堕落; 恶魔的私语; 卑躬屈膝; 欲望的俘虏; 荒废的生活; 举债度日; 病魔入侵; 夜游过多; 不可告人的事; 恶意; 不可抗拒的诱惑; 私密恋情; 沉溺于感官刺激之下',
'逃离拘束; 长期的苦恼获得解放; 斩断前缘; 越过难关; 暂时停止; 拒绝诱惑; 舍弃私欲; 治愈长期病痛; 别离 时刻; 如深陷泥沼爱恨交加的恋情',
'The Devil.jpg'],
['塔 (The Tower)',
'致命的打击; 纷争; 纠纷不断; 与周遭事物对立,情况恶化; 意想不到的事情; 急病; 受牵连; 急剧的大变动; 信念奔溃; 逆境; 破产; 没有预警,突然分离; 破灭的爱; 玩火自焚',
'紧迫的状态; 险恶的气氛; 内讧; 即将破灭; 急需解决的问题; 承受震撼; 背水一战; 注意刑事问题; 因骄傲自大将付出惨痛的代价; 状况不佳; 困境; 爱情危机; 分离的预感',
'The Tower.jpg'],
['星辰 (The Star)',
'愿望达成; 前途光明; 充满希望的未来; 美好的生活; 曙光出现; 大胆的幻想; 水准提高; 新的创造力; 想像力; 理想的对象; 美好的恋情; 爱苗滋生',
'挫折、失败; 理想过高; 缺乏想像力; 异想天开; 事与愿违; 失望; 从事不喜欢的工作; 好高骛远; 情况悲观; 不可期待的对象; 没 有爱的生活; 秘密恋情; 仓皇失措',
'The Star.jpg'],
['月亮 (The Moon)',
'不安与动摇; 心中不平静; 谎言; 暧昧不明; 鬼迷心窍; 暗藏动乱; 欺骗; 终止; 不安的爱; 三角关系',
'从危险的骗局中逃脱; 状况稍为好转; 误会冰释; 破除迷惘; 时间能解决一切; 眼光要长远; 静观等待; 早期发现早期治疗有效; 事前察知危险; 对虚情假意的恋情已不在乎',
'The Moon.jpg'],
['太阳 (The Sun)',
'丰富的生命力; 巨大的成就感; 人际关系非常好; 爱情美满; 内心充满了热情和力量; 一定能够实现的约定; 飞黄腾达; 无忧无虑',
'情绪低落; 事情失败; 朋友的离去和人际关系的恶化; 无法安定内心; 忧郁孤单寂寞; 爱情不顺 利; 取消的计划; 工作上困难重重',
'The Sun.jpg'],
['审判 (Judgement)',
'复活的喜悦; 开运; 公开; 改革期; 危机解除; 决断; 荣升; 崭露头角; 好消息; 爱的使者; 恢复健康; 坦白; 复苏的爱; 再会; 爱的奇迹',
' 一败不起; 幻灭; 离复苏还有很长的时间; 不利的决定; 不被采用; 还未开始就结束了; 坏消息; 延期; 无法决定; 虽重新开始,却又恢复原状; 分离、消除; 恋恋不舍',
'Judgement.jpg'],
['世界 (The World)',
'完成; 成功; 拥有毕生的志业; 达成目标; 永续不断; 最盛期; 完美无缺; 接触异国,将获得幸运; 到达标准; 精神亢奋; 快乐的结束; 模范情侣',
'未完成; 无法达到计划中的成就; 因准备不足而失败; 中途无法在进行; 不完全燃烧; 一时不顺利; 饱和状态; 烦恼延续; 精神松弛; 个人惯用的表现方式; 因不成熟而 使情感受挫; 合谋; 态度不够圆融',
'The World.jpg']]

View file

@ -1,59 +0,0 @@
from nonebot import on_command
from nonebot.adapters.onebot.v11 import Bot, Event
from nonebot.adapters.console import MessageSegment
from nonebot.rule import to_me
# 创建一个消息事件处理器,当收到消息时触发
reply = on_command("你好", rule=to_me(), priority=10, block=True)
@reply.handle()
async def handle_reply(bot: Bot, event: Event):
# 获取用户发送的消息
user_message = event.get_message().extract_plain_text().strip().replace(" ", "").replace("/", "")
# 这里构建Markdown格式的消息内容
# markdown_message = MessageSegment.markdown(
# """
# ### 这是标题
# 这是一段正文内容,你可以在这里按照[Markdown语法](https://www.markdown.com.cn/)添加更多元素,比如**加粗**、*斜体*等。
# - 列表项1
# - 列表项2
# - 今天天气怎么样?
# ⛅ 多云 20℃~24℃
# 🌡️ 风速 1-2级
# 💨 10-15公里/小时
# 🌬️ 微风 2-3级
# 🌡️ 降水概率 50%
# 🌡️ 降水强度 微弱
# 🌡️ 紫外线强度 弱
# 🌡️ 能见度 10公里
#
# """
# )
# await bot.send(event=event, message=markdown_message, at_sender=True)
# 定义回复内容
if user_message == "你好":
reply_message = "你好呀!我是你的机器人助手。"
elif user_message == "今天天气怎么样":
reply_message = "抱歉,我暂时无法得知天气信息哦 你可以通过天气预报网站查询。"
else:
reply_message = "我不太理解你的意思呢,你可以换个说法试试。"
# 发送回复消息
await bot.send(event=event, message=reply_message)
# @reply.handle()
# async def hp(bot: Bot, event: Event):
# # 获取全部群列表
# group_list = await bot.get_group_list()
#
# for group in group_list:
# print(group)
# # 获取群成员列表
# member_list = await bot.get_group_member_list(group_id=group['group_id'])
# for member in member_list:
# print(member)
# # 获取群成员信息
# await bot.get_group_member_info(group_id=group['group_id'],
# user_id=member['user_id'])

View file

@ -1,14 +0,0 @@
from nonebot.adapters.cqhttp import Bot, Message, GroupMessageEvent, GroupDecreaseNoticeEvent, GroupIncreaseNoticeEvent
from nonebot import on_notice
welcome = on_notice()
# 监听加群事件
@welcome.handle() # 监听 welcome
async def welcome_new_member(event: GroupIncreaseNoticeEvent):
user = event.get_user_id() # 获取新成员的id
at_ = "爆裂吧现实粉碎吧精神Banishiment this world 应召唤而来 [CQ:at,qq={}]".format(user)
msg = at_ + '欢迎加入本群!'
msg = Message(msg)
await welcome.finish(message=Message(f'{msg}')) # 发送消息

View file

@ -19,7 +19,7 @@ with open(os.getcwd() + '/src/ai_chat/config/chat_ai.yaml', 'r', encoding='utf-8
admin_password = chat.get('admin_password') admin_password = chat.get('admin_password')
menu = ['/今日运势','/','/点歌','/摸摸头','/群老婆','/今日老婆', "/开启ai","/关闭ai","/角色列表","/添加人设", "/更新人设", "/删除人设", "/切换人设", "/管理员注册", menu = ['/今日运势','/今日塔罗','/','/点歌','/摸摸头','/群老婆','/今日老婆', "/开启ai","/关闭ai","/角色列表","/添加人设", "/更新人设", "/删除人设", "/切换人设", "/管理员注册",
'/待办', '/test','/天气','我喜欢你', "", "/待办查询", "/新建待办", "/删除待办" ,"/cf", "/奶龙", "/repo", "/info", "/B站搜索", "/BV搜索", "/喜报", "/悲报"] '/待办', '/test','/天气','我喜欢你', "", "/待办查询", "/新建待办", "/删除待办" ,"/cf", "/奶龙", "/repo", "/info", "/B站搜索", "/BV搜索", "/喜报", "/悲报"]

View file

@ -3,23 +3,16 @@ from pathlib import Path
from nonebot.rule import to_me from nonebot.rule import to_me
from nonebot.plugin import on_command from nonebot.plugin import on_command
from nonebot.adapters.qq import Message, MessageEvent, MessageSegment from nonebot.adapters.qq import Message, MessageEvent, MessageSegment
from src.image.get_image import get_image_names from src.image.get_image import get_image_names
from src.my_sqlite.models.fortune import QrFortune,QrFortuneLog from src.my_sqlite.models.fortune import QrFortune
from src.my_sqlite.models.tarot import MajorArcana
fortune_by_sqlite = on_command("今日运势", rule=to_me(), priority=10, block=True) fortune_by_sqlite = on_command("今日运势", rule=to_me(), priority=10, block=True)
@fortune_by_sqlite.handle() @fortune_by_sqlite.handle()
async def get_today_fortune(message: MessageEvent): async def get_today_fortune(message: MessageEvent):
local_image_path = get_image_names() local_image_path = get_image_names()
member_openid = message.get_user_id() result = await QrFortune.get_fortune(message.get_user_id())
# 查询今日是否已经获取过今日运势,如果获取过则直接从日志取
result = await QrFortuneLog.is_get_fortune_log(member_openid)
if result is None:
# 获取 运势说明
result = await QrFortune.get_fortune()
# 把抽取的今日运势插入日志
await QrFortuneLog.insert_fortune_log(result, member_openid)
content = ("\n" + "您的今日运势为:" + "\n" + content = ("\n" + "您的今日运势为:" + "\n" +
result.fortune_summary + "\n" + result.fortune_summary + "\n" +
@ -33,3 +26,19 @@ async def get_today_fortune(message: MessageEvent):
MessageSegment.text(content), MessageSegment.text(content),
]) ])
await fortune_by_sqlite.finish(msg) await fortune_by_sqlite.finish(msg)
tarot = on_command("今日塔罗", rule=to_me(), priority=10, block=True)
@tarot.handle()
async def tarot(message: MessageEvent):
result = await MajorArcana.tarotChoice(message.get_user_id())
content = ("\n" + result.ints + "\n" +
result.name + "\n" +
"含义:" + result.meaning)
msg = Message([
MessageSegment.file_image(Path(result.image)),
MessageSegment.text(content),
])
await fortune_by_sqlite.finish(msg)