如何使用discord.py中的通道ID设置通道对象?

时间:2018-06-29 12:25:08

标签: python python-3.x discord discord.py

大家好,我正在尝试创建一个函数,检查我的不和谐服务器中是否有几个频道已满,但我不知道如何指定它们。 我最好的主意是使用该主意,但是无法将其设置为通道对象,那么我该怎么做?或者还有其他好主意吗?

def full(channel):
   while True:
       if len(channel.voice_members) == channel.user_limit:
           print("Wooo There is a full channel.")
       asyncio.sleep(10)

但是我不知道该如何设置channel参数。 预先感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可以按ID或按名称获取频道对象。

使用discord.utils.get()按名称返回频道(例如语音频道):

channel = discord.utils.get(server.channels, name="Channel_name_here", type="ChannelType.voice") 

或者,如果您具有频道ID,则可以使用discord.get_channel(id)

例如,如果您有要检查的频道名称列表:

channel_names = ['channel1', 'channel2', 'channel3']
for ch in channel_names:
    channel = discord.get.utils(server.channels, name=ch, type="ChannelType.voice")
    full(channel)

documentation中查看更多信息:

discord.get_channel()

discord.utils.get()

答案 1 :(得分:0)

如果您希望将此命令用作命令,则还可以利用converters

@bot.command(pass_context=True)
async def full(ctx, channel: discord.Channel):
    if len(channel.voice_members) == channel.user_limit:
        await bot.say("{} is full".format(channel.name))
    else:
        await bot.say("{} is not full".format(channel.name))