python - 使用 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
解决方案
您必须以不同的方式定义通道/可以以不同的方式请求它。
看看下面的代码:
@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
请注意,这可能只是回答您的问题,我没有使用您的代码迁移它!
推荐阅读
- spring - 如何映射不相关的 JPA 实体
- python - 从 VBA 子调用 Shell 时不运行 python 脚本
- c++ - Opengl 纹理重复
- python - 有没有更好的方法在模块之间共享变量?
- javascript - 有没有办法将 webrtc 帧发送到 python 脚本?
- c# - 如何在运行时指定泛型类型?
- elasticsearch - ElasticSearch:查询字符串查询、术语查询和匹配查询之间的区别?
- ms-access - 报表内的 MS Access 子报表
- chart.js - 列过多时不渲染
- angular - 将 Reactive 转换为 typescript angular