Discord.py,如果机器人不存在,我将如何让机器人创建一个通道,但如果它确实存在,它将继续执行它的任务?



我试图做到这一点,当有人被警告(-warn @user原因(时,它会说什么用户被警告,他们被谁警告以及为什么他们被警告然后,如果频道还没有,我希望它创建一个名为"warn-logs"的频道(在 Discord 中输入 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 的通道(即使已经存在同名的通道(,但不发送任何消息

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

您可以使用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()

相关内容

最新更新