mirror of
https://github.com/yawaflua/AoyoBot.git
synced 2025-12-09 03:49:30 +02:00
167 lines
8.5 KiB
Python
167 lines
8.5 KiB
Python
# modals.py
|
|
from handlers import logger, bot, api_id, api_token
|
|
|
|
import disnake
|
|
from pathlib import Path
|
|
import json
|
|
from disnake.ext import commands
|
|
import pyspw
|
|
import sqlite3
|
|
import psycopg2
|
|
from handlers import execute
|
|
class modals(commands.Cog):
|
|
def __init__(self, bot: disnake.Client):
|
|
self.bot = bot
|
|
logger.info(f"Модуль {self.__class__.__name__} включен!")
|
|
|
|
@commands.Cog.listener("on_modal_submit")
|
|
async def on_modal_submit(self, inter: disnake.ModalInteraction):
|
|
await inter.response.send_message(f"{inter.custom_id}", ephemeral=True)
|
|
if inter.custom_id in ["changeNamePrivateRoom", "newUsersLimit"]:
|
|
path = Path("tempFiles/voiceTempFile.json")
|
|
data = json.loads(path.read_text(encoding="utf-8"))
|
|
if (
|
|
int(data["voice_channels"][f"{inter.channel.id}"]["channel_owner"])
|
|
== inter.author.id
|
|
):
|
|
path = Path("tempFiles/voiceName.json")
|
|
data = json.loads(path.read_text(encoding="utf-8"))
|
|
for key, value in inter.text_values.items():
|
|
if inter.custom_id == "changeNamePrivateRoom":
|
|
data[f"{inter.author.id}"] = {
|
|
"chat_name": f"{value[:1024]}",
|
|
"channel_id": f"{inter.channel.id}",
|
|
}
|
|
path.write_text(
|
|
json.dumps(data, indent=7), encoding="utf-8", newline="\n"
|
|
)
|
|
await self.bot.get_channel(inter.channel_id).edit(name=value[:1024])
|
|
else:
|
|
await self.bot.get_channel(inter.channel_id).edit(
|
|
user_limit=int(value[:1024])
|
|
)
|
|
await inter.response.send_message("Готово!", ephemeral=True)
|
|
else:
|
|
await inter.response.send_message(
|
|
"Вы не создатель канала!", ephemeral=True
|
|
)
|
|
elif inter.custom_id in ["customModal", "customModal-api", "interpol", "interpol-api"]:
|
|
path = Path("guilds/guilds.json")
|
|
data = json.loads(path.read_text(encoding="utf-8"))
|
|
embed = disnake.Embed(
|
|
description=f"{inter.author.mention}", colour=inter.author.colour
|
|
)
|
|
for key, value in inter.text_values.items():
|
|
embed.add_field(
|
|
name=key.capitalize(),
|
|
value=value[:1024],
|
|
inline=False,
|
|
)
|
|
|
|
embed.set_image(url=inter.author.avatar.url if inter.author.avatar else None)
|
|
if inter.custom_id in ["customModal-api", "interpol-api"]:
|
|
api = (
|
|
pyspw.SpApi(card_id=api_id, card_token=api_token)
|
|
.get_user(inter.author.id)
|
|
.nickname
|
|
)
|
|
embed.set_footer(text=f"Игрок подтвержден! Никнейм: {api}")
|
|
if inter.custom_id in ["interpol-api", "interpol"]:
|
|
embed.set_footer(text=f"{inter.channel.id}")
|
|
await self.bot.get_channel(
|
|
data["guilds"][f"{inter.guild.id}"]["modals"][f"{inter.channel.id}"]["channel"]).send(
|
|
f"{inter.author.mention}",
|
|
embed=embed,
|
|
components=[
|
|
disnake.ui.Button(
|
|
label="Принять",
|
|
style=disnake.ButtonStyle.success,
|
|
custom_id="acceptInterpol",
|
|
),
|
|
disnake.ui.Button(
|
|
label="Отклонить",
|
|
style=disnake.ButtonStyle.danger,
|
|
custom_id="declineInterpol",
|
|
),
|
|
disnake.ui.Button(
|
|
label="Создать тикет",
|
|
style=disnake.ButtonStyle.blurple,
|
|
custom_id="createInterpolTicket",
|
|
),
|
|
],
|
|
)
|
|
else:
|
|
await self.bot.get_channel(
|
|
data["guilds"][f"{inter.guild.id}"]["modals"][f"{inter.channel.id}"][
|
|
f"{inter.message.id}"
|
|
]["channel"]
|
|
).send(f"{inter.author.mention}", embed=embed)
|
|
await inter.response.send_message("Готово!", ephemeral=True)
|
|
elif inter.custom_id in ["addCourtModal", "addSityModal"]:
|
|
modal_inter = inter
|
|
if inter.custom_id == "addCourtModal":
|
|
print("no")
|
|
sityName = "Unbound"
|
|
for key, values in modal_inter.text_values.items():
|
|
sityName = values
|
|
i = -1
|
|
embed = inter.message.embeds[0]
|
|
fieldFromEmbed = None
|
|
for field in embed.fields:
|
|
i = i + 1
|
|
if field.name == sityName:
|
|
fieldFromEmbed = field
|
|
break
|
|
if not fieldFromEmbed:
|
|
await modal_inter.response.send_message("Вы указали неправильный город", ephemeral=True)
|
|
return False
|
|
symbol = (list(fieldFromEmbed.value)[-2])
|
|
embed = inter.message.embeds[0]
|
|
embed.set_field_at(i, name=sityName, value=fieldFromEmbed.value.replace(f"({symbol})", f"({str(int(symbol)+1)})"), inline=False)
|
|
await modal_inter.response.send_message("Готово!", ephemeral=True)
|
|
await inter.message.edit(embed=embed)
|
|
else:
|
|
await modal_inter.response.send_message("Готово!", ephemeral=True)
|
|
sityName = "Unbound"
|
|
sityCoordinates = "Unbound"
|
|
for key, values in modal_inter.text_values.items():
|
|
if key == "sityName":
|
|
sityName = values
|
|
elif key == "sityCoordinates":
|
|
sityCoordinates = values
|
|
embed = inter.message.embeds[0]
|
|
embed.add_field(name=sityName, value=f"> **Расположение**: {sityCoordinates} \n > **Количество проведенных судов**: (0)", inline=False)
|
|
await inter.message.edit(embed=embed)
|
|
elif inter.custom_id == "addFarmModal":
|
|
|
|
|
|
farmName = "Unbound"
|
|
farmCoordinates = "Unbound"
|
|
farmType = "Unbound"
|
|
sityName = "Unbound"
|
|
for key, values in inter.text_values.items():
|
|
if key == "farmName":
|
|
farmName = values
|
|
elif key == "farmCoordinates":
|
|
farmCoordinates = values
|
|
elif key == "farmType":
|
|
farmType = values
|
|
elif key == "sityName":
|
|
sityName = values
|
|
if ";" in farmName or ";" in farmCoordinates or ";" in farmType or ";" in sityName:
|
|
await inter.response.send_message("SQL инъекции не работает, сын шалавы", ephemeral=True)
|
|
await (await inter.guild.fetch_member(945317832290336798)).send(f"Сын шлюхи {inter.author.mention} попытался использовать sql-инъекцию в {inter.channel.mention}")
|
|
return
|
|
if inter.message.embeds[0].title == "**Фермы**":
|
|
execute("INSERT INTO farms VALUES ({}, {}, {}, {}, {})".format(f'"{farmName}"', f'"{farmCoordinates}"', f'"{farmType}"', f'"{sityName}"', inter.author.id))
|
|
else:
|
|
execute("INSERT INTO private_farms VALUES ({}, {}, {}, {}, {})".format(f'"{farmName}"', f'"{farmCoordinates}"', f'"{farmType}"', f'"{sityName}"', inter.author.id))
|
|
|
|
embed = inter.message.embeds[0]
|
|
embed.add_field(name=sityName, value=f"> **Название фермы**: {farmName} \n > **Расположение**: {farmCoordinates} \n > **Тип фермы**: {farmType}", inline=False)
|
|
await inter.message.edit(embed=embed)
|
|
await inter.response.send_message("Готово!", ephemeral=True)
|
|
|
|
def setup(bot):
|
|
bot.add_cog(modals(bot))
|