Files
AoyoBot/cogs/automatization.py
Дмитрий Шиманский ae43a31e39 Initialize project
2024-02-22 19:04:48 +03:00

102 lines
4.9 KiB
Python

from handlers import *
from disnake.ext import commands, tasks
import disnake
from datetime import datetime
from log import rootLogger
import pyspw
import json
import aiogram
from aiogram import types
class automatization(commands.Cog):
def __init__(self, bot):
self.bot = bot
self.mutes.start()
rootLogger.info("Starting automatization...")
@tasks.loop(seconds=60.0)
async def mutes(self):
thisTime = datetime.now().strftime("%d/%m/%Y %H:%M")
path = Path("mute.json")
userData = json.loads(path.read_text(encoding="utf-8"))
if f"{thisTime}" in userData["mutes"]:
for items in userData["mutes"][f"{thisTime}"]:
guild = self.bot.get_guild(int(userData["mutes"][f"{thisTime}"][items]["guild"]))
member = await guild.fetch_member(int(userData["mutes"][f"{thisTime}"][items]["user"]))
await member.remove_roles(disnake.utils.get(guild.roles, id = int(takeSettings(guild.id, "mute_role"))))
del userData["mutes"][f"{thisTime}"]
path.write_text(json.dumps(userData, indent=4, ensure_ascii=False), encoding="utf-8", newline="\n")
@bot.listen()
async def on_message(message: disnake.Message):
path = Path("guilds/guilds.json")
data = json.loads(path.read_text(encoding="utf-8"))
if "autoreaction" in data["guilds"][f"{message.guild.id}"] and not message.author.bot:
if f"{message.channel.id}" in data["guilds"][f"{message.guild.id}"]["autoreaction"]:
reaction1 = bot.get_emoji(int(data["guilds"][f"{message.guild.id}"]["autoreaction"][f"{message.channel.id}"]["reaction1"]))
await message.add_reaction(reaction1)
try:
reaction2 = bot.get_emoji(int(data["guilds"][f"{message.guild.id}"]["autoreaction"][f"{message.channel.id}"]["reaction2"]))
await message.add_reaction(reaction2)
except: pass
if "autobrench" in data["guilds"][f"{message.guild.id}"] and not message.author.bot:
if f"{message.channel.id}" in data["guilds"][f"{message.guild.id}"]["autobrench"]:
await message.create_thread(name='Autobranch')
@bot.event
async def on_member_join(member):
path = Path("guilds/guilds.json")
data = json.loads(path.read_text(encoding="utf-8"))
guildData = data["guilds"][f"{member.guild.id}"]
onJoinRole = disnake.utils.get(member.guild.roles, id = int(takeSettings(member.guild.id, "on_join_role")))
if "guest_room" in guildData or guildData["server"] != ["None", {}]:
if "guest_room" in guildData:
channelGuestRoom = bot.get_channel(int(guildData["guest_room"]))
try:
description = guildData["guest_text"].format(user=member.mention)
except:
description = guildData["guest_text"]
emb = disnake.Embed(title=f"**Привет, {member.name}!**", description=description, colour=disnake.Colour.from_rgb(47, 49, 54))
try:
emb.set_image(url=guildData["image_url"])
except:
print()
if guildData["server"] != ["None", {}]:
if guildData["server"]["server"] == "POOP":
try:
api = pyspw.SpApi(card_id=api_id, card_token=api_token).get_user(member.id).nickname
except:
print('Api error.... Again')
if api:
await member.edit(nick=api)
await member.add_roles(bot.get_guild(member.guild.id).get_role(int(guildData["server"]["role"])))
if "guest_room" in guildData:
emb.set_footer(text=f"Игрок подтвержден! Ник: {api}")
else:
if "guest_room" in guildData:
emb.set_footer(text=f"Игрок не подтвержден!")
else:
await member.add_roles(onJoinRole)
if "guest_room" in guildData:
await channelGuestRoom.send(member.mention,embed=emb)
@bot.event
async def on_member_remove(member):
path = Path("guilds/guilds.json")
data = json.loads(path.read_text(encoding="utf-8"))
guildData = data["guilds"][f"{member.guild.id}"]
if "image" in guildData:
channelGuestRoom = bot.get_channel(int(takeSettings(member.guild.id, "guest_room")))
emb = disnake.Embed(title=f"**Пока-пока, {member.name}!**", colour=disnake.Colour.from_rgb(47, 49, 54))
emb.set_image(url=guildData["image"])
emb.set_footer(text="Ждем тебя снова!")
await channelGuestRoom.send(embed=emb)
def setup(bot):
bot.add_cog(automatization(bot))