feat: add tarot module

This commit is contained in:
Soumt 2024-04-14 06:03:10 +09:00
parent a520c75ced
commit 6f2af7346f
No known key found for this signature in database
GPG key ID: 554F2E33F664BA50
2 changed files with 91 additions and 2 deletions

View file

@ -1,2 +0,0 @@
BOT_INSTANCE=(Your Misskey Instance)
BOT_KEY=(Your Misskey api key)

91
modules/Tarot.py Normal file
View file

@ -0,0 +1,91 @@
from module_interface import ModuleInterface
from mipac.models import Note
import random
Card_list = [
'The Fool',
'The Magician',
'The High Priestess',
'The Empress',
'The Emperor',
'The Hierophant',
'The Lovers',
'The Chariot',
'Strength',
'The Hermit',
'Wheel of Fortune',
'Justice',
'The Hanged Man',
'Death',
'Temperance',
'Devil',
'The Tower',
'The Star',
'The Moon',
'The Sun',
'Judgement',
'The World'
]
Card_mean = [
['순진, 천진난만함, 언제나 신기한 꿈을 추구, 소박함.', '부주의, 경솔, 단순, 무절제, 사치, 미성숙, 불안정, 불확실함'],
['독창, 창조, 상상, 자기 확신, 발명의 재주, 융통성, 자기통제, 자제, 극기, 책략.', '독단, 다재다능하여 성공하지 못함, 창조력 부족, 실패, 기술부족'],
['지혜, 건전한 판단력, 무의식 속의 깨달음, 일반적인 상식, 평온과 침착, 객관적인 타당성, 통찰력, 정신적 경향.', '무지, 연구부족, 비상식적, 결벽증, 자신의 껍질 속에 틀어박힘'],
['비옥함, 여성다운 발전, 성취, 완성, 어머니, 여성의 영향력, 실용적임, 번영, 출산', '성취하지 못함, 동요, 주저, 태만, 허영심, 제멋대로의 행동, 질투, 달성이 늦어짐, 낭비'],
['세속적인 힘, 확신, 부유함, 권력, 불굴의 정신, 아버지, 남성의 영향력, 가장(家長)에 해당하는 권위.', '미숙, 의지박약, 현실인식이 약함, 실무능력 부족, 거만함, 고지식함, 경제적 능력이 없음, 강요'],
['자비와 친절, 신뢰받음, 원조자와의 만남, 공헌, 일을 맡음, 동정심, 용서, 깊은 의미를 깨닫기 위해 노력함.', '보수주의, 자기 자신의 생각에만 사로잡힘, 신용을 잃음, 고립됨, 시야가 좁음, 오래된 원칙에 집착함'],
['사랑과 미(美), 완성과 조화, 결합, 결혼, 깊은 감정과 낙천주의, 감정의 자연스러움, 윤리적, 도덕적.', '이별, 퇴직, 소홀한 사랑, 사랑의 도피행각 '],
['목표를 향한 돌진, 극복된 역경, 성공, 여행, 선공필승, 행동적인 사랑, 지휘자, 활발화 한다.', '패배, 전의상실, 제자리 걸음, 좌절, 내키지 않음, 능률저하, 벅찬 라이벌의 등장, 소극적'],
['용기와 힘, 확신, 결단력, 도전적인 태도, 배짱, 열성, 불굴의 정신, 불가능을 가능으로 만드는 의지력.', '겁쟁이, 체념, 실력부족, 인내력부족, 힘의 오용, 잘난척 함, 유혹에 짐.'],
#9번 은둔자부터
['조언, 충고, 사려분별과 신중함, 용의주도 함, 탐구력, 감정을 억제함, 지적방면이 뛰어남.', '무분별, 융통성이 없음, 집중력부족, 편협함, 경박한 사랑을 함, 경계가 심해 진전되지 않는다.'],
['기회 도래, 전환기, 생각지도 않았던 행운, 운명적, 타이밍이 좋음, 유리한 변화, 승진', '하강기, 때를 잘못 만남, 궁핍함, 불리한 입장이 됨, 실연, 어긋남이 많아짐'],
['공정함, 균형잡힘, 중립적 입장을 지킴, 조정역할, 조화잡힌 궁합, 합리화 시킴, 분별력, 올바른, 미덕', '불공평함, 불균형, 불리한 조건, 편파, 선입관, 편견과 독단, 꺼림직한 행동, 도덕을 무시하는 사랑'],
['삶에서의 정지 상태, 일시적인 정지, 과도기, 희생, 시련의 시기, 괴로운 체험으로 교훈을 얻는다.', '열매 맺지 않은 희생, 제멋대로, 필요한 노력을 하지 않는다, 참지 못한다, 이기주의자'],
['예기치 않은 변화와 손실, 과거 자신에 대한 뜻밖의 변화, 익숙한 상황이나 우정 등의 종결, 계속되는 손해', '기사회생의 찬스, 슬럼프 탈출, 이미지 체인지, 기적적인 회생, 방침을 180°바꿈, 포기했던 것이 되돌아옴'],
['중용, 절제, 인내, 자기 통제와 검소한 태도를 통한 목표의 달성, 적응과 조화, 좋은 영향력, 순화', '절도 없음이 악영향을 가져다옴, 불규칙한 일, 조정능력이 없음, 쓸데없는 일이 많음'],
['속박됨, 타락, 비굴해짐, 욕망의 포로, 황폐한 생활, 밤놀이가 과함, 자신을 속이고 있음', '구속에서 도망침, 오랜 고뇌에서 해방됨, 나쁜 인연에서 벗어남, 욕심을 버린다, 나쁜 유혹을 뿌리친다.'],
['결정적 타격, 분쟁, 트러블 속출, 뜻밖의 사고, 급병, 오래된 신념의 파괴, 대격변을 경험함, 우정의 단절', '긴박한 상황, 험악한 공기, 내분, 파멸직전, 우쭐대다가 뼈아픈 대가를 받는다, 불운의 상황'],
['소망이 성취됨, 희망에 넘치는 미래, 미적 생활, 아이디어가 떠오름, 상큼한 창조력, 격려가 됨, 밝은 전망', '걸림, 이상이 너무 높음, 실망함, 좋아하지도 않는 일을 하게 됨, 비관적인 상황, 바램이 너무 높음'],
['속임수, 불분명한 주변의 상황, 위험스러운 요소, 나쁜 영향력, 이기주의, 배신, 숨겨진 적', '위기를 모면함, 조금씩 상황호조, 오해가 풀림, 결심함, 긴 안목으로 봄, 사전에 위험을 알게됨'],
['만족, 성취, 성공, 호의적인 대인관계, 기쁨, 헌신적인 사랑, 생명력, 활기참, 건강상태가 좋음, 활발함', '영속성이 없음, 생산력 저하, 의기소침, 생활불안, 취소됨, 체력부족, 활동력이 쇠약해짐'],
['부활의 기쁨, 운이 열린다, 변혁의 시기, 위기탈출, 결단, 좋은 소식, 재회, 건강회복, 되살아나는 사랑', '재기불능, 불리한 결정, 채용되지 않음, 나쁜 소식, 연기됨, 결정하지 못함, 헤어짐'],
['완성, 성공, 목표달성, 영속성, 전성기, 완벽함, 목적지에 도달함, 정신적 고조, 해피엔드', '미완성, 계획이 성취되지 않음, 준비 부족으로 인한 실패, 도중하차, 슬럼프에 빠짐, 미숙함']
]
class Card:
Name = ''
Is_reversed = False
class Tarot(ModuleInterface):
def __init__(self):
super().__init__()
self.name = "Tarot"
self.regex_pattern = r".*타로.*"
print("[Tarot] Tarot card module, Tarot V1 loaded.")
async def execute_module(self, ctx: Note):
print(f"[Tarot] Got Tarot Related Message : {ctx.content}")
Tarot_list = []
for i in range(len(Card_list)):
made = Card()
made.Name = Card_list[i]
made.Is_reversed = random.randrange(2)==1
Tarot_list.append(made)
random.shuffle(Tarot_list)
Select = random.randrange(22)
name = Tarot_list[Select-1].Name + ('(역)' if Tarot_list[Select-1].Is_reversed else '')
meaning = Card_mean[Card_list.index(Tarot_list[Select-1].Name)][(1 if Tarot_list[Select-1].Is_reversed else 0)]
# 뽑은 타로 카드는 Card.Name (역) 이에요! or 뽑은 타로 카드는 Card.Name 이에요!
# 간단한 의미는 Card_mean[Card_list.index(Card.Name)][0] 이에요! or Card_mean[Card_list.index(Card.Name)][1] 이에요!
await ctx.api.action.reply(f"뽑은 타로 카드는 **{name}** 이에요!\n간단한 의미는 **{meaning}** 이에요!", visibility="home")