Для реализации такой функциональности, вам необходимо добавить обработчик событий on_guild_join, который будет вызываться каждый раз, когда ваш бот присоединяется к новому серверу. В обработчике событий вы можете проверить наличие роли с нужным именем в сервере и, если ее нет, создать новую роль.
Вот пример кода на основе вашего скрипта, который реализует эту функциональность:
import os
import disnake
from disnake.ext import commands
from func import *
token = "токен"
activity = disnake.Activity(
name="v!help",
type=disnake.ActivityType.watching,
)
bot = commands.Bot(command_prefix="v!", help_command=None, intents=disnake.Intents.all(), activity=activity)
# Функция для создания роли, если ее не существует
async def create_role(guild):
role_name = "Название роли"
role = disnake.utils.get(guild.roles, name=role_name)
if role is None:
role = await guild.create_role(name=role_name, reason="Роль создана ботом")
return role
if not os.path.exists("guilds.json"):
with open("C:/Users/murat/OneDrive/Рабочий стол/Ботинок ДС/jsons/guilds.json", "w") as file:
file.write("{}")
file.close()
if not os.path.exists("mutedroles.json"):
with open("C:/Users/murat/OneDrive/Рабочий стол/Ботинок ДС/jsons/mutedroles.json", "w") as file:
file.write("{}")
file.close()
@bot.event
async def on_ready():
for guild in bot.guilds:
with open("C:/Users/murat/OneDrive/Рабочий стол/Ботинок ДС/jsons/guilds.json", "r") as file:
data = json.load(file)
file.close()
with open("C:/Users/murat/OneDrive/Рабочий стол/Ботинок ДС/jsons/guilds.json", "w") as file:
data[str(guild.id)] = str(guild.name)
json.dump(data, file, indent=4)
file.close()
# Вызов функции создания роли
role = await create_role(guild)
print(f"Роль {role.name} создана в сервере {guild.name}.")
print(f"Бот {bot.user} к вашим услугам!!!")
# Обработка ошибок
@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.slash_command()
async def load(ctx, extension):
if ctx.author.id == 623446417268277268:
bot.load_extension(f"cogs.{extension}")
await