我正在为我的不和谐机器人创建票证工具,但用户可以通过在那里做出反应来创建无限的票证。但是,我希望机器人通知该用户,以提醒他们他已经有一张未结票。
这是我迄今为止尝试过的方法,但根本不起作用:
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)
答案 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")