import os
import disnake
import datetime
from disnake.ext import commands
bot = commands.Bot(command_prefix=".", help_command=None, intents=disnake.Intents.all(), test_guilds=[1124993749949362287])
@bot.event
async def on_ready():
print(f"Bot {bot.user} is ready to work!")
@bot.event
async def on_member_join(member):
role = disnake.utils.get(member.guild.roles, id=1124998471049551872)
channel = member.guild.system_channel
embed = disnake.Embed(
title="Новый участник!",
description=f"{member.name}#{member.discriminator}",
color=0xb3feff
)
await member.add_roles(role)
await channel.send(embed=embed)
@bot.event
async def on_message(message):
await bot.process_commands(message)
for content in message.content.split(","):
for censored_word in CENSORED_WORDS:
if content.lower() == censored_word:
await message.delete()
await message.channel.send(f"{message.author.mention} мать это святое, балван!")
@bot.event
async def on_command_error(ctx, error):
print(error)
if isinstance(error, commands.MissingPermissions):
await ctx.send(f"{ctx.author}, у вас недостаточно прав для выполнения данной команды!")
elif isinstance(error, commands.UserInputError):
await ctx.send(embed=disnake.Embed(
description=f"Правильное использование команды:'{ctx.prefix}{ctx.command.name}' ({ctx.command.brief})\nExample: {ctx.prefix}{ctx.command.usage}"
))
@bot.command(usage="kick <@user> <причина>", brief="Данная команда исключает участника с сервера!" )
@commands.has_any_role("モデレータ | Moderator")
async def kick(ctx, member: disnake.Member, *, reason="Администратор не указал причину."):
await ctx.send(f"Администратор {ctx.author.mention} исключил пользователя {member.mention}")
await member.kick(reason=reason)
@bot.command(usage="ban <@user> <причина>", brief="Данная команда блокирует участника сервера!")
@commands.has_any_role("学芸員 | Curator")
async def ban(ctx, member: disnake.Member, *, reason="Администратор не указал причину."):
await ctx.send(f"Администратор {ctx.author.mention} заблокировал пользователя {member.mention}")
await member.ban(reason=reason)
@bot.command(usage="mute <@user> <причина>", brief="Данная команда забирает голос у участника сервера!")
@commands.has_any_role("サポート | Support")
async def mute(ctx, member: disnake.Member, timelimit):
await ctx.send(f"Администратор {ctx.author.mention} замутил пользователя {member.mention}")
if "s" in timelimit:
gettime = timelimit.strip("s")
if int(gettime) > 2419000:
await ctx.send("Сумма времени мута не может превышать 28 дней")
else:
newtime = datetime.timedelta(seconds=int(gettime))
await member.edit(timeout=disnake.utils.utcnow() + newtime)
elif "m" in timelimit:
gettime = timelimit.strip("m")
if int(gettime) > 40320:
await ctx.send("Сумма времени мута не может превышать 28 дней")
else:
newtime = datetime.timedelta(minutes=int(gettime))
await member.edit(timeout=disnake.utils.utcnow() + newtime)
elif "h" in timelimit:
gettime = timelimit.strip("h")
if int(gettime) > 672:
await ctx.send("Сумма времени мута не может превышать 28 дней")
else:
newtime = datetime.timedelta(hours=int(gettime))
await member.edit(timeout=disnake.utils.utcnow() + newtime)
@bot.command()
@commands.has_any_role("サポート | Support")
async def unmute(ctx, member:disnake.Member):
await member.edit (timed_out_until=None)
await ctx.send(f"Администратор {ctx.author.mention} размутил пользователя {member.mention}")
@bot.slash_command(description="Обычный калькулятор, не знаю зачем.")
async def calc(inter, a: int, oper: str, b: int):
if oper == "+":
result = a + b
elif oper == "-":
result = a - b
else:
result = "Неверный оператор."
await inter.send(str(result))
@bot.slash_command(description="Данная команда блокирует участника сервера!")
@commands.has_any_role("学芸員 | Curator")
async def ban(ctx, member: disnake.Member, *, reason="Администратор не указал причину."):
await ctx.send(f"Администратор {ctx.author.mention} заблокировал пользователя {member.mention}")
await member.ban(reason=reason)
@bot.slash_command(description="Данная команда исключает участника с сервера!")
@commands.has_any_role("モデレータ | Moderator")
async def kick(ctx, member: disnake.Member, *, reason="Администратор не указал причину."):
await ctx.send(f"Администратор {ctx.author.mention} исключил пользователя {member.mention}")
await member.kick(reason=reason)
@bot.slash_command(description="Данная команда отдает голос участнику сервера!")
@commands.has_any_role("サポート | Support")
async def unmute(ctx, member:disnake.Member):
await member.edit (timeout=None)
await ctx.send(f"Администратор {ctx.author.mention} размутил пользователя {member.mention}")
@bot.slash_command(description="Данная команда забирает голос у участника сервера!")
@commands.has_any_role("サポート | Support")
async def mute(self, interactions, member: disnake.Member, time: str, reason: str):
time = datetime.datetime.now() + datetime.timedelta(minutes=int(time))
await member.timeout(reason=reason, until=time)
await interactions.response.send_message(f"Timed out {member.mention} for {time} for {reason}", ephemeral=True)