Discord.py, как бы я заставил бота создать канал, если он не существует, но если он существует, он просто продолжит свою задачу? - PullRequest
1 голос
/ 03 июня 2019

Я пытаюсь сделать так, чтобы, когда кто-то получал предупреждение (-warn @user по причине), он будет сообщать, что пользователь получил предупреждение, от кого он получил предупреждение и почему он получил предупреждение Затем, если канал еще не существует, я хочу, чтобы он создал канал с именем «warn-logs» (# warn-logs при вводе самого Discord), но если канал уже существует с таким именем, он продолжит работу со своей задачей и скажите: что пользователь получил предупреждение, от кого он был предупрежден и почему он получил предупреждение, я не хочу, чтобы он что-либо регистрировал, просто сообщите людям о предупреждении и сохраните его на канале

Я уже перепробовал все, что смог найти, но ничего не помогло, даже сервер Python Discord или сервер Discord.py Discord

Это сама команда warn и то, что я сделал до сих пор

@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 Ответ

1 голос
/ 03 июня 2019

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

Вы можете использовать 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()
...