x_shuziK_x
@x_shuziK_x
Занимаюсь созданием Discord ботов.

Возможно ли сделать этого бота, если да, то как?

5f35d28e95644078768414.jpeg5f35d29a28a7f123831713.jpegsrc="https://habrastorage.org/webt/5f/35/d2/5f35d28348e..." alt="image"/>
5f35d2af77fb4702392989.jpeg5f35d2b54f4a0409728898.jpeg
Скриншот 1
Есть канал, допустим "вопрос", в этом канале есть эмбед сообщение. И есть 2 категории: закрытые тикеты и открытые. После отправки своего вопроса в категории открытые тикеты создаётся новый канал с названием текущего тикета, к примеру ticket-10, а в канале "вопрос" появляется сообщения, которое видно на скриншоте 2.
В канале ticket-10 отправляется сообщение, которое видно на скриншоте 3. При написании команды hold модератором, отправляется сообщения, которое видно на скриншоте 4.
Далее идёт решение вопроса.
И последнее!
При отправки команды close отправляется сообщение на скриншоте 5, пользователю запрещается отправлять сообщения в этом канале, и сам канал отправляется в категорию "закрытые тикеты".
Спустя 12 часов тикет сохраняется в текстовый документ, отправляется пользователю в личные сообщения и удаляется канал.

К каналу будут иметь люди, с ролью модератор и выше, и сам создатель тикета.
В канале
  • Вопрос задан
  • 867 просмотров
Пригласить эксперта
Ответы на вопрос 2
@killeryStark
вот простой ког для вопросов
@commands.command(aliases=['предложить'])
    async def suggest( self, ctx , * , agr ):
        await ctx.channel.purge(limit = 1)
        suggest_chanell = self.bot.get_channel(#id канала) 
        embed = discord.Embed(title=f"{ctx.author.name} Предложил :", description= f" {agr} \n\n", color = discord.Color.blue())

        message = await suggest_chanell.send(embed=embed)
        await message.add_reaction('✅')
        await message.add_reaction('❎'


если тебе нужно менять их статус лучше это делать с бд. но если ее не применять то можно создавать отдельный канал под каждый вопрос, но уто не очень удобно

Вот простой ког на жалобы
@commands.command(aliases=['жалоба'])   
    async def report(self, ctx,member: discord.Member = None,*,arg = None):
    
        channel = self.bot.get_channel( #Айди канала жалоб)
    
        if member is None:
    
            await ctx.send(embed = discord.Embed(description = '**:grey_exclamation: Обязательно укажите: пользователя!**'))
    
        elif arg is None:
    
            await ctx.send(embed = discord.Embed(description = '**:grey_exclamation: Обязательно укажите: причину!**'))
    
        else:
            
            await ctx.send(embed = discord.Embed(description =f'**:shield: На пользователя {member.mention} была отправлена жалоба.\n:bookmark_tabs: По причине: {arg}**', color=0x0c0c0c))
            await chanel.send("@everyone") 
            await channel.send(embed = discord.Embed(description =f'**:shield: На пользователя {member.mention} была отправлена жалоба.\n:bookmark_tabs: По причине: {arg}\n:bust_in_silhouette: Автор жалобы: {ctx.author.mention}**', color=0x0c0c0c))


Допиливай под задачи свои)
Ответ написан
Комментировать
@wetwixs
Только робохомячек пишется на js. Но и на python не составит труда написать данный код.

@client.command() #
async def report(stx):
    thhchannel = stx.message.channel 
    ttttt = client.get_channel(703596631261577262) # канал, где данная команда будет работать.
    if thhchannel == ttttt: #Если сообщение написано в данном канале, выполняется код.
        await stx.channel.purge(limit = 1)
        author = stx.message.author
        guild = stx.message.guild
        creport = discord.utils.get(stx.guild.categories, name = 'report') #название категории, где будет создаваться тема.
        await guild.create_text_channel(f'ticket {author.name}', overwrites = None, category = creport, reason = 'Создание нового тикета.')
        server = client.get_guild(703596629814673428) # ID сервера.
        for channel in server.channels:
            if channel.name == f'ticket {author.name}':
                break
        await channel.set_permissions(author, read_messages = True, send_messages = True) #установка прав создателю репорта.
        spekmoder = discord.utils.get(stx.guild.roles, id = 738136827956953279) # Человек из модерации.
        await channel.set_permissions(spekmoder, read_messages = True, send_messages = True)
        alluser = discord.utils.get(stx.guild.roles, id = 703596629814673428) # everyone. 
        await channel.set_permissions(alluser, read_messages = False, send_messages = False)
    else: # Если команда !report не в том канале, ничего не происходит.
        channel = ctx.message.channel(703596631261577262)
        await stx.send('1')


Команда на закрытие репорта так же не сложна. Попросту нужно у упомянутого человека поставить другие права и отправить какое либо сообщение об закрытие репорта в лс или же в сам тикет, думаю проблем не составит.

Привет с аризоны :)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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