如果猜测错误,将用户与频道断开连接 DiscordPy

Posted

技术标签:

【中文标题】如果猜测错误,将用户与频道断开连接 DiscordPy【英文标题】:Disconnecting users from a Channel if guess is wrong DiscordPy 【发布时间】:2021-09-18 15:38:31 【问题描述】:

我正在编写一个 Discord 机器人。我做了这个命令,它玩一个从 1 到 10 的随机整数的小猜谜游戏。如果用户的猜测是正确的,就会弹出一条消息。如果不是,它会断开用户与语音通道的连接,如果它在一个通道中。

这是我正在处理的代码:

@bot.command()
async def adivinar(ctx: commands.Context):
    user = discord.Member
    aleatorio = random.randint(1,10)
    await ctx.send(f"Guess a number from 1 to 10")

    msg = await bot.wait_for("message")

    if int(msg.content) == aleatorio:
        await ctx.send(f"Congrats! My number was aleatorio")
    else:
        await ctx.send(f"Nope. My number was aleatorio")
        await user.move_to(None)

此代码不起作用。它在终端中显示此错误:

discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: move_to() missing 1 required positional argument: 'channel'

为了制作“adivinar”命令,我研究了这段代码作为参考,效果很好:

@bot.command()
async def kick1(ctx: commands.Context, user: discord.Member):
    await ctx.send(f'user.mention has been kicked from user.voice.channel.mention')
    await user.move_to(None)

我很确定这很容易解决。但目前我很难弄清楚。谢谢!

【问题讨论】:

【参考方案1】:

您将用户分配给 discord.Member 类,而不是真正的成员

user = discord.Member

你需要像 ⬇ 这样才能移动它

user = ctx.guild.get_member(1234)  # user id

在你的情况下,你也可以使用user = msg.author

【讨论】:

像魅力一样工作!非常感谢!

以上是关于如果猜测错误,将用户与频道断开连接 DiscordPy的主要内容,如果未能解决你的问题,请参考以下文章

如何在 discord.js 中断开用户与语音通道的连接?

如果在某个语音频道中,需要帮助断开成员的连接

Pubnub Socket.io - 与频道断开连接

如何将斜杠命令隐藏到特定用户或频道 Discord.js v13

django 频道如何知道客户端已断开连接?

Discord.py Bot 将文件发送到 Discord 频道