阻止机器人创建具有相同名称的重复频道 |不和谐.py

时间:2021-07-04 08:36:43

标签: python discord discord.py

我正在为我的不和谐机器人创建票证工具,但用户可以通过在那里做出反应来创建无限的票证。但是,我希望机器人通知该用户,以提醒他们他已经有一张未结票。

这是我迄今为止尝试过的方法,但根本不起作用:

guild = await bot.fetch_guild(id)
channels = guild.text_channels
duplicate = False
name = f"{payload.member.name}'s ticket"
for channel in channels:
    if name == channel.name:
        duplicate = True
        break

if duplicate:
    await payload.member.send("You already have an open ticket")
    return
else:
    await category.create_text_channel(name, topic= topic, permission_synced= True)
    await ticket_channel.set_permissions(payload.member, read_messages= True, send_messages= True) 

1 个答案:

答案 0 :(得分:2)

文本通道的名称中不能有空格和引号(也会被转换成小写),像这样的名字Name's ticket会被转换成names-tickets

name = f"{payload.member.name.lower()}s-ticket"
for channel in channels:
    if name == channel.name:
        duplicate = True
        break

您还可以大量简化代码,而不是使用 for 循环,您可以使用 any 函数

duplicate = any(name == channel.name for channel in channels)
if duplicate:
    return await payload.member.send("You already have an open ticket")