Discord errors httpexception 400 bad request error code 50006 cannot send an empty message

I was trying to test if I can basically copy all messages sent to test_copy_channel channel and paste them to test_paste_channel Though the bot is executing the commands and logging the embed corre...

I was trying to test if I can basically copy all messages sent to test_copy_channel channel and paste them to test_paste_channel
Though the bot is executing the commands and logging the embed correctly I keep getting an error.

This is the code I’m using:

import discord
import os
from discord.ext import commands


intents = discord.Intents.default()
intents.members = True
bot = commands.Bot(command_prefix=',', intents=intents)


@bot.event
async def on_ready():
  global test_paste_channel, test_copy_channel
  test_paste_channel = bot.get_channel(868816978293452841)
  test_copy_channel = bot.get_channel(808734570283139162)
  print('bot is ready')


@bot.event
async def on_message(message):
  # if message.author == bot.user:
  #   return

  if message.channel == test_copy_channel:
    await test_paste_channel.send(message.content)
    print(message.channel)

  if message.content.startswith('!test'):
    embed_var = discord.Embed(
      title= '''title''', 
      description= '''description''', 
    color= discord.Color.red()
      )
    
    embed_var.set_footer(text='footer')
    await message.channel.send(embed=embed_var)


bot.run(os.getenv('TOKEN'))

So what I do is send !test to test_copy_channel so the bot sends the embed then tries to copy my message and the embed
My message goes through fine but when the bot tries to copy the embed I get this error:

Ignoring exception in on_message
Traceback (most recent call last):
⠀⠀File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 343, in _run_event
⠀⠀⠀⠀await coro(*args, **kwargs)
⠀⠀File "main.py", line 25, in on_message
⠀⠀⠀⠀await test_channel.send(message.content)
⠀⠀File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/abc.py", line 1065, in send data = await state.http.send_message(channel.id, content, tts=tts, embed=embed,
⠀⠀File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/http.py", line 254, in request
⠀⠀⠀⠀raise HTTPException(r, data)
discord.errors.HTTPException: 400 Bad Request (error code: 50006): Cannot send an empty message

It doesn’t seem to stop the command from executing and the code seems to work properly.
As far as I understand, the error is triggered when it tries to copy the embed message that the bot have sent.
I just wanna know why it’s triggering this error.

Содержание

  1. Что делать если выдает ошибку 400 для телеграм бота на python?
  2. Как исправить ошибку 400 Bad Request
  3. Методы исправления ошибки 400 неверных запросов
  4. Как исправить ошибку 400 Bad Request
  5. Больше способов увидеть ошибку 400
  6. Ошибки вроде 400 Bad Request
  7. Ошибка 400 Bad Request – почему возникает и как исправить
  8. Что такое ошибка 400 Bad Request
  9. Почему это происходит
  10. Как исправить ошибку 400
  11. Проблема с браузером
  12. Вирусы
  13. Проблемы у интернет-провайдера
  14. Проблемы с .NET Framework
  15. Проблемы с антивирусом
  16. Проблема с брандмауэром
  17. Проблемы с windows

Что делать если выдает ошибку 400 для телеграм бота на python?

Извините меня за столь глупый вопрос, я просто новичок)
Я хочу сделать обычного телеграм бота на python для группы.
Я сделал так, чтобы при отправки команды /start выскакивало сообщение.
Если в первый раз пишешь, то оно работает, а в следующие разы нет. Выдает Ошибку 400.
Вот код

2020-12-12 17:51:58,760 (util.py:66 WorkerThread2) ERROR — TeleBot: «ApiException occurred, args=(‘A request to the Telegram API was unsuccessful. The server returned HTTP 400 Bad Request. Response body:n[b’<«ok»:false,»error_code»:400,»description»:»Bad Request: file must be non-empty»>’]’,)
Traceback (most recent call last):
File «C:UsersМаринаAppDataLocalProgramsPythonPython38-32libsite-packagestelebotutil.py», line 60, in run
task(*args, **kwargs)
File «C:/Users/Марина/Desktop/telebot_for_group.py», line 14, in welcome_message
bot.send_photo(message.chat.id, img, caption = Text)
File «C:UsersМаринаAppDataLocalProgramsPythonPython38-32libsite-packagestelebot__init__.py», line 638, in send_photo
apihelper.send_photo(self.token, chat_id, photo, caption, reply_to_message_id, reply_markup,
File «C:UsersМаринаAppDataLocalProgramsPythonPython38-32libsite-packagestelebotapihelper.py», line 276, in send_photo
return _make_request(token, method_url, params=payload, files=files, method=’post’)
File «C:UsersМаринаAppDataLocalProgramsPythonPython38-32libsite-packagestelebotapihelper.py», line 60, in _make_request
return _check_result(method_name, result)[‘result’]
File «C:UsersМаринаAppDataLocalProgramsPythonPython38-32libsite-packagestelebotapihelper.py», line 79, in _check_result
raise ApiException(msg, method_name, result)
telebot.apihelper.ApiException: A request to the Telegram API was unsuccessful. The server returned HTTP 400 Bad Request. Response body:
[b’<«ok»:false,»error_code»:400,»description»:»Bad Request: file must be non-empty»>‘]
»
2020-12-12 17:51:58,804 (__init__.py:420 MainThread) ERROR — TeleBot: «A request to the Telegram API was unsuccessful. The server returned HTTP 400 Bad Request. Response body:
[b’<«ok»:false,»error_code»:400,»description»:»Bad Request: file must be non-empty»>‘]»

Помогите пожалуйста, если не трудно)

  • Вопрос задан более двух лет назад
  • 7880 просмотров

Файл один раз открыли, при отправке первый раз он прочитывается до конца, указатель остается в конце файла. При последующей отправке, скрипт так же пытается прочитать файл, но так как указатель стоит в конце файла, он не получает никаких данных, ну и при отправке пустого файла телеграм выдает предупреждение.

Делайте лучше так — удалите свой open() в начале скрипта и вставьте его непосредственно в строчку с отправкой:

Источник

Как исправить ошибку 400 Bad Request

Методы исправления ошибки 400 неверных запросов

Ошибка 400 Bad Request – это код состояния HTTP, который означает, что запрос, отправленный вами на сервер веб-сайта, часто такой простой, как запрос на загрузку веб-страницы, был каким-то неправильным или поврежденным, и сервер не мог его понять.

Ошибка 400 Bad Request часто вызывается вводом или вставкой неправильного URL в адресном окне, но есть и другие относительно распространенные причины.

На разных сайтах ошибки 400 Bad Request выглядят по-разному, поэтому вы можете увидеть что-то из краткого списка ниже, а не просто «400» или другой простой вариант:

Ошибка 400 Bad Request отображается в окне интернет-браузера, как и веб-страницы. 400 ошибок Bad Request, как и все ошибки этого типа, можно увидеть в любой операционной системе и в любом браузере.

Как исправить ошибку 400 Bad Request

Проверьте на наличие ошибок в URL. Самая распространенная причина ошибки 400 Bad Request заключается в том, что введенный неверно URL-адрес или ссылка, по которой щелкали ссылки, указывают на неверно сформированный URL-адрес с определенным типом ошибки, такой как проблема синтаксиса.

Скорее всего, это проблема, если вы получили ошибку 400 Bad Request. В частности, проверьте наличие дополнительных, обычно недопустимых, символов в URL-адресе, например, символа процента. Несмотря на то, что есть совершенно допустимые варианты использования символа%, вы не часто найдете его в стандартном URL-адресе.

Очистите файлы cookie вашего браузера, особенно если вы получаете сообщение о неправильном запросе в службе Google. Многие сайты сообщают об ошибке 400, когда файл cookie, который он читает, поврежден или слишком стар.

Очистите кэш DNS, который должен исправить ошибку 400 Bad Request, если она вызвана устаревшими записями DNS, которые хранит ваш компьютер. Сделайте это в Windows, выполнив ipconfig/flushdns из окна командной строки.

Это не то же самое, что очистка кэша вашего браузера.

Очистите кеш вашего браузера. Кэшированная, но поврежденная копия веб-страницы, к которой вы пытаетесь обратиться, может быть причиной проблемы, которая отображает ошибку 400. Очистка кеша вряд ли решит большинство из 400 проблем с ошибочными запросами, но это быстро и просто и стоит попробовать.

Несмотря на то, что это не является распространенным исправлением, попробуйте вместо этого устранить проблему как проблему тайм-аута 504 шлюза, даже если о проблеме сообщается как 400 неверный запрос.

В некоторых относительно редких ситуациях два сервера могут занять слишком много времени для связи (проблема время ожидания шлюза ), но неправильно или, по крайней мере, бесполезно, сообщат о проблеме как 400 неверных запросов.

Если вы загружаете файл на веб-сайт, когда видите ошибку, скорее всего, ошибка 400 Bad Request связана с тем, что файл слишком велик, и поэтому сервер отклоняет его.

Если ошибка 400 возникает практически на каждом веб-сайте, который вы посещаете, проблема, скорее всего, связана с вашим компьютером или подключением к Интернету. Запустите тест скорости Интернета и проверьте его у своего интернет-провайдера, чтобы убедиться, что все настроено правильно.

Обратитесь непосредственно к сайту, на котором размещена страница. Вполне возможно, что ошибка 400 Bad Request на самом деле не является чем-то неправильным с вашей стороны, а является чем-то, что они должны исправить, и в этом случае дать им знать об этом будет очень полезно.

Смотрите наш список контактной информации на сайте, чтобы узнать, как связаться с несколькими популярными сайтами. Большинство сайтов имеют контакты в социальных сетях, а иногда даже номера телефонов и адреса электронной почты.

Если весь сайт не работает с ошибкой 400 Bad Request, поиск в Твиттере #websitedown часто бывает полезен, например, #facebookdown или #gmaildown. Это, конечно, не поможет в решении проблемы, но, по крайней мере, вы будете знать, что вы не одиноки!

Если ничего из вышеперечисленного не сработало, и вы уверены, что проблема не в вашем компьютере, вам остается только проверить позже. Поскольку проблема не в вашем решении, регулярно посещайте страницу или сайт, пока он не будет восстановлен.

Больше способов увидеть ошибку 400

В Internet Explorer сообщение Веб-страница не найдена указывает на ошибку 400 Bad Request.В строке заголовка IE будет написано HTTP 400 Bad Request или что-то очень похожее на это.

Центр обновления Windows также может сообщать об ошибках HTTP 400, но они отображаются в виде кода ошибки 0x80244016 или с сообщением WU_E_PT_HTTP_STATUS_BAD_REQUEST .

Ошибка 400, которая сообщается для ссылки в приложении Microsoft Office, часто отображается как Удаленный сервер возвратил сообщение об ошибке: (400) Bad Request. в небольшом всплывающем окне.

Веб-серверы под управлением Microsoft IIS часто предоставляют более конкретную информацию о причине ошибки 400 Bad Request, добавляя суффикс после числа 400 , как в HTTP Error 400.1 – Bad Request , что означает Неверный заголовок назначения .

Вот полный список:

Коды ошибок Microsoft IIS 400

400,1 Неверный заголовок назначения
400,2 Неверный заголовок глубины
400,3 Неверный заголовок
400,4 Неверный заголовок перезаписи
400,5 Неверный заголовок перевода
400,6 Недопустимое тело запроса
400,7 Недопустимая длина содержимого
400,8 Неверный тайм-аут
400,9 Неверный токен блокировки

Дополнительную информацию об этих специфичных для IIS кодах можно найти на странице Microsoft «Код состояния HTTP» на страницах IIS 7.0, IIS 7.5 и IIS 8.0.

Ошибки вроде 400 Bad Request

Ряд других ошибок браузера также являются ошибками на стороне клиента и, по крайней мере, в некоторой степени связаны с ошибкой 400 Bad Request. Некоторые включают 401 Несанкционированный, 403 Запрещено, 404 Не найдено, и 408 Время ожидания запроса.

Коды HTTP-статуса на стороне сервера также существуют и всегда начинаются с 5 вместо 4 . Вы можете увидеть их все в нашем списке ошибок кода состояния HTTP.

Источник

Ошибка 400 Bad Request – почему возникает и как исправить

Если вы ежедневно пользуетесь интернетом, вы наверняка сталкивались с неполадками сети. Иногда вместо желаемой страницы браузер показывает код ошибки. Когда веб-сервер и клиент (т. е. браузер) общаются друг с другом, они передают сообщения о состоянии. И только когда возникает ошибка, появляется соответствующее сообщение. Ошибка HTTP 400 говорит, что с запросом клиента что-то пошло не так. Что значит ошибка 400 Bad Request и как её исправить?

Способы исправления ошибки 400 Bad Request.

Что такое ошибка 400 Bad Request

Со статусом ошибки веб-сервер показывает статус запросов. Если сервер возвращает запрос с ошибкой 200 (которую при обычном сёрфинге не видно), это означает, что всё в порядке – запрос был успешным, и желаемый контент был передан. Другое дело, когда появляются ошибка 400 bad request или 500, так как они указывают на несколько возможных проблем. Все ошибки 1xx являются информационными, 2xx – успешные запросы, 3xx и далее означает, что передача данных прошла успешно, но клиент должен выполнить дополнительный шаг. Обычно это связано с обменом информацией, который браузер делает автоматически. В сообщениях об ошибках дела обстоят несколько иначе. В то время как ошибки 5xx связаны с сервером, 4xx относятся к ошибочным запросам клиента.

Почему это происходит

Это значит, что сам запрос каким-то образом стал неправильным. HTTP-протокол не был соблюдён (по крайней мере, согласно веб-серверу), поэтому запрос не может быть обработан. Сервер интерпретировал запрос как ошибочный или даже вредоносный, поэтому не отображает содержимое страницы. Причины таких неполадок обычно связаны с используемым браузером или с неправильным вводом данных пользователем:

  • Неправильный URL – если пользователь вводит неправильный адрес или, например, использует специальные запрещённые символы.
  • Неправильные файлы cookie – если файлы cookie в вашем браузере устарели или не соответствуют содержимому, это тоже может стать причиной появления ошибки 400 Bad Request.
  • Устаревшие записи DNS – кэш DNS может содержать данные, которые ссылаются на неверные IP-адреса.
  • Слишком большие файлы – если вы пытаетесь загрузить большие файлы, сервер может отказаться их принимать. Он классифицирует это как «Bad Request» (плохой запрос).
  • Слишком длинный заголовок – для определения запроса при общении клиента и сервера используется заголовок. Некоторые веб-серверы устанавливают максимальный предел для его длины.

Причины довольно разнообразны, поэтому сразу определить, что вызвало «HTTP 400 Bad Request» невозможно. Однако, если целевой сервер использует IIS 7.0, IIS 7.5 или IIS 8.0, более подробную информацию можно получить из кода ошибки:

  • 1 – недопустимый заголовок пункта назначения;
  • 2 – недопустимый заголовок глубины;
  • 3 – недопустимый заголовок операции;
  • 4 – недопустимый заголовок перезаписи;
  • 5 – неверный заголовок перевода;
  • 6 – недействительный запрос;
  • 7 – недопустимая длина содержимого;
  • 8 – недействительный таймаут;
  • 9 – недействительный токен блокировки.

Ошибка 400 вступает в игру не только при сёрфинге. Такую ошибку от сервера также могут получать и другие программы, такие как клиенты электронной почты.

Как исправить ошибку 400

Для исправления ошибки 400 иногда достаточно просто обновить страницу. Особенно, если на этом сайте ошибка появилась впервые. Если обновление страницы не решит проблему, попробуйте почистить кэш браузера. Возможно, он сохранил копию сообщения об ошибке как оригинал целевой страницы.

Проблема с браузером

Ошибка HTTP 400 возникает, если заголовок HTTP слишком длинный. В принципе, заголовки не имеют ограничения по размеру, однако целевой сервер, возможно, установил предел. Заголовок состоит из нескольких полей, в которых определены запросы и ответы. Если оба абонента соответствуют параметрам, запрашиваемые данные будут передаваться без проблем. Если это не сработает, появится сообщение об ошибке. Поскольку процесс связан с обменом данными между браузером и сервером, а Bad Request обычно вызван проблемами с клиентом, вероятно, причиной ошибки является браузер. Лучший способ проверить, может ли ваш браузер по умолчанию быть причиной проблемы – временно переключиться на другой.

Если с помощью другого браузера доступ к странице получить удалось, вернитесь к исходному браузеру и удалите все файлы cookie (если вы ещё этого не сделали). Куки-файлы передаются в заголовке. Это значит, что сервер узнает о вашем предыдущем посещении. Если браузеру приходится обрабатывать слишком много запросов, заголовок может превышать ограничение длины. Если это проблема с сетью сохранится, и ошибка 400 будет возникать даже на YouTube, полностью переустановите браузер или сбросьте его настройки по умолчанию. В Firefox введите about:support. Здесь вы найдёте много полезной информации, которая поможет обнаружить ошибки. Даже если вы обратитесь в службу поддержки, всё же важно иметь эти данные. На этой странице есть кнопка «Очистить Firefox». После нажатия расширения и некоторые настройки будут удалены, но текущие параметры сохранятся.

Удаление ненужных данных в Firefox:

  • войдите в параметры из главного меню;
  • перейдите на вкладку «Конфиденциальность»;
  • нажмите «Удалить файлы cookie»;
  • повторите попытку доступа к сайту, проблема должна быть решена.

В Internet Explorer используйте кнопку «Сброс» или «Восстановить значения по умолчанию». Она находится в настройках на вкладке «Дополнительно». Поскольку Internet Explorer воспринимает кэш и cookie как настройки, их также рекомендуется удалить. Удаление ненужных данных в Internet Explorer:

  • Инструменты – Свойства обозревателя;
  • Общие – История – Настройки;
  • Просмотр файлов.

Вы можете находить эти файлы cookie и удалять их вручную регулярно.

Функция сброса параметров в Chrome доступна в системных настройках. Браузер сохранит ваши личные данные, такие как пароли и история, а всё остальное будет сброшено до исходного состояния. Закройте браузер и перезапустите его, чтобы изменения вступили в силу. Удаление ненужных данных в Google Chrome:

  • зайдите в настройки;
  • в поле поиска введите «cookie», затем нажмите «Настройки контента»;
  • в разделе «Файлы cookie» нажмите «Все файлы cookie и данные сайта»;
  • выберите конкретный файл cookie, чтобы удалить его.

Вирусы

Причиной возникновения 400 Bad Request могут быть вирусы, попавшие на ПК из интернета. Откройте свой антивирус и запустите полное глубокое сканирование системы. Большинство популярных программ имеют схожие функции и меню, поэтому проблем возникнуть не должно. Дождитесь окончания сканирования ПК. Если вирусы были найдены, откорректируйте настройки, удалите их и перезагрузите ПК. Если же проблемы обнаружены не были, переходите к следующему шагу.

Проблемы у интернет-провайдера

К сожалению, описанные выше решения не всегда решают проблему. Тогда вам следует обратиться за помощью в другое место. Частота появления ошибки (только на одном сайте или на всех сразу) подскажет, куда следует обратиться за помощью. Если код ошибки 400 возникает только на определённом сайте, и попытки её исправить не увенчались успехом, вы можете связаться с администратором ресурса или оператором сайта. Если ошибка появляется на всех страницах, и вы не можете пользоваться интернетом, обратитесь к своему провайдеру. В любом случае, служба поддержки может помочь вам.

В обеих ситуациях вы должны предоставить столько информации, сколько сможете. Она включает в себя все попытки, которые вы уже предприняли, чтобы избавиться от ошибки. С другой стороны, вам также необходимо предоставить информацию о вашей системе: какую ОС и браузер вы используете? Есть ли установленные расширения? Используете ли вы брандмауэр или прокси? Вся эта информация поможет оператору и веб-мастеру решить проблему. Если вы недавно изменили ISP или интернет-провайдер очень медленный или ненадёжный, то веб-трафик с вашего ПК на любой сайт в интернете может быть повреждён. Интернет-провайдер может перенастроить некоторые из своих настроек (например, ввести новые прокси-серверы или кешировать), что вызывает нестабильность. Возможным признаком проблем здесь является то, что вы не сможете просматривать сайты.

Проблемы с .NET Framework

Ошибка 400 Bad Request может возникнуть в результате повреждения или неудачного обновления библиотеки .NET Framework. Скачайте с официального сайта Microsoft последнюю версию плагина и переустановите его. Перезагрузите ПК и проверьте доступ к сайту.

Проблемы с антивирусом

Некоторое антивирусное ПО блокирует сайты и контент, который считается нежелательным или вредоносным. При этом может возникнуть сбой сети. Попробуйте отключить сканирование системы в антивирусе или просто завершить процесс. Если после этого ошибка исчезнет, обновите свой антивирус или скачайте любой другой.

Проблема с брандмауэром

Всегда используйте брандмауэр и хорошую защиту от вирусов и шпионских программ. Осторожней переходите по ссылкам во всплывающих окнах и контекстной рекламе. Если безопасность вашего ПК будет нарушена, злоумышленники смогут получить несанкционированный доступ к данным, устранить последствия которого практически невозможно.

Проблемы с windows

Если ваш компьютер недостаточно защищён, могут возникнуть всевозможные проблемы, в том числе HTTP 400. Включите автоматические обновления безопасности от Microsoft и очистите реестр. Сделать это можно с помощью специальных утилит, например, CCleaner. На некоторых сайтах социальных сетей и игр вам предлагается загрузить и запустить специальное ПО, которое позволит напрямую взаимодействовать с другими людьми в интернете (без использования веб-браузера). Это ПО, если оно написано неправильно или даже незаконно, может повредить весь HTTP-трафик с вашего ПК. Избавиться от такого нежелательного софта может быть очень сложно. В худшем случае вам, возможно, придётся переустановить свою операционную систему.

Как видите, избавиться от ошибки 400 можно по-разному. Если администрация сайта ответит, что проблема возникает только у вас, тогда обратитесь к своему поставщику интернета. Возможно, исправить неполадки можно с помощью нескольких простых настроек ПК. Если вы знаете ещё какие-либо способы борьбы с ошибкой 400, поделитесь с нашими читателями в комментариях.

Источник

ButtonsMenu — 400 Bad Request (error code: 50006): Cannot send an empty message about reactionmenu HOT 13 CLOSED

Comments (13)

No problem. I’ll keep the issue open until next week so people can see it just in case someone has a solution the issue.

Arcanocito commented on January 12, 2023

Tested more and the dynamic embed post a new page, in a new message, when I click a «next page» button. The static ones dont work at all :/

Defxult commented on January 12, 2023

The .update() method removing footers was fixed recently with the latest Github update. Update to the latest Github version and lmk if it’s still removing the footers. As for the other error, show your code please.

Arcanocito commented on January 12, 2023

Ok, I further noticed that it is just the caller buttons that do not work for me, the exit button works fine, here is an example of one of the menus with caller buttons where it doesnt work:

The profile button just calls another command function, the other «bridgebuy» buttons call this function:

async def bridgebuy(ctx, purchasee: str, menuobject):

the refreshbuycontent(ctx) just returns an embed, here is the function:
`
try:

Sorry for the bad formatting, still dont understand how the backticks make these codeboxes work :C
The embed itself gets created fine, just the call buttons somehow dont do anything
Well it only stopped working after restarting windows, everything worked fine before :'(

Defxult commented on January 12, 2023

I’m not sure what could be effecting it simply from a windows restart. I’d say:

1 — Update to the latest Github version
2 — If you’re using dislash.py separately, read this because if not followed can cause some weird behaviors

If it’s not number 2, it might have something to do with the restart

Arcanocito commented on January 12, 2023

I am on the latest github version and I do not use dislash seperately :/

Defxult commented on January 12, 2023

I see. I also had to restart windows a few days ago (windows mandatory update), but no issues with the lib arose from me restarting windows. If everything worked before the restart, I am unable to help with this issue because it doesn’t seem like it’s directly related to the lib if the lib was functioning as intended (except for the footer issues that should now be fixed) before restart.

Arcanocito commented on January 12, 2023

Okay its been a few hours of agony with no result at all but I found this now: which says that old versions of the discord api result in an error 400

https://discord.com/developers/docs/reference
And I also saw that there were new changes to the API just yesterday:

https://discord.com/developers/docs/change-log
Could this be a remote cause for my issues? Do I have to update the Api version for the bot anywhere myself or . ._.

Update:
I also found out that other people that just use dislash also had similar problems, when sending «Deferred Update Messages» with the exact same error. They seemed to get it working by «sending content with it» 🤔

Maybe it was just a coincidence to break at the same time as me restarting my windows :/

Defxult commented on January 12, 2023

I just did some looking around as well, and I do see a few people that use dislash.py having issues with DeferredUpdateMessage , but that problem comes and goes it seems/is isolated. Some people are saying it happens often, some are saying it’s happened to them but only ever a couple times. Personally I haven’t had that issue when testing. The «sending content with it» you saw is when a button is clicked and a message is sent to discord specifically by that button interaction, and from that message that was sent, you can edit it via dislash.py’s MessageInteraction.edit() , which has a content parameter. When using a caller button, there is no message that is sent. There could be, but that’s something else entirely.

I tried to replicate the error by doing a test method that’s pretty much doing the same thing as your methods.
1 — create the buttons
2 — add the buttons to the menu
3 — add pages to the menu
4 — start the menu
5 — (menu started) clicked caller buttons, calls function, and inside said function, update the menu via menu.update()

And it successfully calls the functions

But yes, probably just a coincidence. If you get the chance, since my test methods to break it (trying to get the 400 Bad Request error) isn’t working, if you could provide a short sample of code that causes the same issue that I can copy and paste, and I’ll look into from there if that sample reproduces 400 Bad Request (error code: 50006): Cannot send an empty message

Arcanocito commented on January 12, 2023

So I just used your code as pretty much the only code in my Bot to eliminate potential issues:

Same error, tho looks like it really is some outside factor
hope its just a tempoary issue :/
I very much appreciate the effort though Arcanocito commented on January 12, 2023

So I went through the files mentioned in the error message and I was able to stop the error message from appearing by changing line 172 in
C:UsersuserAppDataLocalProgramsPythonPython39Libsite-packagesdislashinteractionsinterctions.py
to:
content=»something», embed=embed,
instead of
content=content, embed=embed,

sadly the interactions still fail. with no error message in the terminal at all

Arcanocito commented on January 12, 2023

OK! I got it to work!
I just removed the line 581 «await inter.reply(type=ResponseType.DeferredUpdateMessage)» in
C:UsersuserAppDataLocalProgramsPythonPython39Libsite-packagesreactionmenubuttons_menu.py

which makes the buttons work, it does say «interaction failed» under the button every time, but my functions execute correctly

This is without the fix of the previous comment

Here is what it looks like, works so I’m happy 😀 though I hope someone knows something for it to 100% work again >.>

Also shows that the footers don’t get removed anymore 😉

Defxult commented on January 12, 2023

The interaction fails every time because you removed that line. Once a button is clicked, the discord API expects a reply within 3 seconds after that button click. Since that line is removed, it moves on to calling the function. So weird it was working fine one day then not the next for you, but yes, lets hope someone knows something to get it back working again. And glad to know the footer information is no longer being removed 🙂

Related Issues (20)

  • Suggestion: ComponentsButton.CUSTOM_EMBED HOT 1
  • How to add attachment when using ReactionMenu HOT 6
  • Requested feature: Get the context of when the button is pressed. HOT 3
  • After setting the buttons I get the following traceback which seems to be an compatibility issue with discord.py HOT 1
  • Is it possible to add image urls in embed.set_image(url=»image_url») section of Embed while using ReactionMenu.DYNAMIC? HOT 8
  • The future of reactionmenu HOT 1
  • On one server reactionmenu seems to force into ReactionMenu.FAST and button changes stop getting read on page 2 HOT 2
  • Adding more than one button with type ComponentsButton.style.link makes bot not send message HOT 2
  • Just need to ask a quick question. HOT 28
  • Remove_buttons_on_timeout doesn’t work HOT 4
  • Links as buttons — issue with expiry/deletion (prevent disabling/removal) HOT 5
  • Is it possible to restart a ViewMenu after it times out? HOT 3
  • Reactionmenu in an on_message event HOT 6
  • reactionmenu — discord.py 2.0 update HOT 6
  • Quick question HOT 2
  • Invalid custom emoji HOT 6
  • Add support for using paginator if interaction was already responded to before
  • pip install fails when deploying via Docker HOT 1
  • Documentation for Dm pagination HOT 2

Recommend Projects

React

A declarative, efficient, and flexible JavaScript library for building user interfaces.

Vue.js

🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

Typescript

TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

TensorFlow

An Open Source Machine Learning Framework for Everyone

Django

The Web framework for perfectionists with deadlines.

Laravel

A PHP framework for web artisans

Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

javascript

JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

Some thing interesting about web. New door for the world.

server

A server is a program made to process requests and deliver data to clients.

Machine learning

Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

Visualization

Some thing interesting about visualization, use data art

Some thing interesting about game, make everyone happy.

Recommend Org

Facebook

We are working to build community through open source technology. NB: members must have two-factor auth.

Microsoft

Open source projects and samples from Microsoft.

Источник

Что такое ошибка 400 Bad Request и как ее исправить

Раздражает, когда какой-то сайт не загружается и отзывается непонятными ошибками. Обычно они сопровождаются одним из десятков HTTP-кодов, которые как раз намекают на характер сбоя, а также его вероятные причины.

В этом материале поговорим об ошибке 400 Bad Request. Почему она появляется и как ее исправить.

Чуть подробнее об ошибке 400

Как и другие коды, начинающиеся на четверку, 400 Bad Request говорит о том, что возникла проблема на стороне пользователя. Зачастую сервер отправляет ее, когда появившаяся неисправность не подходит больше ни под одну категорию ошибок.

Стоит запомнить — код 400 напрямую связан с клиентом (браузером, к примеру) и намекает на то, что отправленный запрос со стороны пользователя приводит к сбою еще до того, как его обработает сервер (вернее, так считает сам сервер).

Из-за чего всплывает Bad Request?

Есть 4 повода для возникновения ошибки сервера 400 Bad Request при попытке зайти на сайт:

  1. Некорректно настроенные HTTP-заголовки в запросе со стороны клиента. Некоторые приложения и сайты мониторят заголовки на предмет наличия в них чего-нибудь подозрительного. Если ваш запрос не соответствует ожиданиям сервера, то высока вероятность появления ошибки 400 (но это не всегда вина пользователя).
  2. Такой же сбой появляется, если клиент пытается загрузить на сервер файл слишком большого размера. Это происходит, потому что на большинстве сайтов есть ограничения по размеру загружаемых данных. Причем ограничение может быть как в 2 гигабайта, так и в 600 килобайт.
  3. Еще ошибка 400 появляется, когда пользователь пытается получить доступ к несуществующей странице. То есть в браузер банально ввели ссылку с опечаткой, некорректным доменом или поддоменом.
  4. Устаревшие или измененные куки-файлы. Сервер может воспринять подмену куки-файлов как попытку атаковать или воспользоваться дырой в безопасности. Поэтому такие запросы сходу блокируются.

Читайте также

Исправляем ошибку 400 Bad Request на стороне клиента

Так как ошибка 400 в 99 случаев из 100 возникает на стороне клиента, начнем с соответствующих методов. Проверим все элементы, участвующие в передаче запроса со стороны клиента (браузера).

Проверяем адрес сайта

Банальщина, но необходимая банальщина. Перед тем как бежать куда-то жаловаться и предпринимать более серьезные шаги, повнимательнее взгляните на ссылку в адресной строке. Может, где-то затесалась опечатка или вы случайно написали большую букву вместо маленькой. Некоторые части адреса чувствительны к регистру.

А еще стоит поискать запрашиваемую страницу через поисковик, встроенный в сайт. Есть вероятность, что конкретная страница куда-то переехала, но сервер не может показать подходящий HTTP-код в духе 404 Not Found. Если, конечно, сам сайт работает.

Сбрасываем параметры браузера

Этот метод срабатывает, если сервер отказывается принимать запросы из-за «битых» куки или других данных. Дело в том, что сайт использует куки-файлы, чтобы хранить информацию о пользователе у него же в браузере. При входе конкретного человека на ресурс, он пытается распознать куки и сравнить информацию с той, что уже есть на сервере.

Иногда случается, что куки-файлы одного или нескольких пользователей вступают в конфликт. В таком случае надо открыть настройки браузера, а потом удалить весь кэш, куки и прочие связанные элементы.

В зависимости от браузера процесс удаления куки-файлов может немного отличаться. В Chrome это работает так:

  • Открываем настройки браузера.
  • Переходим в раздел «Конфиденциальность и безопасность».
  • Выбираем «Файлы cookie и другие данные».
  • Нажимаем на кнопку «Удалить все».

Для чистки cookies можно использовать стороннюю программу в духе CCleaner или CleanMyPC .

Загружаем файл подходящего размера

Если ошибка 400 Bad Request появляется при попытке загрузить на сайт какой-нибудь файл, то стоит попробовать загрузить файл поменьше. Иногда вебмастера ленятся грамотно настроить ресурс, и вместо понятного объяснения вроде «Загружаемые файлы не должны быть размером больше 2 мегабайт» люди получают Bad Request. Остается только гадать, какой там у них лимит.

Устраняем проблемы, связанные с Windows и сторонним софтом

Помимо браузера, на работу сети могут влиять другие программные продукты (экраны, защищающие от «непонятных подключений»). И вирусы. Да и сама Windows может стать проблемой. Почти любой ее компонент. Поэтому надо бы проделать следующее:

  • Повторно установитьNET.Framework. Желательно перед этим удалить предыдущую версию.
  • Установить какой-нибудь приличный антивирус (а лучше два) и запустить глубокую проверку систему. Возможно, подключению и входу на ресурс мешает вредоносная программа.
  • Если у вас уже установлен антивирус, то, наоборот, попробуйте его отключить. Иногда встроенные в них экраны проверки подключений блокируют работу браузера целиком или отдельных страниц. Лучше выдать браузеру больше прав на выполнение своих задач или установить антивирус, который более лояльно относится к установленному на компьютере софту.
  • Еще надо поменять параметры брандмауэра. Его можно разыскать в панели управления Windows. Там надо добавить в список исключений ваш браузер. Тогда брандмауэр не будет мешать подключению к запрашиваемому сайту.
  • Почистить Windows от программного мусора. Можно пройтись приложением CCleaner.
  • Обновить драйверы для сетевых устройств.
  • Обновить Windows или просканировать систему на наличие погрешностей в системных компонентах.

Ищем проблему на стороне сервера

Если что-то происходит на стороне ресурса, то это редко заканчивается ошибкой 400. Но все-таки есть несколько сценариев, при которых клиента обвиняют в сбое зря, а настоящая вина лежит на сервере.

Проверяем требования к HTTP-заголовкам

Пока настраиваешь сайт, несложно допустить ошибку или даже парочку. Возможно, требования к HTTP-заголовком указаны некорректно, и сервер ожидает запросы с ошибками, которые по объективным причинам не может распознать адекватно. Тогда администратору стоит перепроверить ожидаемые заголовки на своем сайте или в приложении.

Удаляем свежие обновления и плагины

Иногда ошибка 400 Bad Request появляется после обновления CMS или установки новых плагинов. Если у вас она появилась из-за этого, то наиболее логичное решение — откатиться до более ранней версии CMS и удалить все новые плагины.

Главное, перед этим сделать резервную копию данных. И перед установкой обновлений тоже стоило бы.

Проверяем состояние базы данных

Некоторые сторонние расширения для того же WordPress получают полный доступ к ресурсу и имеют право вносить изменения даже в подключенную базу данных. Если после удаления свежих плагинов ошибка 400 никуда не исчезла и появляется у всех, кто пытается зайти на сайт, стоит проверить, в каком состоянии находится база данных. Нужно вручную проверить все записи на наличие подозрительных изменений, которые могли быть сделаны установленными расширениями.

Исправляем ошибки в коде и скриптах

Ничего из вышеперечисленного не помогло? Тогда осталось проверить свой код и работающие скрипты. Лучше провести дебаггинг вручную и не надеяться на помощь компьютера. Сделать копию приложения или сайта, потом пошагово проверить каждый отрезок кода в поисках ошибок.

В крайнем случае придется кричать «полундра» и звать на помощь техподдержку хостинга. Возможно, возникли сложности на их стороне. Тогда вообще ничего не надо будет делать. Просто ждать, пока все исправят за вас.

На этом все. Основные причины появления 400 Bad Request разобрали. Как ее лечить — тоже. Теперь дело за вами. Пользуйтесь полученной информацией, чтобы больше не пришлось мучиться в попытках зайти на нужный ресурс.

Источник

Я пытался проверить, могу ли я скопировать все сообщения, отправленные на канал test_copy_channel , и вставить их в test_paste_channel
Хотя бот правильно выполняет команды и регистрирует встраивание, я продолжаю получать сообщение об ошибке.

Это код, который я использую:

import discord
import os
from discord.ext import commands


intents = discord.Intents.default()
intents.members = True
bot = commands.Bot(command_prefix=',', intents=intents)


@bot.event
async def on_ready():
  global test_paste_channel, test_copy_channel
  test_paste_channel = bot.get_channel(868816978293452841)
  test_copy_channel = bot.get_channel(808734570283139162)
  print('bot is ready')


@bot.event
async def on_message(message):
  # if message.author == bot.user:
  #   return

  if message.channel == test_copy_channel:
    await test_paste_channel.send(message.content)
    print(message.channel)

  if message.content.startswith('!test'):
    embed_var = discord.Embed(
      title= '''title''', 
      description= '''description''', 
    color= discord.Color.red()
      )
    
    embed_var.set_footer(text='footer')
    await message.channel.send(embed=embed_var)


bot.run(os.getenv('TOKEN'))

Я отправляю !test в test_copy_channel , чтобы бот отправлял вставку, а затем пытался скопировать мое сообщение и вставку
Мое сообщение проходит нормально, но когда бот пытается скопировать вставку, я получаю эту ошибку:

Ignoring exception in on_message
Traceback (most recent call last):
⠀⠀File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 343, in _run_event
⠀⠀⠀⠀await coro(*args, **kwargs)
⠀⠀File "main.py", line 25, in on_message
⠀⠀⠀⠀await test_channel.send(message.content)
⠀⠀File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/abc.py", line 1065, in send data = await state.http.send_message(channel.id, content, tts=tts, embed=embed,
⠀⠀File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/http.py", line 254, in request
⠀⠀⠀⠀raise HTTPException(r, data)
discord.errors.HTTPException: 400 Bad Request (error code: 50006): Cannot send an empty message

Кажется, это не останавливает выполнение команды, и код работает правильно.
Насколько я понимаю, ошибка возникает, когда он пытается скопировать встроенное сообщение, которое отправил бот.
Я просто хочу знать, почему это вызывает эту ошибку.

1 ответ

Лучший ответ

Хорошо, я думаю, что происходит, когда вы пишете: !test !test запускается в другом канале, который, в свою очередь, запускает встраивание, чтобы пройти через другой канал, поскольку у вас есть строка if message.content.startswith('!test') который не зависит от канала.

Однако проблема возникает при вызове функции события on_message при отправке вложения. Встраивание не имеет содержимого, поэтому, когда вы пытаетесь отправить его в строке await test_channel.send(message.content), ошибка возникает, поскольку message.content пуст (поскольку встраивание не является содержимым).

Обманчивый способ исправить это — просто добавить строку if message.content: над await test_channel.send(message.content), поскольку встраивание в любом случае отправляется из-за того, что !test отправляется по другому каналу.

В противном случае вам следует прочитать это сообщение. чтобы узнать, как вставить информацию из сообщения (вкратце, это embed_content_in_dict = message.embeds[0].to_dict())

Надеюсь, это имеет смысл :).


1

x-1-x
31 Июл 2021 в 21:31

# headers
> guild            Surgical Precision [667814721747157001]
> channel          chain
> author           Stoned#4544
> command          hosp
> message          !hosp 16503
> error            CommandInvokeError

# error message
Command raised an exception: HTTPException: 400 Bad Request (error code: 50006): Cannot send an empty message

# full message
Traceback (most recent call last)
  File "/home/kivou/venvbot/lib/python3.6/site-packages/discord/ext/commands/core.py", line 83, in wrapped
    ret = await coro(*args, **kwargs
  File "/home/kivou/yata-bot/cogs/chain.py", line 357, in hosp
    await send_tt(ctx, lst, tt=False
  File "/home/kivou/yata-bot/inc/handy.py", line 186, in send_tt
    await ctx.send("{}".format(msg)
  File "/home/kivou/venvbot/lib/python3.6/site-packages/discord/abc.py", line 870, in send
    data = await state.http.send_message(channel.id, content, tts=tts, embed=embed, nonce=nonce
  File "/home/kivou/venvbot/lib/python3.6/site-packages/discord/http.py", line 225, in request
    raise HTTPException(r, data
discord.errors.HTTPException: 400 Bad Request (error code: 50006): Cannot send an empty messag

The above exception was the direct cause of the following exception:
Traceback (most recent call last)
  File "/home/kivou/venvbot/lib/python3.6/site-packages/discord/ext/commands/bot.py", line 892, in invoke
    await ctx.command.invoke(ctx
  File "/home/kivou/venvbot/lib/python3.6/site-packages/discord/ext/commands/core.py", line 797, in invoke
    await injected(*ctx.args, **ctx.kwargs
  File "/home/kivou/venvbot/lib/python3.6/site-packages/discord/ext/commands/core.py", line 92, in wrapped
    raise CommandInvokeError(exc) from ex
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: HTTPException: 400 Bad Request (error code: 50006): Cannot send an empty messag

YATA
https://discordapp.com/channels/581227228537421825/651386992898342912/742554350022557717

Recommend Projects

  • React photo

    React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo

    Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo

    Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo

    TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo

    Django

    The Web framework for perfectionists with deadlines.

  • Laravel photo

    Laravel

    A PHP framework for web artisans

  • D3 photo

    D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Visualization

    Some thing interesting about visualization, use data art

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo

    Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo

    Microsoft

    Open source projects and samples from Microsoft.

  • Google photo

    Google

    Google ❤️ Open Source for everyone.

  • Alibaba photo

    Alibaba

    Alibaba Open Source for everyone

  • D3 photo

    D3

    Data-Driven Documents codes.

  • Tencent photo

    Tencent

    China tencent open source team.

531 votes

1 answers

Get the solution ↓↓↓

@bot.command()
async def ping(ctx):
        embed=discord.Embed(title="",description="`Bot Latency...`",color=colour)
        msg = await ctx.send(embed=embed)
        times = []
        counter = 0
        embed = discord.Embed(title="More Information:", description="4 pings have been made and here are the results:", colour=colour)
        for _ in range(3):
            counter += 1
            start = time.perf_counter()
            embed.description=f"Trying Ping... {counter}/3"
            await msg.edit(embed=embed)
            end = time.perf_counter()
            speed = round((end - start) * 1000)
            times.append(speed)
            if speed < 160:
                embed.add_field(name=f"Ping {counter}:", value=f"рџџў | {speed}ms", inline=True)
            elif speed > 170:
                embed.add_field(name=f"Ping {counter}:", value=f"рџџЎ | {speed}ms", inline=True)
            else:
                embed.add_field(name=f"Ping {counter}:", value=f"🔴 | {speed}ms", inline=True)
        embed.set_author(name="рџЏ“    PONG    рџЏ“", icon_url="https://img.icons8.com/ultraviolet/40/000000/table-tennis.png")
        embed.add_field(name="Bot Latency", value=f"{round(bot.latency * 1000)}ms", inline=True)
        embed.add_field(name="Normal Speed", value=f"{round((round(sum(times)) + round(bot.latency * 1000))/4)}ms")
        embed.set_footer(text=f"Total estimated elapsed time: {round(sum(times))}ms")
        await msg.edit(content=f":ping_pong: **{round((round(sum(times)) + round(bot.latency * 1000))/4)}ms**", embed=embed)

Error: Command raised an exception: HTTPException: 400 Bad Request (error code: 50006): Cannot send an empty message

It was working a few days ago but suddenly it stooped working
any help ?

2021-10-29

Write your answer


510

votes

Answer

Solution:

Your error with thecolor for the embed.

You can use something like thiscolor=discord.Color.light_gray() orcolor=discord.Color.random().

Keep in mind each embed will take a random color, if you don’t want that then save it into a variable at the beginning and use that

Full list of colors


Share solution ↓

Additional Information:

Date the issue was resolved:

2021-10-29

Link To Source

Link To Answer
People are also looking for solutions of the problem: method illuminatedatabaseeloquentcollection::paginate does not exist.

Didn’t find the answer?

Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.


Similar questions

Find the answer in similar questions on our website.

Skip to content

GitLab

Next
    • GitLab: the DevOps platform
    • Explore GitLab
    • Install GitLab
    • How GitLab compares
    • Get started
    • GitLab docs
    • GitLab Learn
  • Pricing
  • Talk to an expert

  • /


  • Help

    • Help
    • Support
    • Community forum

    • Submit feedback
    • Contribute to GitLab

    Projects
    Groups
    Snippets

  • Register

  • Sign in

Closed


Open


Issue created Mar 29, 2021 by ChaosCircle@ChaosCircle

Discord: Hook executed successfully but returned HTTP 400 {«message»: «Cannot send an empty message», «code»: 50006}

Summary

Created a webhook per https://docs.gitlab.com/ee/user/project/integrations/discord_notifications.html and then entered into the appropriate fields in Gitlab.

Steps to reproduce

Follow the directions listed here: https://docs.gitlab.com/ee/user/project/integrations/discord_notifications.html on GitLab.com

What is the current bug behavior?

Pushes to the webhook return:

Hook executed successfully but returned HTTP 400 {«message»: «Cannot send an empty message», «code»: 50006}

What is the expected correct behavior?

Hook executed successfully with a HTTP 200 code so that it completes the transaction with Discord.

Понравилась статья? Поделить с друзьями:
  • Discord errors forbidden 403 forbidden error code 50001 missing access
  • Disable wd idle timer error abrt
  • Discord error unexpected token
  • Disable memory error injection
  • Discord error unable to copy image preview