【问题标题】:Python DM all commandPython DM 全部命令
【发布时间】:2021-01-17 02:08:23
【问题描述】:

所以,我正在为我的服务器制作一个自定义机器人并且遇到了问题,这是我的代码:

@bot.command()
@commands.has_role('| Owner')
async def dmall(ctx,desc):
    title = f'message from {ctx.message.author}'
    await ctx.send('Sending messages!')
    for members in bot.get_all_members():
        embed = discord.Embed(title=title, description=desc)
        await members.send(embed=embed)
        print('Sent a message!')
        time.sleep(3)

我得到的错误:

Ignoring exception in command dmall:
Traceback (most recent call last):
  File "/home/container/discord/ext/commands/core.py", line 85, in wrapped
    ret = await coro(*args, **kwargs)
  File "/home/container/main.py", line 37, in dmall
    await members.send(embed=embed)
  File "/home/container/discord/abc.py", line 864, in send
    channel = await self._get_channel()
  File "/home/container/discord/member.py", line 250, in _get_channel
    ch = await self.create_dm()
  File "/home/container/discord/member.py", line 110, in general
    return getattr(self._user, x)(*args, **kwargs)
AttributeError: 'ClientUser' object has no attribute 'create_dm'

我一直在试图弄清楚,问题是我没有在我的代码中的任何地方使用create_dm

【问题讨论】:

    标签: python python-3.x discord discord.py dm


    【解决方案1】:

    bot.get_all_members() 可能是导致该错误的原因。您可以通过ctx.guild members 获取成员。所以你可以这样做:

    @bot.command()
    @commands.has_role('| Owner')
    async def dmall(ctx,desc):
        title = f'message from {ctx.message.author}'
        await ctx.send('Sending messages!')
        for member in ctx.guild.members:
            embed = discord.Embed(title=title, description=desc)
            await member.send(embed=embed)
            print('Sent a message!')
            await asyncio.sleep(3)
    

    我还添加了asyncio.sleep(),因为据我所知,time.sleep() 会阻止所有代码,所以不要忘记导入它。

    【讨论】:

    • Ignoring exception in command dmall: Traceback (most recent call last): File "/home/container/discord/ext/commands/core.py", line 85, in wrapped ret = await coro(*args, **kwargs) File "/home/container/main.py", line 38, in dmall await member.send(embed=embed) File "/home/container/discord/abc.py", line 864, in send channel = await self._get_channel() File "/home/container/discord/member.py", line 250, in _get_channel ch = await self.create_dm() AttributeError: 'ClientUser' object has no attribute 'create_dm'
    • 您可以尝试发送普通消息,而不是嵌入消息吗?
    猜你喜欢
    • 2021-05-17
    • 1970-01-01
    • 2019-08-22
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 2018-07-21
    相关资源
    最近更新 更多