@x4zx
python developer

Как перестать быть автором для команды?

Здравствуйте, делаю бота с системой репортов для отдельного сервера, появилась проблема.
Мой бот работает так: Сначала требуется прописать $report чтобы вызвать embed с кнопкой через которую уже создавать тикеты для репортов, суть проблемы в том что если любой человек нажмет на кнопку для создания репорта то репорт создастся от моего имени и так всегда, скажите пожалуйста что делать?
import discord
from discord import colour
from discord import member
from discord import channel
from discord.ext import commands
from discord_components import DiscordComponents, Button, ButtonStyle, button, component
import asyncio

from discord_components.interaction import InteractionType

intents = discord.Intents.all()
bot = commands.Bot(command_prefix = "$", intents = intents)
bot.remove_command("help")

@bot.event
async def on_ready():
    DiscordComponents(bot)
    print(f'Вы вошли как {bot.user}')

@bot.command()
@commands.has_role(832536148232503326)
async def report(ctx):
        emb = discord.Embed(title = '', description = "**На всі ваші питання допоможе відповісти - <@&833314249827680257>** \n Щоб зв'язатися з адміністраторами натисніть на кнопку нижче", colour = 0xFF8C00)
        emb.set_image(url = 'https://riskcontrolacademy.com/wp-content/uploads/2019/09/support.png')
        emb.set_footer(text = 'Support Team', icon_url = 'https://cdn.discordapp.com/attachments/772850448892690462/833028640715440128/unknown.png')
        await ctx.send(
            embed = emb,
            components = [
                Button(style = ButtonStyle.gray, label = "Зв'язатися", emoji = '')
            ]
        )
        
        while True:

            res = await bot.wait_for('button_click')
            if res.component.label.startswith("Зв'язатися"):
                await res.respond(type = 6)
                channel = await ctx.guild.create_text_channel(name = f"{ctx.author}", category = ctx.guild.get_channel(833425673188016149))
                await channel.set_permissions(ctx.author, overwrite = discord.PermissionOverwrite(view_channel = True, send_messages = True))

            #for role in ctx.author.roles:
                #mentions = ", ".join(role for role in ctx.author.roles)
                #mention = role.mention

            t = ctx.author.status
            if t == discord.Status.online:
                d = "<:online2:842130462038425653> В сети"
            elif t == discord.Status.offline:
                d = "<:offline2:842130438209536000> Не в сети"
            elif t == discord.Status.idle:
                d = "<:away:842130479339667497> Не активен"
            elif t == discord.Status.dnd:
                d = "<:dnd2:842130417406181436> Не беспокоить"
            elif t == discord.Status.streaming:
                d = "<:streaming:846048619571314719> Стримит"

            await channel.send('**<@&833314249827680257> новий тікет, інформація про користувача нижче**')

            emb1 = discord.Embed(title = "Інформаційне табло", description = 'Це табло надає інформацію про автора тікета', colour = 0xFF8C00)
            emb1.add_field(name = 'Користувач', value = f'{ctx.author.mention}')
            emb1.add_field(name = 'Найвища роль', value = f'{ctx.author.top_role.mention}')
            emb1.add_field(name = 'Статус', value = f'{d}')
            emb1.add_field(name = 'Приєднався', value = f'{ctx.author.joined_at.strftime("%a, %#d %B %Y, %I:%M")}')
            emb1.add_field(name = 'Дата створення', value = f'{ctx.author.created_at.strftime("%a, %#d %B %Y, %I:%M")}')
            emb1.set_thumbnail(url = f'{ctx.author.avatar_url}')
            emb1.set_footer(icon_url = f'{ctx.author.avatar_url}', text = f'{ctx.author} | ID: {ctx.author.id}')
            await channel.send(
                embed = emb1,
                components = [
                    Button(style = ButtonStyle.gray, label = 'Закрити', emoji = '⛔')
                ]
            )

            res = await bot.wait_for('button_click')
            if res.component.label.startswith("Закрити"):
                await res.respond(type = 6)
                emb2 = discord.Embed(title = '', description = '**Тікет видалиться через декілька секунд.**', colour = 0xFF8C00)
                await channel.send(embed = emb2)
                await asyncio.sleep(3)
                await res.channel.delete()
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
@dreameddd
Чтобы получить пользователя, который нажал кнопку:
member = res.guild.get_member(res.user.id)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы