2023-12-02 10:42:36 +00:00
|
|
|
import random
|
2023-11-25 17:28:48 +00:00
|
|
|
from discord.ui import View, button
|
|
|
|
from discord import Interaction, ButtonStyle, Embed, Color, TextChannel, Forbidden, Message, Member, User, File, HTTPException
|
|
|
|
|
2023-12-02 10:42:36 +00:00
|
|
|
from Christmas.UI.Embed import Mail_Embed, Arcade_Embed
|
2023-11-26 04:27:34 +00:00
|
|
|
from Christmas.Database import database
|
2023-12-03 10:06:21 +00:00
|
|
|
from Christmas.SearchEngine.Snowball import Snowball
|
2023-12-06 10:49:31 +00:00
|
|
|
from Christmas.config import ChristmasConfig
|
|
|
|
|
|
|
|
from koreanbots import KoreanbotsRequester
|
|
|
|
|
2023-11-25 17:28:48 +00:00
|
|
|
class Mail_Confirm_Button(View):
|
2023-11-26 15:27:32 +00:00
|
|
|
def __init__(self, editmode: bool, recive_user: Member, title: str, description: str, *args, **kwargs):
|
|
|
|
self.editmode = editmode
|
2023-11-25 17:28:48 +00:00
|
|
|
self.recive_user = recive_user
|
2023-11-26 04:27:34 +00:00
|
|
|
self.title = title
|
|
|
|
self.description = description
|
2023-11-25 17:28:48 +00:00
|
|
|
super().__init__(timeout=None)
|
|
|
|
|
|
|
|
@button(label="전송", style=ButtonStyle.green, custom_id="mail_send")
|
|
|
|
async def send(self, button, interaction: Interaction):
|
|
|
|
await interaction.response.defer()
|
2023-11-26 04:27:34 +00:00
|
|
|
if await database.get_guild(interaction.guild.id) == None:
|
|
|
|
await interaction.edit_original_response(embed=Embed(title="❌ 에러!", description="서버가 가입되어있지 않아요! 서버에 가입해주세요!"), view=None)
|
|
|
|
return
|
|
|
|
else:
|
2023-11-26 15:27:32 +00:00
|
|
|
if self.editmode == True:
|
|
|
|
await database.update_inserted_mail(self.recive_user.id, interaction.user.id, self.title, self.description)
|
|
|
|
await interaction.edit_original_response(embed=Mail_Embed.mail_edit_sended(receive_user=self.recive_user), view=None)
|
|
|
|
else:
|
|
|
|
await database.insert_mail(interaction.user.id, self.recive_user.id, interaction.user.name, self.title, self.description)
|
|
|
|
await interaction.edit_original_response(embed=Mail_Embed.mail_sended(receive_user=self.recive_user), view=None)
|
2023-11-26 04:27:34 +00:00
|
|
|
|
|
|
|
@button(label="취소", style=ButtonStyle.red, custom_id="mail_cancel")
|
|
|
|
async def cancel(self, button, interaction: Interaction):
|
|
|
|
await interaction.response.defer()
|
|
|
|
await interaction.edit_original_response(embed=Embed(title="✅ 전송취소!", description="편지 전송을 취소했어요!"), view=None)
|
2023-12-02 10:42:36 +00:00
|
|
|
|
|
|
|
class Arcade_Register_Agree(View):
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
|
super().__init__(*args, **kwargs, timeout=None)
|
|
|
|
|
|
|
|
@button(label="동의", style=ButtonStyle.green, custom_id="arcade_register_agree")
|
|
|
|
async def agree(self, button, interaction: Interaction):
|
|
|
|
await interaction.response.defer()
|
|
|
|
try:
|
2023-12-03 10:06:21 +00:00
|
|
|
region = random.choice(["south", "north"])
|
|
|
|
await database.register_arcade(interaction.guild.id, interaction.guild.name, region)
|
|
|
|
await Snowball.register_guild(interaction.guild.id, interaction.guild.name, region)
|
2023-12-02 10:42:36 +00:00
|
|
|
except Exception as e:
|
2023-12-03 10:06:21 +00:00
|
|
|
print(e)
|
2023-12-02 10:42:36 +00:00
|
|
|
await interaction.edit_original_response(embed=Arcade_Embed.register_failed(), view=None)
|
|
|
|
return
|
|
|
|
await interaction.edit_original_response(embed=Arcade_Embed.register_sucessfull(), view=None)
|
|
|
|
|
|
|
|
@button(label="거절", style=ButtonStyle.red, custom_id="arcade_register_disagree")
|
|
|
|
async def disagree(self, button, interaction: Interaction):
|
|
|
|
await interaction.response.defer()
|
|
|
|
await interaction.edit_original_response(embed=Arcade_Embed.register_cancel(), view=None)
|
2023-12-06 10:49:31 +00:00
|
|
|
|
|
|
|
class Recommanded(View):
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
|
self.config = ChristmasConfig()
|
|
|
|
super().__init__(*args, **kwargs, timeout=None)
|
|
|
|
|
|
|
|
@button(label="추천완료", style=ButtonStyle.green, custom_id="arcade_recommanded")
|
|
|
|
async def finished(self, button, interaction: Interaction):
|
|
|
|
await interaction.response.defer()
|
|
|
|
data = await KoreanbotsRequester(self.config.KOREANBOT_TOKEN).get_bot_vote(int(interaction.user.id), interaction.guild.me.id)
|
|
|
|
if data["voted"] == True:
|
|
|
|
await database.insert_arcade_point(interaction.guild.id, interaction.user.id)
|
|
|
|
await interaction.edit_original_response(embed=Arcade_Embed.recommend_sucess(), view=None)
|
|
|
|
else:
|
|
|
|
await interaction.edit_original_response(embed=Arcade_Embed.recommend_failed(), view=None)
|
|
|
|
|