【问题标题】:discord.py - convert string into member, then move member into a specific channeldiscord.py - 将字符串转换为成员,然后将成员移动到特定频道
【发布时间】:2021-01-30 06:53:01
【问题描述】:

对于我的机器人,我正在尝试制作一个命令,将玩家从字符串移动到服务器上的某个语音通道。该字符串的格式为“ExampleUser#0000”,我正在尝试将字符串转换为成员对象并将它们移动到语音通道中。我已经导入了 discord.py 的命令扩展,命令(当前不工作)可以在下面找到。

将来该字符串将来自我拥有的 JSON,并且只会移动某些成员,但我想在我担心之前对其进行排序。为了透明起见,JSON 将单独命令的作者存储在一个字符串中,如 f'{ctx.author}' 以及一些其他信息。

我们将不胜感激。

name = 'ExampleUser#0000'
@client.command()
async def test(ctx):
    channel = discord.utils.get(ctx.guild.channels, name='Test')
    member = await MemberConverter().convert(ctx, name)
    await member.move_to(channel)

【问题讨论】:

  • 将字符串转换为成员有问题吗?
  • 你试过什么?你得到了什么错误?您能否验证该命令是否运行?您需要更具体一点,因为尚不完全清楚您的问题是什么。不过,对于初学者来说,您没有正确使用 MemberConverter().convert() 函数,因为它需要上下文和名称。我建议你阅读这里写的文档discordpy.readthedocs.io/en/latest/ext/commands/…
  • 问题是将字符串转换为成员。我找到了将成员移动到特定语音频道的正确功能并编辑了上面的代码。
  • @FusionInsanity MemberConverter() 确实将字符串转换为成员,因此如果代码不起作用,请同时发布您遇到的任何错误/完整的堆栈跟踪,以便我们为您提供帮助。跨度>

标签: python discord discord.py


【解决方案1】:

您正确获取了频道,您的问题与会员有关。

您应该使用此功能按名称获取成员,如果您有 id 使用guild.get_member(IDHERE)。另外,您可以遍历它们并使用 try/except 以防有人未连接。

name = 'AZ#0573'

@client.command()
async def test(ctx):
    channel = discord.utils.get(ctx.guild.channels, name='test')
    member = ctx.guild.get_member_named(name)
    await member.move_to(channel)

【讨论】:

    猜你喜欢
    • 2020-12-21
    • 1970-01-01
    • 2021-09-01
    • 2018-10-07
    • 2018-02-06
    • 1970-01-01
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多