Discord py - 从新创建的频道获取频道 ID

Discord py - get channel id from new created channel

大家好,

我正在尝试创建一个小问题 - 回答问题

那我要做什么?

  1. 对特定频道中的消息做出反应(完成)
  2. 在特定类别下创建新频道(完成)
  3. 获取频道id并在该频道发送消息
@client.event
async def on_raw_reaction_add(payload):
    guild_id = payload.guild_id
    guild = client.get_guild(guild_id)
    emoji = payload.emoji.name
    message_id = payload.message_id
    category = guild.get_channel(766608102081822730)

    if message_id == 769082530611593216 and emoji == "":
        overwrites = {guild.default_role: discord.PermissionOverwrite(read_messages=True, send_messages=True)}
        category = guild.get_channel(769083552209698826)
        now = datetime.now()
        date = now.strftime("%A - %d./%m./%Y")
        await category.create_text_channel(date, overwrites=overwrites)

我的问题是 - 如何从新创建的频道获取频道 ID?

为什么我需要这个新建频道的 ID?

因为我想向频道发送消息 - 因此我需要 ID 对吗?

我的第二个问题:

我想要像日期一样的频道名称(星期一 - 2020 年 12 月 10 日)- discord 显示的名称像

monday-10122020

没问题 - 一切都很好

但我希望我的机器人检查名称“monday-10122020”是否已被使用 - 如果是 returns - 否则他会创建一个新频道命名为“日期”并将其放入某个类别

起初,您不能将. 放在频道名称中。据我所知,你能做的最好的事情就是把 -.

然后,当您创建频道时,使用这样的变量

channel = await category.create_text_channel(date, overwrites=overwrites)
await channel.send('New channel created.`)

并发送消息。

您可以在创建频道之前通过迭代 category.text_channels 检查频道名称。

date = now.strftime("%A-%d-/%m-/%Y"
for channel in category.text_channels:
    if date in channel.name:
        await channel.send('This channel exist')
        return
channel = await category.create_text_channel(date, overwrites=overwrites)
await channel.send('New channel created.`)

因此,使用此代码,如果存在名为 date 变量的频道,它将向该频道发送一条消息,如果不存在,它将创建该频道。