【问题标题】:How do I define the attribute for 'get_member' with discord.py如何使用 discord.py 定义“get_member”的属性
【发布时间】:2021-10-25 04:30:07
【问题描述】:

我正在尝试编写一个不和谐的机器人,它将通过一个命令通过一组语音通道移动已经在语音通道中的多个用户,这是使用 python 的第二天,所以我肯定缺少关键知识。

import json
import discord
import requests
import random

client = discord.Client()

@client.event
async def on_message(message):
    if message.author == client.user:
        return

member = client.get_member('178326748616720394', '156247530563174400', '96013123013595136', '253307143665614849')
Brazil1 = client.get_channel('817415267256500226')
Brazil2 = client.get_channel('820528316468559892')
Brazil3 = client.get_channel('847980697658458113')
Brazil4 = client.get_channel('867262779139948575')

member1 = client.get_member('178326748616720394')
member2 = client.get_member('156247530563174400')
member3 = client.get_member('96013123013595136')
member4 = client.get_member('253307143665614849')


async def on_message(message):
    if message.author == client.user:
        return
    if message.content.startswith('!timetogroove'):
        await member.move_to(Brazil1)

我收到以下提示: 回溯(最近一次通话最后): 文件第 50 行,在 成员 = client.get_member('178326748616720394', '156247530563174400', '96013123013595136', '253307143665614849') AttributeError: 'Client' 对象没有属性 'get_member'

这是我第一次发帖,欢迎对未来项目和堆栈溢出问题的任何指导

【问题讨论】:

  • 这个thread 可能对你有帮助

标签: python attributes discord.py


【解决方案1】:

欢迎堆叠 Moose!

您可以使用client.get_userguild.get_member 来获得您想要的。在这种情况下(在服务器中使用)我建议您使用guild.get_member(注意:您可能需要在Developer Portal 中设置Intent,如果您的机器人用于超过 100 个服务器,您可能需要一个不和谐白名单)

您可能也想使用Guild.get_channel 而不是Client.get_channel

这是一个如何使用它的示例,请尝试 fetch move_to youself :)

    async def move(message): # context or message are fine!
        guild = message.guild
        member_signed_ids = [178326748616720394, 156247530563174400, 96013123013595136, 253307143665614849]
        for member_signed_id in member_signed_ids:
            member = guild.get_member(member_signed_id)
            if member:    # ensure we find it
                # if target_member.id = member.id
                    # move the member
                    # pass

【讨论】:

  • 因为get_member 使用缓存有时成员不在缓存中,然后使用await guild.fetch_member(ID) 它将发出获取成员的请求。总是让 fetch if not member: member = await guild.fetch_member(member_signed_id)下的第二个选项
猜你喜欢
  • 2021-11-10
  • 2021-09-10
  • 1970-01-01
  • 2020-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多