Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Можете дать скрипт для модерации на disnake? пожалуйста

Амир Мулюков Знаток (351), на голосовании 2 месяца назад
просто их реализовать сложно
Голосование за лучший ответ
ZED Ученик (216) 3 месяца назад
Можешь более доходчиво объяснить?
Furka Yildiz Ученик (182) 3 месяца назад
Ну, эм. Какие команды именно? Могу всего три команды тебе написать как пример:

1. Бан:

 @bot.slash_commands(name="ban", description="Забанить участника")
@commands.has_permissions(ban_members=True) # Устанавливаем права
async def ban(self, inter: disnake.ApplicationCommandInteraction, user: disnake.Member, reason: str)):
await inter.response.defer()
if user == inter.author: # Тот, кто использовал команду, не может забанить себя
return
await inter.guild.ban(reason=reason, user=user) # Баним участника на сервере
await inter.send(f"{user.mention} забанен по причине {reason}")
2. Мут (с помощью таймаута):

 @commands.slash_command(name="мут", description="Выдать мут участнику") 
@commands.has_permissions(moderate_members=True) # Устанавливаем права
async def mute(self, inter: disnake.ApplicationCommandInteraction,
user: disnake.Member, reason: str, seconds:int, minutes:int, hours:int):

await inter.response.defer()

total_seconds = hours * 3600 + minutes * 60 + seconds

time_string = ""
if hours > 0:
time_string += f"{hours} часов "
if minutes > 0:
time_string += f"{minutes} минут "
if seconds > 0:
time_string += f"{seconds} секунд"

if time_string == "":
time_string = "0 дней"

if total_seconds > 0:
await user.timeout(duration=total_seconds, reason=f"Замьючен по причине {reason}")
await inter.send(f"{user} замьючен по причине {reason}")
else:
await inter.send("Вы должны указать время мута!", ephemeral=True)

3. Кик:

 @commands.slash_command(name="кик", description="Выгнать участника из сервера") 
@commands.has_permissions(kick_members=True) # Устанавливаем права
async def kick(self, inter: disnake.ApplicationCommandInteraction, user: disnake.Member, reason: str):
await inter.response.defer()
if user == inter.author.id:
return
await inter.guild.kick(reason=reason, user=user)
await inter.send(f"{user} выгнан из сервера по причине {reason}")

Это всего лишь пример, тебе всё равно придётся дописывать.

Если есть вопросы или ошибки в коде, пиши, да.
Похожие вопросы