mirror of
https://github.com/yawaflua/AoyoBot.git
synced 2025-12-10 20:39:29 +02:00
Initialize project
This commit is contained in:
166
cogs/modals.py
Normal file
166
cogs/modals.py
Normal file
@@ -0,0 +1,166 @@
|
||||
# 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))
|
||||
Reference in New Issue
Block a user