Discord.py,如果它不存在,我将如何使它创建通道,但如果它存在,它将继续执行其任务?

时间:2019-06-03 14:32:11

标签: python python-3.x discord.py python-3.7 discord.py-rewrite

我正在尝试做到这一点,所以当有人被警告时(-警告@user原因),它将说出警告了哪些用户,被警告的人以及被警告的原因 然后,如果该频道还不存在,我希望它创建一个名为“ warn-logs”的频道(在Discord本身中键入时为#warn-logs),但是如果该频道已经存在且具有该名称,它将继续进行它的任务是说:被警告的用户,被警告的用户以及被警告的原因,我不希望它记录任何内容,只是让人们知道警告并将其保存到频道中

我已经尝试了所有可以找到的东西,但没有任何帮助,甚至没有Python Discord服务器或Discord.py Discord服务器

这是警告命令本身,也是我到目前为止所做的

@client.command()
@has_permissions(kick_members=True)
async def warn(ctx, member:discord.Member, *, arg):
 author = ctx.author
 guild = ctx.message.guild
 channel = await guild.create_text_channel('warn-logs')

 channel
 await ctx.send(f'{member.mention} warned for: {arg} warned by: {author.mention}')
 await member.send(f'{author.mention} warned you for: {arg}')
 await ctx.message.delete()

我没有收到任何错误消息,所有发生的事情是它创建了一个名为warn-logs的通道(即使已经存在一个具有相同名称的通道),但不发送任何消息

1 个答案:

答案 0 :(得分:1)

看起来当前代码应该在调用命令的通道中发送消息。发生了吗?

您可以使用discord.utils.get搜索具有特定名称的频道:

@client.command()
@has_permissions(kick_members=True)
async def warn(ctx, member:discord.Member, *, arg):
    author = ctx.author
    guild = ctx.guild
    channel = get(guild.text_channels, name='warn-logs')
    if channel is None:
        channel = await guild.create_text_channel('warn-logs')
    await channel.send(f'{member.mention} warned for: {arg} warned by: {author.mention}')
    await member.send(f'{author.mention} warned you for: {arg}')
    await ctx.message.delete()