@vlan3ik

Как сделать рассылку на все сервера, на которых есть бот?

Вот такой у меня код сейчас:

@bot.command(aliases = ['рассылка',"р","ссылка"])
async def rassilka(ctx ):
    if ctx.author.id == мой id:
        embed = discord.Embed(title="",description=f"", colour=discord.Colour.blue())
        embed.add_field(name=f"", value="", inline=True)
        for guild in bot.guilds:
            print(f"{guild} - not ready")
            random_chan = guild.channels
            chenel = random.choice(random_chan)
            await chenel.send("Срочная инфа")
            await chenel.send(embed  =embed)
            print(f"{guild} - ready")

Пример ошибки, но всегда ошибки выходят разные:

Command raised an exception: AttributeError: 'CategoryChannel' object has no attribute 'send'
  • Вопрос задан
  • 372 просмотра
Решения вопроса 1
@fanepka
Работаю на Python
Вам же ясно указали в ошибке. AttributeError: 'CategoryChannel' object has no attribute 'send', т.е. Объект "CategoryChannel" не содержит аттрибута "send". Переменная guild.channels содержит категории каналов. Вам нужно из категории достать текстовые каналы.

@bot.command(aliases = ['рассылка',"р","ссылка"])
async def rassilka(ctx ):
    if ctx.author.id == мой id:
        embed = discord.Embed(title="",description=f"", colour=discord.Colour.blue())
        embed.add_field(name=f"", value="", inline=True)
        for guild in bot.guilds:
            print(f"{guild} - not ready")
            random_chan = [ch for ch in guild.channels if ch.type == discord.ChannelType.text]
            chenel = random.choice(random_chan)
            await chenel.send("Срочная инфа")
            await chenel.send(embed  =embed)
            print(f"{guild} - ready")


Только не забудьте импортировать discord в начале кода, иначе выдаст ошибку!!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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