Skip to content

Commit

Permalink
feat(cogs.meme): add meme report
Browse files Browse the repository at this point in the history
  • Loading branch information
samsunghappytree123 committed Jun 12, 2022
1 parent d1fa23d commit 7e74022
Showing 1 changed file with 60 additions and 61 deletions.
121 changes: 60 additions & 61 deletions cogs/meme.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@
class meme(commands.Cog):
def __init__(self, bot):
self.bot = bot
with open("utils/report_label.json", encoding="UTF8") as f:
self.data = json.load(f)

self.options = []
for i in self.data.keys():
self.options.append(discord.SelectOption(value=i, label=self.data[i]["label"], description=self.data[i]["description"]))

async def cog_check(self):
if await BLACKLIST.search_blacklist(self.author.id):
Expand All @@ -34,7 +40,47 @@ async def account_check(self):

@commands.Cog.listener()
async def on_interaction(self, interaction: discord.Interaction):
if interaction.is_component():
if interaction.type == discord.InteractionType.modal_submit:
if interaction.data["custom_id"].startswith("reportformjakseong-"):
report_category_list = []
report_category_list_value = []
for i in (interaction.data['custom_id'].split('-')[2]).split(','):
report_category_list.append(f'reportlabel-{i}')
report_category_list_value.append(f"``{self.data[f'reportlabel-{i}']['label']}``")

rp_list = ', '.join(report_category_list_value)

embed = discord.Embed(color=0x5865F2, title="🚨 신고 접수됨", description="신고가 접수되었습니다.\n>>> 🚩 신고 처리는 최대 7일까지 소요될 수 있으며, 처리 결과는 이용자님의 DM으로 발송됩니다.\n🙏 이용자님의 신고로 짤방러 시스템이 깨끗해질 수 있기를 기대합니다!")
embed.add_field(name="신고 세부 정보", value=f">>> 신고한 짤 : ``{interaction.data['custom_id'].split('-')[1]}``\n신고자 : {interaction.user.mention} (``{interaction.user.id}``)\n위반 카테고리 : {rp_list}", inline=False)
embed.add_field(name="신고 사유", value=interaction.data['components'][0]['components'][0]['value'], inline=False)
view = discord.ui.View()
view.add_item(discord.ui.Button(
label="신고된 짤 보기",
emoji="🚧",
style=discord.ButtonStyle.green,
custom_id=f"reportcheckmeme-{interaction.data['custom_id'].split('-')[1]}-{interaction.user.id}",
))
view.add_item(discord.ui.Button(
label="처리 결과 통보하기",
emoji="🚩",
style=discord.ButtonStyle.blurple,
custom_id=f"reportpunishmeme-{interaction.data['custom_id'].split('-')[1]}-{interaction.user.id}",
))
await self.bot.get_channel(config.BOT.REPORT_CHANNEL).send(embed=embed, view=view)
try:
return await interaction.followup.edit_message(
content=None,
embed=embed,
view=None,
)
except:
return await interaction.response.edit_message(
content=None,
embed=embed,
view=None,
)

if interaction.type == discord.InteractionType.component:
if interaction.data["custom_id"].startswith("report-"):
with open("utils/report_label.json", encoding="UTF8") as f:
data = json.load(f)
Expand All @@ -51,7 +97,7 @@ async def on_interaction(self, interaction: discord.Interaction):
min_values=1,
max_values=len(data.keys()),
options=options,
custom_id="reportlabel",
custom_id=f"reportlabel-{interaction.data['custom_id'].replace('report-', '')}",
)
)
try:
Expand All @@ -66,81 +112,34 @@ async def on_interaction(self, interaction: discord.Interaction):
view=view,
ephemeral=True,
)


def check(inter):
return inter.user.id == interaction.user.id
#return inter.user.id == interaction.user.id and inter.response.id == m.id

try:
interaction_check = await self.bot.wait_for(
"interaction", check=check, timeout=60.0
)
except asyncio.TimeoutError:
embed = discord.Embed(
title=f"<:jbllogo:929615468233363457> 시간 초과",
description="시간이 초과되었습니다.",
color=0x5865F2,
)
try:
return await m.edit_original_message(
content=None,
embed=embed,
view=None,
)
except:
return await m.edit(
content=None,
embed=embed,
view=None,
)

if interaction.data["custom_id"].startswith("reportlabel-"):
reason_list = []
for value in (interaction_check.data["values"]):
reason_list.append(f"``{data[value]['label']}``")
value_list = []
for value in (interaction.data["values"]):
reason_list.append(f"``{self.data[value]['label']}``")
value_list.append(value.split("-")[1])
reasons = ", ".join(reason_list)
values = ",".join(value_list)

view = discord.ui.View()
view.add_item(discord.ui.Button(
label="신고 내용 작성하기",
emoji="📝",
style=discord.ButtonStyle.blurple,
custom_id=f"reportform-{interaction.user.id}",
custom_id=f"reportformyochung-{interaction.data['custom_id'].replace('reportlabel-', '')}-{values}",
))
try:
await m.edit_original_message(content=f"안녕하세요, {interaction.user.mention}님.\n해당 밈(``ID : {interaction.data['custom_id'].replace('report-', '')}``)에 대한 신고 사유가 선택되었습니다.\n\n> 사유 : {reasons}\n\n**``신고 내용 작성하기`` 버튼을 눌러 내용을 작성해주세요.**", view=view)
await interaction.response.edit_message(content=f"안녕하세요, {interaction.user.mention}님.\n해당 밈(``ID : {interaction.data['custom_id'].replace('report-', '')}``)에 대한 신고 사유가 선택되었습니다.\n\n> 사유 : {reasons}\n\n**``신고 내용 작성하기`` 버튼을 눌러 내용을 작성해주세요.\n\n⚠ 한 번씩 문제가 발생하는데, 버튼을 다시 누르면 해결됩니다!**", view=view)
except:
await m.edit(content=f"안녕하세요, {interaction.user.mention}님.\n해당 밈(``ID : {interaction.data['custom_id'].replace('report-', '')}``)에 대한 신고 사유가 선택되었습니다.\n\n> 사유 : {reasons}\n\n**``신고 내용 작성하기`` 버튼을 눌러 내용을 작성해주세요.**", view=view)

try:
interaction_check = await self.bot.wait_for(
"interaction", check=check, timeout=600.0
)
except asyncio.TimeoutError:
embed = discord.Embed(
title=f"<:jbllogo:929615468233363457> 시간 초과",
description="시간이 초과되었습니다.",
color=0x5865F2,
)
try:
return await m.edit_original_message(
content=None,
embed=embed,
view=None,
)
except:
return await m.edit(
content=None,
embed=embed,
view=None,
)
await interaction.followup.edit_message(content=f"안녕하세요, {interaction.user.mention}님.\n해당 밈(``ID : {interaction.data['custom_id'].replace('report-', '')}``)에 대한 신고 사유가 선택되었습니다.\n\n> 사유 : {reasons}\n\n**``신고 내용 작성하기`` 버튼을 눌러 내용을 작성해주세요.\n\n⚠ 한 번씩 문제가 발생하는데, 버튼을 다시 누르면 해결됩니다!**", view=view)

if interaction.data["custom_id"].startswith("reportform-"):
modal = discord.ui.Modal(title="신고 내용 작성하기", custom_id="reportform")
if interaction.data["custom_id"].startswith("reportformyochung-"):
modal = discord.ui.Modal(title="신고 내용 작성하기", custom_id=f"reportformjakseong-{interaction.data['custom_id'].replace('reportformyochung-', '')}")
modal.add_item(
discord.ui.InputText(
label="신고 사유",
placeholder="왜 이 짤을 신고하시게 되었나요? 자세하게 설명해주시면 처리 속도가 더 향상된답니다!",
placeholder="왜 이 짤을 신고하시게 되었나요? 자세하게 설명해주시면 처리에 도움이 됩니다!",
style=discord.InputTextStyle.long,
max_length=1024,
custom_id="description",
Expand Down

0 comments on commit 7e74022

Please sign in to comment.