首页 > 解决方案 > 使用 discord.py 获取用户当前所在频道的 ID

问题描述

我正在努力获取用户当前处于不和谐状态的语音频道的 ID(或名称)。我希望能够将用户移动到特定频道,然后在一段时间后将用户移回其所在的频道。

所以基本上是一种“超时”方法。

我有代码,但channelID行不起作用。

from discord.ext import commands
import discord
import os
import time

bot = commands.Bot(command_prefix = '$')

@bot.command(pass_context=True)
async def goout(ctx, member: discord.Member):

    channelID = member.voice_channel.id

    channel = discord.utils.get(ctx.guild.voice_channels, name='Go out')
    channel2 = discord.utils.get(ctx.guild.voice_channels, id=channelID)

    while True:
        await member.edit(voice_channel=channel)
        time.sleep(3)
        await member.edit(voice_channel=channel2)
        return False

标签: pythondiscorddiscord.py

解决方案


您必须以不同的方式定义通道/可以以不同的方式请求它。

看看下面的代码:

@bot.command()
async def voice(ctx, member: discord.Member):
    voice_state = None if not member.voice else member.voice.channel
    if voice_state:
        await ctx.send(f"Name: {voice_state} / ID: {voice_state.id}")
    else:
        await ctx.send("Not in a voice channel.")

我们做了什么?

  • 内置member : discord.Member作为需要的参数
  • 定义voice_state为我们正在寻找的“渠道”
  • voice_state检查成员是否在语音频道中
  • 内置if/else语句来处理None或实际通道

如果你想要它的简单方法,你可以使用:

await ctx.send(f"{member.voice.channel}") # Gives out the name
await ctx.send(f"{member.voice.channel.id}") # Gives out the ID

请注意,这可能只是回答您的问题,我没有使用您的代码迁移它!


推荐阅读