如何制作设置日志记录通道命令

时间:2021-07-21 17:01:00

标签: python discord discord.py

我正在尝试制作一个公共机器人,我想要这个带有日志通道的票务系统,它已经有一个日志通道,但是我如何修改它以创建一个设置日志通道的命令?

# --- Ticket Open ---
@client.command()
@commands.guild_only()
async def ticket(ctx):
    if ctx.channel.type != discord.ChannelType.private:
        channels = [str(channel) for channel in client.get_all_channels()]
        if f'ticket-{ctx.author.id}' in channels:
            await ctx.message.delete()
        else:
            ticket_channel = await ctx.guild.create_text_channel(f'ticket-{ctx.author.id}')
            await ticket_channel.set_permissions(ctx.guild.default_role, send_messages=False, read_messages=False)
            await ticket_channel.set_permissions(ctx.author, send_messages=True, read_messages=True, add_reactions=True, embed_links=True, attach_files=True, read_message_history=True, external_emojis=True)
            embed = discord.Embed(color=10181046, description=f'Please enter the reason for this ticket, type `-close` if you want to close this ticket.')
            embed.set_thumbnail(url='')
            await ticket_channel.send(f'{ctx.author.mention}', embed=embed)
            await ctx.message.delete()
            logchannel = await client.fetch_channel('850364625479532545')
        embed = discord.Embed(title="Ticket Created",
                                  description="",
                                  color=discord.Colour.green())
        embed.add_field(name=f'**By:** {ctx.author}',value= f'**ID:** {ctx.author.id}')
        await logchannel.send(embed=embed)

#--- Ticket Close ---
@client.command()
@commands.guild_only()
async def close(ctx):
    print(f'{ctx.author} | {ctx.author.id} -> {client.command_prefix}close')
    if ctx.channel.type != discord.ChannelType.private:
        admin_roles = [834126146215477348,835608325273157733,838859643224326144,835582821221138472,835914273402126376]
        if ctx.channel.name == f'ticket-{ctx.author.id}':
            await ctx.channel.delete()
        elif admin_roles and 'ticket' in ctx.channel.name or ctx.author.id in administrator_ids and 'ticket' in ctx.channel.name:
            await ctx.channel.delete()
        else:
            await ctx.message.delete()
        logchannel = await client.fetch_channel('850364625479532545')
        embed = discord.Embed(title="Ticket Closed",
                                  description="",
                                  color=discord.Colour.red())
        embed.add_field(name=f'**By:** {ctx.author}',value= f'**ID:** {ctx.author.id}')
        await logchannel.send(embed=embed)

1 个答案:

答案 0 :(得分:1)

提示:如果你想创建一个公共机器人不要使用手写的频道ID,你最好将所有服务器的文件保存在json文件中并用命令设置。 例如这个:

{
"server identifier": "system channel identifier",
...
}

我不知道代码有什么问题。