Elezthem
@Elezthem
17 лет, плохое зрение...

Ког не загрузился, как решить?

Добрый день, хочу загрузить ког, но выдает ошибку в консоле
privates Error!
Extension 'cogs.privates' raised an error: AttributeError: 'Bot' object has no attribute 'cluster'

Честно даже через переводчик не понял как решить, надеюсь кто-то поможет.

Вот код кога: ( я его немного укоротил так как лимит )
import asyncio
import time
import disnake
import pymongo.collection
from disnake.ext import commands, tasks

test_guild = [1150748296453824592]


class Privates(commands.Cog, name="privatkis"):
    def __init__(self, bot):
        self.bot: disnake.Client = bot

        self.cluster = self.bot.cluster
        self.privatki: pymongo.collection.Collection = self.cluster.infinity.privatki
        self.member_privatki: pymongo.collection.Collection = self.cluster.infinity.member_privatki

    async def members(self, member1: str, guild: disnake.Guild, inter: disnake.MessageInteraction):
        id_mem = str(member1) \
            .replace("<", "") \
            .replace("@", "") \
            .replace("!", "") \
            .replace(">", "")
        try:
            member = await guild.fetch_member(int(id_mem))
        except disnake.Forbidden:
            await inter.edit_original_message(embed=disnake.Embed(description=f'Не нашёл пользователя!'))
            return
        except disnake.HTTPException:
            await inter.edit_original_message(embed=disnake.Embed(description=f'Ошибка! Повторите попытку!'))
            return
        return member

    async def del_chan(self, channel: disnake.VoiceChannel):
        try:
            await channel.delete(reason='Канал приваток')
        except (disnake.Forbidden, disnake.NotFound, disnake.HTTPException):
            pass
        find = self.privatki.find_one({"_id": channel.id})
        if find:
            self.privatki.delete_one(find)
            return


    @commands.Cog.listener()
    async def on_voice_state_update(self, member: disnake.Member, before: disnake.VoiceState, after: disnake.VoiceState):
        if after.channel and after.channel.id == 1084577338920018076: #вход румы
            maincategory = after.channel.category
            finds = self.member_privatki.find_one({"member_id": member.id, "guild_id": member.guild.id})
            if finds:
                abc = finds['name']
                name = f'— {abc}'
            else:
                name = f'— Канал {member.display_name}'
            channel2 = await member.guild.create_voice_channel(name=name, category=maincategory, reason='Приватные комнаты || Создание')
            try:
                await member.move_to(channel2, reason='Приватные комнаты || Перемещение')
            except disnake.HTTPException:
                await channel2.delete(reason='Защита от краша приваток')
                return
            post = {
                "_id": channel2.id,
                "member_id": member.id
            }
            self.privatki.insert_one(post)
            await channel2.set_permissions(member, connect=True, view_channel=True)
        if before.channel and before.channel.category.id == 1084577338920018074 and len(before.channel.members) < 1 and before.channel.id != 1084577338920018076: #хуй
            await self.del_chan(before.channel)


    @commands.command()
    async def create_privates_systems(self, ctx):
        emoji1 = self.bot.get_emoji(1089640770773983333)  # изменить название
        emoji2 = self.bot.get_emoji(1089640776281116743)  # лимит
        emoji3 = self.bot.get_emoji(1089640765220733100)  # закрыть комнату
        emoji4 = self.bot.get_emoji(1089640772426551397)  # открыть комнату
        emoji5 = self.bot.get_emoji(1089640767103975554)  # забрать доступ
        emoji6 = self.bot.get_emoji(1089640774771146893)  # выдать доступ
        emoji7 = self.bot.get_emoji(1089640780060164277)  # выгнать из комнаты
        emoji8 = self.bot.get_emoji(1089640768609718382)  # забрать право говорить
        emoji9 = self.bot.get_emoji(1089640777661022290)  # выдать право говорить
        emoji10 = self.bot.get_emoji(1089640763392012299) # передать право на комнату
        row1 = disnake.ui.ActionRow()
        row1.add_button(style=disnake.ButtonStyle.gray, emoji=emoji1, custom_id='pri1')
        row1.add_button(style=disnake.ButtonStyle.gray, emoji=emoji2, custom_id='pri2')
        row1.add_button(style=disnake.ButtonStyle.gray, emoji=emoji3, custom_id='pri3')
        row1.add_button(style=disnake.ButtonStyle.gray, emoji=emoji4, custom_id='pri4')
        row1.add_button(style=disnake.ButtonStyle.gray, emoji=emoji5, custom_id='pri5')
        row2 = disnake.ui.ActionRow()
        row2.add_button(style=disnake.ButtonStyle.gray, emoji=emoji6, custom_id='pri6')
        row2.add_button(style=disnake.ButtonStyle.gray,
                        emoji=emoji7, custom_id='pri7')
        row2.add_button(style=disnake.ButtonStyle.gray,
                        emoji=emoji8, custom_id='pri8')
        row2.add_button(style=disnake.ButtonStyle.gray,
                        emoji=emoji9, custom_id='pri9')
        row2.add_button(style=disnake.ButtonStyle.gray,
                        emoji=emoji10, custom_id='pri10')
        embed = disnake.Embed(
            title='Управление приватной комнатой',
            description=f'Жми следующие кнопки, чтобы настроить свою комнату\nИспользовать их можно только когда у тебя есть приватный канал\n\n'
                        f'{emoji1} — Изменить **название** комнаты\n'
                        f'{emoji2} — Изменить **лимит** пользователей\n'
                        f'{emoji3} — **Закрыть** комнату для всех\n'
                        f'{emoji4} — **Открыть** комнату для всех\n'
                        f'{emoji5} — **Забрать** доступ у пользователя\n'
                        f'{emoji6} — **Выдать** доступ пользователя\n'
                        f'{emoji7} — **Выгнать** пользователя из комнаты\n'
                        f'{emoji8} — **Забрать** право говорить\n'
                        f'{emoji9} — **Выдать** право говорить\n'
                        f'{emoji10} — Передать **владельца** комнаты\n',
            color=0x2b2d31

        )
        await ctx.send(embed=embed, components=[row1, row2])

    async def check_origin_voice(self, member, inter: disnake.MessageInteraction):
        if member.voice is not None:
            channel = member.voice.channel
            finds = self.privatki.find_one({"member_id": member.id})
            if finds:
                chan_id = finds['_id']
                if chan_id == channel.id:
                    return True


def setup(bot):
    bot.add_cog(Privates(bot))
  • Вопрос задан
  • 236 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Читаем документацию на класс disnake.Client, видим, что никакого атрибута cluster там нет.
Почему ког обращается к этому атрибуту - спрашивай того, кто этот код написал.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы