Skip to content

Commit 62a5bc0

Browse files
authored
Update shii-bot.py
v2.15.7
1 parent 99c7d32 commit 62a5bc0

File tree

1 file changed

+138
-118
lines changed

1 file changed

+138
-118
lines changed

shii-bot.py

Lines changed: 138 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from discord.ext import commands, tasks
33
from datetime import datetime, timedelta
44
import json
5+
import time
56
import os
67
import asyncio
78
from youtube_search import YoutubeSearch
@@ -10,12 +11,12 @@
1011
from koreanbots.integrations.discord import DiscordpyKoreanbots
1112
import random
1213
import re
13-
14+
start_times = time.time()
1415
why = ['으에?', '몰?루', '왜요용', '잉', '...?', '몰라여', '으에.. 그게 뭐징?', '네?']
1516

1617
class Bot(commands.Bot):
1718
def __init__(self, intents: discord.Intents, **kwargs):
18-
super().__init__(command_prefix=["/", "시이 "], intents=intents, case_insensitive=True)
19+
super().__init__(command_prefix=["/", "!", "시이 "], intents=intents, case_insensitive=True)
1920

2021
async def on_ready(self):
2122
print(f"Logged in as {self.user}")
@@ -459,6 +460,7 @@ async def guess_number(interaction: discord.Interaction, number: int):
459460
game = None
460461

461462

463+
462464
@bot.hybrid_command(name='업다운종료', description="업다운게임 종료하기")
463465
async def end_game(interaction: discord.Interaction):
464466
global game
@@ -469,6 +471,19 @@ async def end_game(interaction: discord.Interaction):
469471
await interaction.send('업다운 게임이 종료되었습니다.')
470472

471473

474+
@bot.hybrid_command(name="고양이", description="랜덤으로 고양이 사진을 불러옵니다")
475+
async def cat(interaction: discord.Interaction):
476+
cat_image_url = get_random_cat()
477+
await interaction.send(cat_image_url)
478+
479+
480+
def get_random_cat():
481+
response = requests.get('https://api.thecatapi.com/v1/images/search')
482+
data = response.json()
483+
return data[0]['url']
484+
485+
486+
472487
@bot.hybrid_command(name='급식', description="학교급식 2주 정보 보기")
473488
async def school_lunch(interaction: discord.Interaction, school_name: str):
474489
school_code = get_school_code(school_name)
@@ -544,11 +559,6 @@ async def search(interaction: discord.Interaction, *, query):
544559
await interaction.send(embed=embed)
545560

546561

547-
@bot.hybrid_command(name='따라하기', description="메세지 복제")
548-
async def copy(interaction: discord.Interaction, text1: str):
549-
await interaction.send(text1)
550-
551-
552562
@bot.hybrid_command(name='유튜브검색', description="유튜브 검색(베타)")
553563
async def youtube_search(interaction: discord.Interaction, *, query: str):
554564
results = YoutubeSearch(query, max_results=1).to_dict()
@@ -561,6 +571,7 @@ async def youtube_search(interaction: discord.Interaction, *, query: str):
561571
await interaction.send('검색 결과를 찾을 수 없습니다.')
562572

563573

574+
564575
@bot.hybrid_command(name='계산', description="수식을 계산합니다.")
565576
async def calculate_expression(ctx, *, expression):
566577
try:
@@ -667,23 +678,31 @@ async def announcement(interaction: discord.Interaction):
667678
await interaction.send(embed=embed)
668679

669680

681+
def get_timestamp():
682+
return int(time.time())
683+
684+
670685
@bot.hybrid_command(name='핑', description="퐁!")
671686
async def ping(interaction: discord.Interaction):
672-
message_latency = round(bot.latency * 1000, 2) # 밀리초로 변환하여 반올림
687+
message_latency = round(bot.latency * 1000, 2)
688+
673689
start_time = interaction.message.created_at
674690
message5 = await interaction.send("메시지 핑 측정중...")
675-
end_time = message5.created_at # 메시지를 전송한 시간
691+
end_time = message5.created_at
676692
await message5.delete()
677693
latency = (end_time - start_time).total_seconds() * 1000
678-
current_time = datetime.now()
679-
uptime = current_time - start_time
694+
695+
current_time = time.time()
696+
uptime_seconds = current_time - start_times
697+
uptime_minutes = uptime_seconds // 60
698+
680699
embed = discord.Embed(title="퐁!", color=0xFFB2F5)
681700
embed.add_field(name=f'REST ping', value=f"```{latency}ms```")
682701
embed.add_field(name=f'Gateway ping', value=f"```{message_latency}ms```")
683-
embed.add_field(name=f'업타임', value=f"```{uptime}```")
702+
embed.add_field(name=f'업타임', value=f"```{uptime_minutes}```")
684703
list_length = len(bot.guilds)
685704
embed.add_field(name="서버수", value=f"```{list_length}```")
686-
embed.set_footer(text='{}'.format(get_time()))
705+
embed.set_footer(text='{}'.format(get_timestamp()))
687706
await interaction.send(embed=embed)
688707

689708

@@ -703,16 +722,38 @@ async def roll(interaction: discord.Interaction):
703722
print(f'주사위 결과는 {randnum} 입니다.')
704723

705724

706-
@bot.hybrid_command(name='프로필', description="프로필")
707-
async def embed(interaction: discord.Interaction):
708-
embed = discord.Embed(title="shii-bot <:__:1201865120368824360>", description="made by 보란이", color=0xFFB2F5)
709-
embed.add_field(name="사용가능 명령어", value="시이야, /프로필, /따라하기, /메시지청소, /주사위, /광질, /가위바위보, /유튜브검색 등등등...",
710-
inline=False)
711-
embed.add_field(name="사용법", value="/를 사용하여 불러주세요!", inline=False)
712-
embed.add_field(name="호스팅", value="구글 클라우드 플렛폼(GCP)", inline=False)
713-
embed.add_field(name="패치버전", value="v2.14.7", inline=False)
714-
embed.set_footer(
715-
text="개인 정보 처리 방침: https://github.com/boranloves/shii-bot-discord/blob/main/%EA%B0%9C%EC%9D%B8%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EB%B0%A9%EC%B9%A8.txt")
725+
@bot.hybrid_command(name='프로필', description="프로필를 봅니다")
726+
async def dp(interaction: discord.Interaction, member: discord.Member = None):
727+
print(member)
728+
if not member:
729+
member = interaction.user
730+
embed = discord.Embed(color=0xFFB2F5)
731+
embed.set_image(url=member.avatar)
732+
await interaction.send(embed=embed)
733+
734+
735+
@bot.hybrid_command(name="내정보", description='내 정보를 봅니다')
736+
async def propill(interaction: discord.Interaction):
737+
member = interaction.author
738+
roles = member.roles
739+
role_names = [role.name for role in roles]
740+
server_id = str(interaction.guild.id)
741+
user_id = str(interaction.author.id)
742+
user_name = str(interaction.author.display_name)
743+
current_happiness = happiness_manager.get_user_happiness(server_id, user_id)
744+
server_id = str(interaction.guild.id)
745+
user_id = str(interaction.author.id)
746+
capital = load_capital()
747+
embed = discord.Embed(title=f"{user_name} 님의 정보", color=0xFFB2F5)
748+
if not member:
749+
member = interaction.user
750+
embed.set_thumbnail(url=member.avatar)
751+
embed.add_field(name="호감도", value=f":heart: {current_happiness}")
752+
if server_id in capital and user_id in capital[server_id]:
753+
embed.add_field(name="자본", value=f"${capital[server_id][user_id]}")
754+
else:
755+
embed.add_field(name="자본", value="아직 주식을 시작하지 않았습니다.")
756+
716757
await interaction.send(embed=embed)
717758

718759

@@ -742,11 +783,11 @@ async def help(interaction: discord.Interaction):
742783
embed = discord.Embed(title="안녕하세요, 시이입니다!", description="귀여운 챗봇 하나쯤, 시이\n'시이야'라고 불러주세요!", color=0xFFB2F5)
743784
embed.set_thumbnail(url='https://cdn.litt.ly/images/d7qircjSN5w6FNgD5Oh57blUjrfbBmCj?s=1200x1200&m=outside&f=webp')
744785
embed.add_field(name="**일반**", value="핑, 하트, 번역, 패치노트, 네이버검색, 유튜브검색, 블로그검색, 계산, 인원통계, 타이머, 프로필, 급식, 메모쓰기, 메모불러오기, 공지사항, 패치노트", inline=False)
745-
embed.add_field(name="**재미**", value="알려주기, 급식, 호감도확인, 호감도도움말, 가위바위보, 광질, 주사위, 업다운시작, 업다운, 설날", inline=False)
786+
embed.add_field(name="**재미**", value="고양이 ,알려주기, 급식, 호감도확인, 호감도도움말, 가위바위보, 광질, 주사위, 업다운시작, 업다운, 설날", inline=False)
746787
embed.add_field(name="**주식**", value="주식매수, 주식매도, 가격보기, 자본")
747788
embed.add_field(name="**보이스**", value="음성채널입장, 음성채널퇴장", inline=False)
748-
embed.add_field(name="**관리**", value="클리어, 임베드생성", inline=False)
749-
embed.set_footer(text="버전: v2.14.7")
789+
embed.add_field(name="**관리**", value="내정보, 프로필, 클리어, 임베드생성", inline=False)
790+
embed.set_footer(text="버전: v2.15.7")
750791
await interaction.send(embed=embed)
751792

752793

@@ -761,14 +802,14 @@ async def hhlep(interaction: discord.Interaction):
761802

762803
@bot.hybrid_command(name="패치노트", description="시이봇 패치노트 보기")
763804
async def pt(interaction: discord.Interaction):
764-
embed = discord.Embed(title="v2.14.7 패치노트", color=0xFFB2F5)
765-
embed.add_field(name="신규기능", value="/와 함깨 시이 로 명령어를 실행가능 하게 변경", inline=False)
805+
embed = discord.Embed(title="v2.15.7 패치노트", color=0xFFB2F5)
806+
embed.add_field(name="신규기능", value="신규 커멘드 /고양이, /내정보 추가, /프로필 코드 수정, 접두사 ! 추가", inline=False)
766807
embed.add_field(name="버그 수정", value="없음",
767808
inline=False)
768809
await interaction.send(embed=embed)
769810

770811

771-
@bot.hybrid_command(name='알려주기', description='시이봇에게 많은걸 알려주세요!(베타)')
812+
@bot.hybrid_command(name='가르치기', description='시이봇에게 많은걸 알려주세요!(베타)')
772813
async def tell(interaction: discord.Interaction, keyword: str, *, description: str):
773814
bot_info = load_bot_info()
774815
server_id = str(interaction.guild.id)
@@ -833,104 +874,83 @@ async def check_happiness(interaction: discord.Interaction):
833874
await interaction.send(embed=embed)
834875

835876
bad_words = ['ㅆㅂ', '씨발', '좆', 'ㅈ까', 'ㅈㄹ', '지랄', '느금마', '니애미', '옘병']
836-
837-
838-
@bot.hybrid_command(name='레벨확인', description='레벨을 확인합니다.')
839-
async def lv_see(interaction: discord.Interaction):
840-
server_id = str(interaction.guild.id)
841-
user_id = str(interaction.author.id)
842-
if user_id in experience and server_id in experience[user_id]:
843-
level = experience[user_id][server_id]['level']
844-
exp = experience[user_id][server_id]['exp']
845-
embed = discord.Embed(title=f"{interaction.author.display_name} 의 정보", color=0xFFB2F5)
846-
embed.add_field(name=f"lv.{level}", value=f"경험치: {exp}")
847-
await interaction.send(embed=embed)
848-
else:
849-
await interaction.send(f"{interaction.author.mention}님의 정보를 찾을 수 없습니다.")
850-
877+
wordshii = ['넹!', '왜 그러세용?', '시이예용!', '필요 하신거 있으신가요?', '뭘 도와드릴까요?', '반가워용', '저 부르셨나요?', '왜요용', '잉', '...?', '네?']
851878

852879
@bot.event
853880
async def on_message(message):
854881
if message.author == bot.user:
855882
return
856-
user_id = str(message.author.id)
857-
server_id = str(message.guild.id)
858-
if user_id not in experience:
859-
experience[user_id] = {}
860-
if server_id not in experience[user_id]:
861-
experience[user_id][server_id] = {'exp': 0, 'level': 1}
862-
experience[user_id][server_id]['exp'] += 1
863-
if experience[user_id][server_id]['exp'] >= 2 * experience[user_id][server_id]['level']:
864-
experience[user_id][server_id]['level'] += 1
865-
experience[user_id][server_id]['exp'] = 0
866-
save_experience()
867-
868-
if message.content.startswith('시이야 '):
869-
message1 = message.content[4:]
870-
bot_info = load_bot_info()
871-
server_id = str(message.guild.id)
872-
user_id = str(message.author.id)
873-
happiness_manager.increment_user_happiness(server_id, user_id, amount=1)
874-
happiness_manager.save_to_file()
875-
info = bot_info.get(message1)
876-
word = {
877-
f'{message.author.display_name}': f"저가 {message.author.display_name} 님을 모를리 없죠!",
878-
'hello': '안녕하세욧!',
879-
'안녕': '안녕하세요. 시이입니다!',
880-
'누구야': '안녕하세요. shii입니다!',
881-
'요일': ':calendar: 오늘은 {}입니다'.format(get_day_of_week()),
882-
'시간': ':clock9: 현재 시간은 {}입니다.'.format(get_time()),
883-
'코딩': '코딩은 재밌어요',
884-
'게임': '게임하면 또 마크랑 원신을 빼놀수 없죠!',
885-
'ㅋㅋㅋ': 'ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ',
886-
'이스터에그': '아직 방장님이 말 하지 말라고 했는데....아직 비밀이예욧!',
887-
'패치버전': '패치버전 v2.14.7',
888-
'과자': '음...과자하니까 과자 먹고 싶당',
889-
'뭐해?': '음.....일하죠 일! 크흠',
890-
'음성채널': '음성채널는 현재 방장이 돈이 없어서 불가능 합니다ㅠㅠ',
891-
'이벤트': '흐음..이벤트는 아직 없어요ㅠㅠ',
892-
'웃어': '히힛 ( ^▽^)',
893-
'맴매': '흐에에엥ㅠㅠㅜ방장님! 도와주세여(/´△`\)',
894-
'옥에티': '옥에티가 있을것같아요? 네, 아마 있을거예요 방장님이 아직 초짜라',
895-
'잔소리해줘': '잔소리는 나쁜거예요 알겠어요?',
896-
'유튜브': '유튜브 검색 기능은 /유튜브검색 으로 실행이 가능합니다!',
897-
'크레딧': '전부다 보란이(그렇게 써있음 ㅇㅇ)',
898-
'구멍': '구멍',
899-
'개발자님': '개발자님이요? 좀, 쪼잔하긴해요(소곤소곤)',
900-
'종': '댕댕대에에엥',
901-
'할말없어?': '할말이요? 할말이요? 할말이요? 할말이요? 할말이요? 할말이요? 없어욧!',
902-
'왭연동': '사이트 및 뉴스 연동은 현재는 업데이트 일정에 없습니다',
903-
'애교': '이이잉...시져ㅕㅕㅕ',
904-
'야근': '설마...야근 시킬 생각은 아니시죠?',
905-
'아이싯떼루': '웩',
906-
'애니': '~개발자왈~ 백성녀와 흑목사는 꼭 봐라',
907-
'축구경기': '축구 경기 연동 기능은 현재 개발중 입니다. 빠른 시일내에 완성 하겠습니다!',
908-
'help': '저와 대화 하실려면 시이야 뒤에 질문을 넣어 불러주세요!',
909-
'음악': '우리 개발자님은 류현준님의 노래를 좋아한데요. 네, TMI네용',
910-
'GCP': '지금 시이봇은 GCP에서 실행되고 있습니다!',
911-
'뭐야': '뭐지?',
912-
'잘가': '잘가요!',
913-
'뭐들어?': '앗, 류현준님의 난간이욧!',
914-
'베타커멘드': '베타 커멘드는 현재 태스트 중인 커멘드 입니다! 언제 생기고 사라질지 모르죠',
915-
'시이이모지': "<:__:1201865120368824360>"
916-
}
917-
if message1 == '' or None:
918-
whyresponse = random.randint(0, 7)
919-
response = why[whyresponse]
920-
await message.channel.send(response)
883+
if message.content.startswith('시이야'):
884+
if not message.content.startswith('시이야 '):
885+
wordss = random.randint(0, 10)
886+
await message.channel.send(wordshii[wordss])
921887
return
922-
elif message1 in word.keys():
923-
return await message.channel.send(word[message1])
924-
else:
925-
if info:
926-
author_nickname = info['author_nickname']
927-
description = info['description']
928-
response = f"{description}\n```{author_nickname}이(가) 알려줬어요!```"
929-
await message.channel.send(response)
930-
else:
888+
if message.content.startswith('시이야 '):
889+
message1 = message.content[4:]
890+
bot_info = load_bot_info()
891+
server_id = str(message.guild.id)
892+
user_id = str(message.author.id)
893+
happiness_manager.increment_user_happiness(server_id, user_id, amount=1)
894+
happiness_manager.save_to_file()
895+
info = bot_info.get(message1)
896+
word = {
897+
f'{message.author.display_name}': f"저가 {message.author.display_name} 님을 모를리 없죠!",
898+
'hello': '안녕하세욧!',
899+
'안녕': '안녕하세요. 시이입니다!',
900+
'누구야': '안녕하세요. shii입니다!',
901+
'요일': ':calendar: 오늘은 {}입니다'.format(get_day_of_week()),
902+
'시간': ':clock9: 현재 시간은 {}입니다.'.format(get_time()),
903+
'코딩': '코딩은 재밌어요',
904+
'게임': '게임하면 또 마크랑 원신을 빼놀수 없죠!',
905+
'ㅋㅋㅋ': 'ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ',
906+
'이스터에그': '아직 방장님이 말 하지 말라고 했는데....아직 비밀이예욧!',
907+
'패치버전': '패치버전 v2.15.7',
908+
'과자': '음...과자하니까 과자 먹고 싶당',
909+
'뭐해?': '음.....일하죠 일! 크흠',
910+
'음성채널': '음성채널는 현재 방장이 돈이 없어서 불가능 합니다ㅠㅠ',
911+
'이벤트': '흐음..이벤트는 아직 없어요ㅠㅠ',
912+
'웃어': '히힛 ( ^▽^)',
913+
'맴매': '흐에에엥ㅠㅠㅜ방장님! 도와주세여(/´△`\)',
914+
'옥에티': '옥에티가 있을것같아요? 네, 아마 있을거예요 방장님이 아직 초짜라',
915+
'잔소리해줘': '잔소리는 나쁜거예요 알겠어요?',
916+
'유튜브': '유튜브 검색 기능은 /유튜브검색 으로 실행이 가능합니다!',
917+
'크레딧': '전부다 보란이(그렇게 써있음 ㅇㅇ)',
918+
'구멍': '구멍',
919+
'개발자님': '개발자님이요? 좀, 쪼잔하긴해요(소곤소곤)',
920+
'종': '댕댕대에에엥',
921+
'할말없어?': '할말이요? 할말이요? 할말이요? 할말이요? 할말이요? 할말이요? 없어욧!',
922+
'왭연동': '사이트 및 뉴스 연동은 현재는 업데이트 일정에 없습니다',
923+
'애교': '이이잉...시져ㅕㅕㅕ',
924+
'야근': '설마...야근 시킬 생각은 아니시죠?',
925+
'아이싯떼루': '웩',
926+
'애니': '~개발자왈~ 백성녀와 흑목사는 꼭 봐라',
927+
'축구경기': '축구 경기 연동 기능은 현재 개발중 입니다. 빠른 시일내에 완성 하겠습니다!',
928+
'help': '저와 대화 하실려면 시이야 뒤에 질문을 넣어 불러주세요!',
929+
'음악': '우리 개발자님은 류현준님의 노래를 좋아한데요. 네, TMI네용',
930+
'GCP': '지금 시이봇은 GCP에서 실행되고 있습니다!',
931+
'뭐야': '뭐지?',
932+
'잘가': '잘가요!',
933+
'뭐들어?': '앗, 류현준님의 난간이욧!',
934+
'베타커멘드': '베타 커멘드는 현재 태스트 중인 커멘드 입니다! 언제 생기고 사라질지 모르죠',
935+
'시이이모지': "<:__:1201865120368824360>"
936+
}
937+
if message1 == '' or None:
931938
whyresponse = random.randint(0, 7)
932939
response = why[whyresponse]
933940
await message.channel.send(response)
941+
return
942+
elif message1 in word.keys():
943+
return await message.channel.send(word[message1])
944+
else:
945+
if info:
946+
author_nickname = info['author_nickname']
947+
description = info['description']
948+
response = f"{description}\n```{author_nickname}이(가) 알려줬어요!```"
949+
await message.channel.send(response)
950+
else:
951+
whyresponse = random.randint(0, 7)
952+
response = why[whyresponse]
953+
await message.channel.send(response)
934954
await bot.process_commands(message)
935955

936956

0 commit comments

Comments
 (0)