我是一个 discord.py 的新用户,正在尝试嵌入 8ball 命令

I am a new discord.py user attempting to make an 8ball command embeded

我已经为我的 discord 机器人发出了一个 8ball 命令,但不知道如何让它成为一个嵌入式响应。在我尝试将其嵌入之前,我的代码使用

await ctx.send(f'Question: {question}\nAnswer: {random.choice(responses)}')

现在我尝试制作一个嵌入式 8ball,当我尝试时,机器人没有响应。这是我的代码。

@bot.command(aliases=['8ball'])
async def _8ball(ctx, *, question):
  responses = [
  discord.Embed(title='It is certain.'), 
  discord.Embed(title='It is decidedly so.'),
  discord.Embed(title='Without a doubt.'),
  discord.Embed(title='Yes - definitely.'), 
  discord.Embed(title='You may rely on it.'), 
  discord.Embed(title='Most likely.'),
  discord.Embed(title='Outlook good.'), 
  discord.Embed(title='Yes.'), 
  discord.Embed(title='Signs point to yes.'),
    discord.Embed(title='Reply hazy, try again.'), 
  discord.Embed(title='Ask again later.'),
    discord.Embed(title='Better not tell you now.'), 
  discord.Embed(title='Cannot predict now.'),
    discord.Embed(title='Concentrate and ask again.'), 
  discord.Embed(title="Don't count on it."), 
  discord.Embed(title='My reply is no.'),
    discord.Embed(title='My sources say no.'), 
  discord.Embed(title='Outlook not very good.'), 
  discord.Embed(title='Very doubtful.')
    ]
  responses = random.choice(responses)
  await ctx.send(embed=f'Question: {question} \nAnswer: {random.choice(responses)}')

ctx.send()中的嵌入参数只能包含一个不和谐的嵌入对象,而你的包含一个字符串。相反,您可以通过内容参数发送字符串。

除此之外,您还调用了 random.choice(responses) 两次。第一次使用它 return 是列表中的随机嵌入对象,第二次尝试 return 不是列表的随机对象,这会引发错误。

试试这个:

@bot.command(aliases=['8ball'])
async def _8ball(ctx, *, question):
  responses = [
  discord.Embed(title='It is certain.'),
  discord.Embed(title='It is decidedly so.'),
  discord.Embed(title='Without a doubt.'),
  discord.Embed(title='Yes - definitely.'),
  discord.Embed(title='You may rely on it.'),
  discord.Embed(title='Most likely.'),
  discord.Embed(title='Outlook good.'),
  discord.Embed(title='Yes.'),
  discord.Embed(title='Signs point to yes.'),
  discord.Embed(title='Reply hazy, try again.'),
  discord.Embed(title='Ask again later.'),
  discord.Embed(title='Better not tell you now.'),
  discord.Embed(title='Cannot predict now.'),
  discord.Embed(title='Concentrate and ask again.'),
  discord.Embed(title="Don't count on it."),
  discord.Embed(title='My reply is no.'),
  discord.Embed(title='My sources say no.'),
  discord.Embed(title='Outlook not very good.'),
  discord.Embed(title='Very doubtful.')
    ]
  responses = random.choice(responses)
  await ctx.send(content=f'Question: {question}\nAnswer:', embed=responses)

首先,您可以创建一个 json 文件或一个回复列表。

使用 json.. 如下所示:

创建一个名为 responses.json 的文件 为其添加值:

{
    "possibilities": [
        'no',
        'It is certain.',
        'It is decidedly so.',
        'Without a doubt.',
        'Yes - definitely.',
        'You may rely on it.',
        'Most likely.',
        'Outlook good.',
        'Yes.',
        'add more here...'
    ]
}

现在在您的 python 主文件中:

import json

with open("./possibilities.json", "r") as file:
    data = json.load(file) 
    possibilities = data['possibilities']

@bot.command(aliases=['8ball']) async def _8ball(ctx, *, question):
    response = random.choice(possibilities)
    embed = discord.Embed(title="8ball", description=f'Question: {question}\nAnswer:{response}')
    await ctx.send(embed=embed)