Встраивание в команду не будет отправлено, все остальные встраивания выполняются

#python #discord #discord.py

#python #Discord #discord.py

Вопрос:

Несмотря на то, что все остальные встраивания работают, и это прямое копирование и вставка, «await bot.send_message (ctx.message.channel, embed= embed)» продолжает отправлять ошибки в журнале, и я этого не понимаю. «Бот» — это то, что большинство людей называют клиентом

Я уже пробовал использовать bot.say(), чтобы узнать, был ли канал проблемой, и я попытался изменить инструкцию embed, чтобы объявить как можно ближе к отправке. Все остальные встраивания в коде используют тот же формат с небольшими изменениями, я даже скопировал его, чтобы сделать его точным. Я попытался прокомментировать все его части, единственными частями, которые могут быть причиной этого, являются либо один из операторов add_field, либо начальная настройка, но я использовал это раньше.

                 title = "Rock Paper Scissors", 
                description = ctx.message.author.name, 
                color = discord.Color.red()
            )

            if(winner == "tie"):

                embed.set_thumbnail(url = "//https://i.imgur.com/RcnDdIR.png")
                embed.add_field(name= "Winner", value= "It was a tie! Both chose "   choice   "!", inline=False)
                embed.add_field(name= "Chips", value= users[ctx.message.author.id]["chips"], inline=False)

                await bot.send_message(ctx.message.channel, embed=embed)
                economy["rps"]["played"]  = 1

                print (ctx.message.author.name   " Played Rock Paper Scissors, but tied")

                f = open(logname, "a")
                f.write(ctx.message.author.name   " Played Rock Paper Scissors, but tiedn")
                f.close()

"THE ERROR CODE
The Casiino is open
Running on Casiino
ID: 566778084175642635
Wildcard Played Rock Paper Scissors, but tied
Ignoring exception in command rps
Traceback (most recent call last):
  File "C:UserscjwilAppDataLocalProgramsPythonPython36libsite-packagesdiscordextcommandscore.py", line 50, in wrapped
    ret = yield from coro(*args, **kwargs)
  File "C:UserscjwilDesktopcasiinobot.py", line 479, in rps
    await bot.send_message(ctx.message.channel, embed=embed)
  File "C:UserscjwilAppDataLocalProgramsPythonPython36libsite-packagesdiscordclient.py", line 1152, in send_message
    data = yield from self.http.send_message(channel_id, content, guild_id=guild_id, tts=tts, embed=embed)
  File "C:UserscjwilAppDataLocalProgramsPythonPython36libsite-packagesdiscordhttp.py", line 200, in request
    raise HTTPException(r, data)
discord.errors.HTTPException: BAD REQUEST (status code: 400)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:UserscjwilAppDataLocalProgramsPythonPython36libsite-packagesdiscordextcommandsbot.py", line 846, in process_commands
    yield from command.invoke(ctx)
  File "C:UserscjwilAppDataLocalProgramsPythonPython36libsite-packagesdiscordextcommandscore.py", line 374, in invoke
    yield from injected(*ctx.args, **ctx.kwargs)
  File "C:UserscjwilAppDataLocalProgramsPythonPython36libsite-packagesdiscordextcommandscore.py", line 54, in wrapped
    raise CommandInvokeError(e) from e
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: HTTPException: BAD REQUEST (status code: 400)"```

"I want The embed to send without any issues and without throwing errors."
 

Комментарии:

1. Было бы полезно, если бы вы указали возвращаемую ошибку. Чтение и понимание сообщений об ошибках являются жизненно важным аспектом программирования / отладки.

2. Пожалуйста, также укажите версию discord.py , которые вы используете: print(discord.__version__)

Ответ №1:

Похоже users[ctx.message.author.id]["chips"] , это Member объект. Попробуйте явно получить его строковое представление для использования во внедрении:

 embed.add_field(name= "Chips", value=str(users[ctx.message.author.id]["chips"]), inline=False)
 

Комментарии:

1. Спасибо, но, к сожалению, это не сработало, я прокомментировал все остальные утверждения в trials, кажется, что это происходит из одного из других операторов add_field

2. Это может быть описание, попробуйте обернуть его в str . Где-то вы устанавливаете часть этого встраивания равной Member объекту

3. Я имел в виду description = ctx.message.author строку. Измените его на description = str(ctx.message.author)

4. Хорошо, это исправлено, но теперь я получаю несколько другое сообщение об ошибке, которое я должен был использовать author.name , я изменил журнал ошибок в главном сообщении на то, что я получаю сейчас

5. Это url не похоже на URL, может быть, это все