因此,我正在为服务器创建自定义机器人,但出现了问题,以下是我的代码:
@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
。
答案 0 :(得分:0)
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()
会阻止所有代码,所以请不要忘记导入它。