我试图做到这一点,以便每当机器人发送嵌入时,它的颜色都是随机的。这是我的代码:
colors = ['0xFFE4E1', '0x00FF7F', '0xD8BFD8', '0xDC143C', '0xFF4500', '0xDEB887', '0xADFF2F', '0x800000', '0x4682B4', '0x006400', '0x808080', '0xA0522D', '0xF08080', '0xC71585', '0xFFB6C1', '0x00CED1']
@client.command(help='Shares a meme')
async def meme(ctx):
subreddit = reddit.subreddit("dankmemes")
all_subs = []
top = subreddit.top(limit = 75)
for submission in top:
all_subs.append(submission)
random_sub = random.choice(all_subs)
name = random_sub.title
url = random_sub.url
em = discord.Embed(title = name, color = random.choice(colors))
em.set_image(url = url)
await ctx.send(embed = em)
Run Code Online (Sandbox Code Playgroud)
它给了我这个错误:TypeError: Expected discord.Colour, int, or Embed.Empty but received str instead.
不知道如何解决这个问题,有什么建议吗?
我想,一定是
colors = [0xFFE4E1, 0x00FF7F, 0xD8BFD8, 0xDC143C, 0xFF4500, 0xDEB887, 0xADFF2F, 0x800000, 0x4682B4, 0x006400, 0x808080, 0xA0522D, 0xF08080, 0xC71585, 0xFFB6C1, 0x00CED1]
Run Code Online (Sandbox Code Playgroud)
正如您的错误消息所示,该类discord.Embed不接受字符串作为color关键字参数的有效输入。它必须是类的实例:discord.Color。
有几种方法可以完成你的任务:
discord.Colour(value)discord.Colour.from_rgb(r, g, b)discord.Colour.from_hsv(h, s, v)discord.Colour.random()直接传递整数discord.Embed而不是创建discord.Color对象也是可以接受的,但是其他选项将不可用。
例子:
em = discord.Embed(title = name, color = discord.Colour.random())