Chat admin required telegram что это
Перейти к содержимому

Chat admin required telegram что это

  • автор:

Ошибка с кодом 400: CHAT_ADMIN_REQUIRED

Если Вы работаете с Вашим аккаунтом и Вашей группой (пабликом), выдайте Вашему аккаунту в этой группе права администратора!

Выше предоставлено описание и возможное решение ошибки Телеграм с кодом 400 "CHAT_ADMIN_REQUIRED".

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

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

Так же, Вам нужно понимать что автор программы Telegram-Spam-Master может не знать, как решить вашу ошибку. Так что если в процессе поисков Вы найдете решение самостоятельно, было бы очень хорошо, если бы Вы поделились с ним этим решением!

node-telegram-bot-api: CHAT_ADMIN_REQUIRED

Вашему боту нужны права администратора!

отозвать ссылку на приглашение в чат

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

400 — BadRequest#

Invalid sticker pack name. It must begin with a letter, can’t contain consecutive underscores and must end in ‘_by_<bot username>’.

A sticker pack with this name already exists

The sticker pack title is invalid

The chat doesn’t have enough participants

The other participant is using an outdated Telegram app version

The password provided is empty

The two-step verification password is invalid

The account is missing the two-step verification password

The password recovery e-mail is not available

The two-step verification password is required for this method

The two-step verification password was added recently and you are required to wait seconds

The payment provider was not recognised or its token was invalid

The method can’t be used because your account is currently limited

The peer id being used is invalid or not known yet. Make sure you meet the peer before interacting with it

The provided peer id is not supported

The pts argument is empty

The persistent timestamp is invalid

The phone code is missing

The confirmation code has expired

The phone code hash is missing

The confirmation code is invalid

You can’t sign up using this app

The phone number is banned from Telegram and cannot be used

This number has tried to login too many times

The phone number is invalid

The phone number is already in use

The phone number is not yet being used

The phone is password protected

The photo content type is invalid

The photo content URL is empty

Photo crop file missing

The photo is too small

The photo extension is invalid

Profile photo file missing

The photo id is invalid

The photo is invalid

The photo dimensions are invalid

The photo you tried to send cannot be saved by Telegram

The photo thumb URL is empty

The photo thumb URL is invalid

Too many pinned dialogs

You can’t pin messages in private chats with other people

The poll answers are invalid

A duplicate option was sent in the same poll

A poll option used invalid data (the data may be too long)

The poll question is invalid

This layer does not support polls in the invoked method

Cast a vote in the poll before calling this method

The privacy key is invalid

Your privacy exception list has exceeded the maximum capacity

The privacy value is invalid

The query ID is empty

The callback query id is invalid

The query is too short

The correct answers of the quiz are empty

The quiz contains too many correct answers

The correct answers of the quiz are invalid

A quiz can’t have multiple answers

The random ID is empty

The provided random ID is invalid

The random length is invalid

Invalid range provided

The reaction provided is empty

Invalid reaction provided (only valid emoji are allowed)

The call reflector is not available

Reply markup for buy button empty

The provided reply markup for the game is empty

The provided reply markup is invalid

The reply markup is too long

The result contains too many items

The result contains items with duplicated identifiers

Result ID empty

The given result cannot be used to send the selection to the bot

The result type is invalid

You cannot change your vote

Internal RSA decryption failed

Bots are not allowed to schedule messages

Invalid schedule date provided

The date you tried to schedule is too far in the future (more than one year)

You cannot schedule a message until the person comes online if their privacy does not show this information

You tried to schedule too many messages in this chat

The search query is empty

The seconds interval is invalid

The message media is invalid

The message type is invalid

You can’t do this action because the current session was logged-in recently

Invalid settings were provided

The provided SHA256 hash is invalid

An error occurred when trying to register the short-name used for the sticker pack. Try a different name

Slowmode is enabled, you cannot forward multiple messages to this group

An error occurred while creating the SMS code

Invalid SRP ID provided

The password has changed

The start parameter is empty

The start parameter is invalid

The start parameter is too long

The requested sticker set is invalid

The sticker set is not modified

The sticker provided is empty

Too many stickers in the set

The sticker document is invalid

The sticker emoji is invalid

The sticker file is invalid

The provided sticker id is invalid

The provided sticker is invalid

The sticker png dimensions are invalid

Stickers must be png files but the provided image was not a png

A tgs sticker file was expected, but something else was provided

A png sticker thumbnail file was expected, but something else was provided

A webm video file was expected, but something else was provided

The takeout id is invalid

The method must be invoked inside a takeout session

The temporary auth key provided is empty

Invalid theme file provided

Invalid theme format provided

Invalid theme provided

You cannot create this theme because the mime-type is invalid

The temporary password is disabled

The temporary password is invalid

The provided token is invalid

The provided TTL days is invalid

The media does not support self-destruction

The types parameter is empty

The type constructor is invalid

That date parameter is invalid

The URL provided is invalid

The usage limit is invalid

The username is invalid

The username was not modified because you tried to edit it using the same one

The username is not occupied by anyone

The username is already in use by someone else

You are required to upload a profile picture for this action

Not enough users (to create a chat, for example)

The maximum number of users has been exceeded (to create a chat, for example)

The action requires admin privileges. Probably you tried to edit admin privileges on someone you don’t have rights to

The user is already a participant of this chat

You are limited from sending messages in supergroups/channels, check @SpamBot for details

The user is blocked

Bots in channels can only be administrators, not members.

This method can only be used by a bot

The method can be used by bots only

The user is already in too many channels or supergroups

You can’t leave this channel because you’re its creator

The user id being used is invalid or not known yet. Make sure you meet the user before interacting with it

Телеграмм код ошибки 400

There will be errors when working with the API, and they must be correctly handled on the client.
An error is characterized by several parameters:

Numerical value similar to HTTP status. Contains information on the type of error that occurred: for example, a data input error, privacy error, or server error. This is a required parameter.

A string literal in the form of /[A-Z_0-9]+/ , which summarizes the problem. For example, AUTH_KEY_UNREGISTERED . This is an optional parameter.

A full machine-readable JSON list of RPC errors that can be returned by all methods in the API can be found here », what follows is a description of its fields:

  • errors — All error messages and codes for each method (object).
    • Keys: Error codes as strings (numeric strings)
    • Values: All error messages for each method (object)
      • Keys: Error messages (string)
      • Values: An array of methods which may emit this error (array of strings)
      • Keys: Error messages
      • Values: Error descriptions

      Error messages and error descriptions may contain printf placeholders in key positions, for now only %d is used to map durations contained in error messages to error descriptions.

      There should be a way to handle errors that are returned in rpc_error constructors.

      Below is a list of error codes and their meanings:

      The request must be repeated, but directed to a different data center.

      • FILE_MIGRATE_X: the file to be accessed is currently stored in a different data center.
      • PHONE_MIGRATE_X: the phone number a user is trying to use for authorization is associated with a different data center.
      • NETWORK_MIGRATE_X: the source IP address is associated with a different data center (for registration)
      • USER_MIGRATE_X: the user whose identity is being used to execute queries is associated with a different data center (for registration)

      In all these cases, the error description’s string literal contains the number of the data center (instead of the X) to which the repeated query must be sent. More information about redirects between data centers »

      The query contains errors. In the event that a request was created using a form and contains user generated data, the user should be notified that the data must be corrected before the query is repeated.

      • FIRSTNAME_INVALID: The first name is invalid
      • LASTNAME_INVALID: The last name is invalid
      • PHONE_NUMBER_INVALID: The phone number is invalid
      • PHONE_CODE_HASH_EMPTY: phone_code_hash is missing
      • PHONE_CODE_EMPTY: phone_code is missing
      • PHONE_CODE_EXPIRED: The confirmation code has expired
      • API_ID_INVALID: The api_id/api_hash combination is invalid
      • PHONE_NUMBER_OCCUPIED: The phone number is already in use
      • PHONE_NUMBER_UNOCCUPIED: The phone number is not yet being used
      • USERS_TOO_FEW: Not enough users (to create a chat, for example)
      • USERS_TOO_MUCH: The maximum number of users has been exceeded (to create a chat, for example)
      • TYPE_CONSTRUCTOR_INVALID: The type constructor is invalid
      • FILE_PART_INVALID: The file part number is invalid
      • FILE_PARTS_INVALID: The number of file parts is invalid
      • FILE_PART_X_MISSING: Part X (where X is a number) of the file is missing from storage
      • MD5_CHECKSUM_INVALID: The MD5 checksums do not match
      • PHOTO_INVALID_DIMENSIONS: The photo dimensions are invalid
      • FIELD_NAME_INVALID: The field with the name FIELD_NAME is invalid
      • FIELD_NAME_EMPTY: The field with the name FIELD_NAME is missing
      • MSG_WAIT_FAILED: A request that must be completed before processing the current request returned an error
      • MSG_WAIT_TIMEOUT: A request that must be completed before processing the current request didn’t finish processing yet

      There was an unauthorized attempt to use functionality available only to authorized users.

      • AUTH_KEY_UNREGISTERED: The key is not registered in the system
      • AUTH_KEY_INVALID: The key is invalid
      • USER_DEACTIVATED: The user has been deleted/deactivated
      • SESSION_REVOKED: The authorization has been invalidated, because of the user terminating all sessions
      • SESSION_EXPIRED: The authorization has expired
      • AUTH_KEY_PERM_EMPTY: The method is unavailable for temporary authorization key, not bound to permanent

      Privacy violation. For example, an attempt to write a message to someone who has blacklisted the current user.

      An attempt to invoke a non-existent object, such as a method.

      Similar to 400 BAD_REQUEST, but the app must display the error to the user a bit differently.
      Do not display any visible error to the user when receiving the rpc_error constructor: instead, wait for an updateServiceNotification update, and handle it as usual.
      Basically, an updateServiceNotification popup update will be emitted independently (ie NOT as an Updates constructor inside rpc_result but as a normal update) immediately after emission of a 406 rpc_error : the update will contain the actual localized error message to show to the user with a UI popup.

      An exception to this is the AUTH_KEY_DUPLICATED error, which is only emitted if any of the non-media DC detects that an authorized session is sending requests in parallel from two separate TCP connections, from the same or different IP addresses.
      Note that parallel connections are still allowed and actually recommended for media DCs.
      Also note that by session we mean a logged-in session identified by an authorization constructor, fetchable using account.getAuthorizations, not an MTProto session.

      If the client receives an AUTH_KEY_DUPLICATED error, the session is already invalidated by the server and the user must generate a new auth key and login again.

      The maximum allowed number of attempts to invoke the given method with the given input parameters has been exceeded. For example, in an attempt to request a large number of text messages (SMS) for the same phone number.

      • FLOOD_WAIT_X: A wait of X seconds is required (where X is a number)

      An internal server error occurred while a request was being processed; for example, there was a disruption while accessing a database or file storage.

      If a client receives a 500 error, or you believe this error should not have occurred, please collect as much information as possible about the query and error and send it to the developers.

      If a server returns an error with a code other than the ones listed above, it may be considered the same as a 500 error and treated as an internal server error.

      Коды ошибок Telegram API

      В данной статье собраны ошибки, возвращаемые API Telegram. Числовое значение аналогично статусу HTTP. Содержит информацию о типе возникшей ошибки: например, ошибка ввода данных, ошибка конфиденциальности или ошибка сервера.

      303 SEE_OTHER

      Запрос необходимо повторить, но направить в другой центр обработки данных.

      • FILE_MIGRATE_X: файл, к которому нужно получить доступ, в настоящее время хранится в другом центре обработки данных.
      • PHONE_MIGRATE_X: номер телефона, который пользователь пытается использовать для авторизации, связан с другим центром обработки данных.
      • NETWORK_MIGRATE_X: исходный IP-адрес связан с другим центром обработки данных (для регистрации)
      • USER_MIGRATE_X: пользователь, личность которого используется для выполнения запросов, связан с другим центром обработки данных (для регистрации)

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

      ОШИБКА 400, НЕВЕРНЫЙ ЗАПРОС

      Запрос содержит ошибки. В случае, если запрос был создан с использованием формы и содержит данные, созданные пользователем, пользователь должен быть уведомлен о том, что данные должны быть исправлены, прежде чем запрос будет повторен.

      • FIRSTNAME_INVALID: имя недействительно
      • LASTNAME_INVALID: фамилия недействительна
      • PHONE_NUMBER_INVALID: номер телефона недействителен
      • PHONE_CODE_HASH_EMPTY: phone_code_hash отсутствует
      • PHONE_CODE_EMPTY: phone_code отсутствует
      • PHONE_CODE_EXPIRED: срок действия кода подтверждения истек
      • API_ID_INVALID: комбинация api_id / api_hash недействительна
      • PHONE_NUMBER_OCCUPIED: номер телефона уже используется
      • PHONE_NUMBER_UNOCCUPIED: номер телефона еще не используется
      • USERS_TOO_FEW: недостаточно пользователей (например, для создания чата)
      • USERS_TOO_MUCH: превышено максимальное количество пользователей (например, для создания чата)
      • TYPE_CONSTRUCTOR_INVALID: конструктор типа недействителен
      • FILE_PART_INVALID: неверный номер части файла.
      • FILE_PARTS_INVALID: недопустимое количество частей файла.
      • FILE_PART_Х_MISSING: часть X (где X — номер) файла отсутствует в хранилище
      • MD5_CHECKSUM_INVALID: контрольные суммы MD5 не совпадают
      • PHOTO_INVALID_DIMENSIONS: размеры фотографии недействительны
      • FIELD_NAME_INVALID: поле с именем FIELD_NAME недействительно
      • FIELD_NAME_EMPTY: поле с названием FIELD_NAME отсутствует
      • MSG_WAIT_FAILED: запрос, который должен быть выполнен перед обработкой текущего запроса, возвратил ошибку
      • MSG_WAIT_TIMEOUT: запрос, который должен быть выполнен перед обработкой текущего запроса, еще не завершил обработку

      401 ОШИБКА ДОСТУПА

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

      • AUTH_KEY_UNRIGN: Ключ не зарегистрирован в системе
      • AUTH_KEY_INVALID: ключ недействителен
      • USER_DEACTIVATED: пользователь удален / деактивирован
      • SESSION_REVOKED: авторизация была аннулирована из-за того, что пользователь завершил все сеансы
      • SESSION_EXPIRED: срок авторизации истек
      • AUTH_KEY_PERM_EMPTY: метод недоступен для временного ключа авторизации, не привязан к постоянному

      403 ЗАПРЕЩЕНО

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

      404 НЕ НАЙДЕНО

      Попытка вызвать несуществующий объект, например метод.

      406 NOT_ACCEPTABLE

      Подобно 400 BAD_REQUEST , но приложение не должно отображать сообщения об ошибках для пользователя в пользовательском интерфейсе в результате этого ответа. Вместо этого сообщение об ошибке будет доставлено через updateServiceNotification.

      420 FLOOD

      Превышено максимально допустимое количество попыток вызвать данный метод с заданными входными параметрами. Например, при попытке запросить большое количество текстовых сообщений (SMS) на один и тот же номер телефона.

      • FLOOD_WAIT_X: требуется ожидание X секунд (где X — число)

      500 ВНУТРЕННИЙ

      Произошла внутренняя ошибка сервера во время обработки запроса; например, произошел сбой при доступе к базе данных или файловому хранилищу.

      Если клиент получает ошибку 500 или вы считаете, что эта ошибка не должна была возникнуть, пожалуйста, соберите как можно больше информации о запросе и ошибке и отправьте ее разработчикам.

      Другие коды ошибок

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

      Telegram пишет: “слишком много попыток повторите позже” – что делать?

      Интенсивная жизнь в мессенджерах и социальных сетях имеет обратную сторону медали: порой так увлекаешься какими-либо действиями в сервисе, что система невольно начинает видеть в тебе спамера. Либо же дело не в поступках пользователя, а в изъянах программного кода площадки и глюках Интернета. Как результат – многие уже сталкивались с сообщением “слишком много попыток входа” от Телеграм. Об этой проблеме сегодня и поговорим, о ее причинах и способах решений.

      Ну а перед началом хотим порекомендовать вам наш сервис смс-активации «Grizzly Sms». С его помощью вы можете приобрести виртуальные номера для любых мессенджеров и соцсетей, и с их помощью выполнить регистрацию и успешный вход на выбранные площадки. Всего от двух рублей за прием смс с кодом верификации! Вы гарантированно избавитесь от проблем, вроде “слишком много попыток”. Телеграм, Вконтакте, Гугл, Фейсбук – все популярные сервисы откроют перед вами двери просто, быстро и совершенно анонимно!

      Много попыток входа в Телеграм: основные причины проблемы

      Если вы столкнулись с предупреждением “слишком много попыток, повторите позже” от Телеграм, значит мгновением ранее вы выполняли одно из действий:

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

      Рассмотрим подробнее каждую ситуацию.

      Ошибка Telegram: много попыток отправки сообщений

      Если вы мегаактивный пользователь мессенджера и увлекаетесь частой отправкой коротких сообщений, готовьтесь получить сообщение от Телеграм “сожалеем, слишком много попыток, повторите позже”. Оно будет означать, что за минуту вы попытались отправить сообщений больше, чем установлено системным лимитом (т.е. более 50 сообщений).

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

      Совет: не разбивайте длинные сообщения на части. А если действительно делаете рекламные рассылки, делайте их внутри надежной группы.

      Ошибка Telegram “много попыток” в случае глюка системы безопасности

      Когда серверы мессенджера перегружены, а при этом кто-то пытается создать в нем аккаунт, то возникает данный подвид ошибки, когда слишком много попыток от Телеграм добиться сообщения с кодом верификации. Пользователь, не дожидаясь смс с кодом, жмет по кнопке “Повторить”, и делает так несколько раз.

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

      Совет: если долго не приходит смс, не стоит запрашивать его повторно несколько раз у Телеграм. Слишком много попыток, повторите позже вход в систему (где-то через 10-15 минут).

      Ошибка Telegram: много попыток входа/выхода

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

      Если вы получили подобное уведомление от Телеграм “слишком много попыток”, как исправить ситуацию? К сожалению, в данном случае только время решит проблему.

      Много попыток входа в Телеграм: сколько ждать?

      Очень часто время играет важную роль, и каждый час, каждая минута или даже секунда важны. Поэтому многие, кто получил уведомление от Телеграм “слишком много попыток” сколько ждать захотят узнать. Сделать это можно в веб-версии мессенджера.

      Вам потребуется открыть страницу web.telegram.org и попытаться войти в свой аккаунт. Данное действие не будет иметь успеха, но появится кнопка “показать технические данные”. Кликнув по ней, вы увидите запись “Flood_wait_XXXX”, где ХХХХ будет количеством оставшихся секунд ожидания до возможности успешного повторения входа.

      Ну а если вы столкнулись с ситуацией, когда Телеграм пишет “слишком много попыток”, а у вас совершенно нет времени ждать окончания ограничения активности, то вот вам отличный способ разблокировать доступ к мессенджеру: создайте новый аккаунт при помощи виртуального номера от «Grizzly Sms». Это займет буквально пару минут и кликов, а стоит всего 13,5 рубля. Согласитесь, небольшая плата за доступ ко всем возможностям сервиса здесь и сейчас. На этом все, спасибо за внимание.

      There will be errors when working with the API, and they must be correctly handled on the client.
      An error is characterized by several parameters:

      Error Code

      Numerical value similar to HTTP status. Contains information on the type of error that occurred: for example, a data input error, privacy error, or server error. This is a required parameter.

      Error Type

      A string literal in the form of /[A-Z_0-9]+/ , which summarizes the problem. For example, AUTH_KEY_UNREGISTERED . This is an optional parameter.

      Error Database

      A full machine-readable JSON list of RPC errors that can be returned by all methods in the API can be found here », what follows is a description of its fields:

      • errors — All error messages and codes for each method (object).
        • Keys: Error codes as strings (numeric strings)
        • Values: All error messages for each method (object)
          • Keys: Error messages (string)
          • Values: An array of methods which may emit this error (array of strings)
          • Keys: Error messages
          • Values: Error descriptions

          Error messages and error descriptions may contain printf placeholders in key positions, for now only %d is used to map durations contained in error messages to error descriptions.

          Error Constructors

          There should be a way to handle errors that are returned in rpc_error constructors.

          Below is a list of error codes and their meanings:

          303 SEE_OTHER

          The request must be repeated, but directed to a different data center.

          Examples of Errors:
          • FILE_MIGRATE_X: the file to be accessed is currently stored in a different data center.
          • PHONE_MIGRATE_X: the phone number a user is trying to use for authorization is associated with a different data center.
          • NETWORK_MIGRATE_X: the source IP address is associated with a different data center (for registration)
          • USER_MIGRATE_X: the user whose identity is being used to execute queries is associated with a different data center (for registration)

          In all these cases, the error description’s string literal contains the number of the data center (instead of the X) to which the repeated query must be sent.
          More information about redirects between data centers »

          400 BAD_REQUEST

          The query contains errors. In the event that a request was created using a form and contains user generated data, the user should be notified that the data must be corrected before the query is repeated.

          Examples of Errors:
          • FIRSTNAME_INVALID: The first name is invalid
          • LASTNAME_INVALID: The last name is invalid
          • PHONE_NUMBER_INVALID: The phone number is invalid
          • PHONE_CODE_HASH_EMPTY: phone_code_hash is missing
          • PHONE_CODE_EMPTY: phone_code is missing
          • PHONE_CODE_EXPIRED: The confirmation code has expired
          • API_ID_INVALID: The api_id/api_hash combination is invalid
          • PHONE_NUMBER_OCCUPIED: The phone number is already in use
          • PHONE_NUMBER_UNOCCUPIED: The phone number is not yet being used
          • USERS_TOO_FEW: Not enough users (to create a chat, for example)
          • USERS_TOO_MUCH: The maximum number of users has been exceeded (to create a chat, for example)
          • TYPE_CONSTRUCTOR_INVALID: The type constructor is invalid
          • FILE_PART_INVALID: The file part number is invalid
          • FILE_PARTS_INVALID: The number of file parts is invalid
          • FILE_PART_X_MISSING: Part X (where X is a number) of the file is missing from storage
          • MD5_CHECKSUM_INVALID: The MD5 checksums do not match
          • PHOTO_INVALID_DIMENSIONS: The photo dimensions are invalid
          • FIELD_NAME_INVALID: The field with the name FIELD_NAME is invalid
          • FIELD_NAME_EMPTY: The field with the name FIELD_NAME is missing
          • MSG_WAIT_FAILED: A request that must be completed before processing the current request returned an error
          • MSG_WAIT_TIMEOUT: A request that must be completed before processing the current request didn’t finish processing yet

          401 UNAUTHORIZED

          There was an unauthorized attempt to use functionality available only to authorized users.

          Examples of Errors:
          • AUTH_KEY_UNREGISTERED: The key is not registered in the system
          • AUTH_KEY_INVALID: The key is invalid
          • USER_DEACTIVATED: The user has been deleted/deactivated
          • SESSION_REVOKED: The authorization has been invalidated, because of the user terminating all sessions
          • SESSION_EXPIRED: The authorization has expired
          • AUTH_KEY_PERM_EMPTY: The method is unavailable for temporary authorization key, not bound to permanent

          403 FORBIDDEN

          Privacy violation. For example, an attempt to write a message to someone who has blacklisted the current user.

          404 NOT_FOUND

          An attempt to invoke a non-existent object, such as a method.

          406 NOT_ACCEPTABLE

          Similar to 400 BAD_REQUEST, but the app must display the error to the user a bit differently.
          Do not display any visible error to the user when receiving the rpc_error constructor: instead, wait for an updateServiceNotification update, and handle it as usual.
          Basically, an updateServiceNotification popup update will be emitted independently (ie NOT as an Updates constructor inside rpc_result but as a normal update) immediately after emission of a 406 rpc_error : the update will contain the actual localized error message to show to the user with a UI popup.

          An exception to this is the AUTH_KEY_DUPLICATED error, which is only emitted if any of the non-media DC detects that an authorized session is sending requests in parallel from two separate TCP connections, from the same or different IP addresses.
          Note that parallel connections are still allowed and actually recommended for media DCs.
          Also note that by session we mean a logged-in session identified by an authorization constructor, fetchable using account.getAuthorizations, not an MTProto session.

          If the client receives an AUTH_KEY_DUPLICATED error, the session is already invalidated by the server and the user must generate a new auth key and login again.

          https://amdy.su/wp-admin/options-general.php?page=ad-inserter.php#tab-8

          420 FLOOD

          The maximum allowed number of attempts to invoke the given method with the given input parameters has been exceeded. For example, in an attempt to request a large number of text messages (SMS) for the same phone number.

          Error Example:
          • FLOOD_WAIT_X: A wait of X seconds is required (where X is a number)

          500 INTERNAL

          An internal server error occurred while a request was being processed; for example, there was a disruption while accessing a database or file storage.

          If a client receives a 500 error, or you believe this error should not have occurred, please collect as much information as possible about the query and error and send it to the developers.

          Other Error Codes

          If a server returns an error with a code other than the ones listed above, it may be considered the same as a 500 error and treated as an internal server error.

          Если вы пытаетесь запустить приложение Telegram на Xiaomi (Redmi) и вместо привычного интерфейса и загрузки сообщений видите «error code 400 telegram» , значит, что-то пошло не так.

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

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

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

          Ошибки, которые имеют три цифры и начинаются с 4хх – все сетевые, иными словами, связаны с интернетом и сервером.

          Если ваш телефон нормально выходит в интернет в других приложениях, или через браузер, и вы всё равно видите error code 400 telegram, это означает, что сервера Телеграма не отвечают на запрос вашего клиента, они либо перегружены, либо до них не доходят пакеты, которые ваш смартфон отправляет.

          Ошибки типа: Error 400/401/403 – Внутренние проблемы разработчиков и их серверов, либо инфраструктуры, которая их обслуживает .

          Единственное решение – подождать, пока разработчики разберутся с проблемой и вернут сервера в рабочее состояние, вы не сможете ничего исправить и никак на это повлиять. Даже использование VPN не поможет.

          Об авторе: MiMaster

          Привет, меня зовут Тимур. Я с детства увлекался компьютерами и IT-Индустрией, мне это нравится, это моя страсть. Последние несколько лет глубоко увлёкся компанией Xiaomi: идеологией, техникой и уникальным подходом к взрывному росту бизнеса. Владею многими гаджетами Xiaomi и делюсь опытом их использования, но главное — решением проблем и казусов, возникающих при неожиданных обстоятельствах, на страницах сайта mi-check.ru

          В данной статье собраны ошибки, возвращаемые API Telegram. Числовое значение аналогично статусу HTTP. Содержит информацию о типе возникшей ошибки: например, ошибка ввода данных, ошибка конфиденциальности или ошибка сервера.

          Telegram API Error - вернулась ошибка после отправки запроса к API

          303 SEE_OTHER

          Запрос необходимо повторить, но направить в другой центр обработки данных.

          • FILE_MIGRATE_X: файл, к которому нужно получить доступ, в настоящее время хранится в другом центре обработки данных.
          • PHONE_MIGRATE_X: номер телефона, который пользователь пытается использовать для авторизации, связан с другим центром обработки данных.
          • NETWORK_MIGRATE_X: исходный IP-адрес связан с другим центром обработки данных (для регистрации)
          • USER_MIGRATE_X: пользователь, личность которого используется для выполнения запросов, связан с другим центром обработки данных (для регистрации)

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

          ОШИБКА 400, НЕВЕРНЫЙ ЗАПРОС

          Запрос содержит ошибки. В случае, если запрос был создан с использованием формы и содержит данные, созданные пользователем, пользователь должен быть уведомлен о том, что данные должны быть исправлены, прежде чем запрос будет повторен.

          • FIRSTNAME_INVALID: имя недействительно
          • LASTNAME_INVALID: фамилия недействительна
          • PHONE_NUMBER_INVALID: номер телефона недействителен
          • PHONE_CODE_HASH_EMPTY: phone_code_hash отсутствует
          • PHONE_CODE_EMPTY: phone_code отсутствует
          • PHONE_CODE_EXPIRED: срок действия кода подтверждения истек
          • API_ID_INVALID: комбинация api_id / api_hash недействительна
          • PHONE_NUMBER_OCCUPIED: номер телефона уже используется
          • PHONE_NUMBER_UNOCCUPIED: номер телефона еще не используется
          • USERS_TOO_FEW: недостаточно пользователей (например, для создания чата)
          • USERS_TOO_MUCH: превышено максимальное количество пользователей (например, для создания чата)
          • TYPE_CONSTRUCTOR_INVALID: конструктор типа недействителен
          • FILE_PART_INVALID: неверный номер части файла.
          • FILE_PARTS_INVALID: недопустимое количество частей файла.
          • FILE_PART_Х_MISSING: часть X (где X — номер) файла отсутствует в хранилище
          • MD5_CHECKSUM_INVALID: контрольные суммы MD5 не совпадают
          • PHOTO_INVALID_DIMENSIONS: размеры фотографии недействительны
          • FIELD_NAME_INVALID: поле с именем FIELD_NAME недействительно
          • FIELD_NAME_EMPTY: поле с названием FIELD_NAME отсутствует
          • MSG_WAIT_FAILED: запрос, который должен быть выполнен перед обработкой текущего запроса, возвратил ошибку
          • MSG_WAIT_TIMEOUT: запрос, который должен быть выполнен перед обработкой текущего запроса, еще не завершил обработку

          401 ОШИБКА ДОСТУПА

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

          • AUTH_KEY_UNRIGN: Ключ не зарегистрирован в системе
          • AUTH_KEY_INVALID: ключ недействителен
          • USER_DEACTIVATED: пользователь удален / деактивирован
          • SESSION_REVOKED: авторизация была аннулирована из-за того, что пользователь завершил все сеансы
          • SESSION_EXPIRED: срок авторизации истек
          • AUTH_KEY_PERM_EMPTY: метод недоступен для временного ключа авторизации, не привязан к постоянному

          403 ЗАПРЕЩЕНО

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

          404 НЕ НАЙДЕНО

          Попытка вызвать несуществующий объект, например метод.

          406 NOT_ACCEPTABLE

          Подобно 400 BAD_REQUEST , но приложение не должно отображать сообщения об ошибках для пользователя в пользовательском интерфейсе в результате этого ответа. Вместо этого сообщение об ошибке будет доставлено через updateServiceNotification.

          420 FLOOD

          Превышено максимально допустимое количество попыток вызвать данный метод с заданными входными параметрами. Например, при попытке запросить большое количество текстовых сообщений (SMS) на один и тот же номер телефона.

          • FLOOD_WAIT_X: требуется ожидание X секунд (где X — число)

          500 ВНУТРЕННИЙ

          Произошла внутренняя ошибка сервера во время обработки запроса; например, произошел сбой при доступе к базе данных или файловому хранилищу.

          Если клиент получает ошибку 500 или вы считаете, что эта ошибка не должна была возникнуть, пожалуйста, соберите как можно больше информации о запросе и ошибке и отправьте ее разработчикам.

          Другие коды ошибок

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

          #python-3.x #telegram-bot #reddit #praw #py-telegram-bot-api

          #python-3.x #telegram-бот #Reddit #praw #py-telegram-bot-api

          Вопрос:

          Я пытаюсь получить сообщения из субредактов Reddit с помощью PRAW. В большинстве случаев он работает правильно, но я получаю следующую ошибку, что сообщение слишком длинное.Я использую pytelegrambotApi

          Ошибка:
          Ошибка
          Есть ли какое-либо обходное решение, которое я могу сделать здесь, чтобы получить доступ к полному сообщению?

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

          1. Какой длины ваше самое длинное сообщение? Вы могли бы попробовать сжать его, отправить в двух частях, сохранить и предоставить ссылку для доступа пользователя и т.д…. Существует множество «обходных путей», но я бы попытался выяснить, каковы мои ограничения и какова моя средняя / максимальная длина, чтобы решить, какое решение реализовать.

          Ответ №1:

          Одно сообщение Telegram должно содержать не более 4096 символов. Затем сообщение разбивается на другое сообщение (то есть на оставшуюся часть). Добавьте этот код в свой message_handler :

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

          1. понял, спасибо. Однако мне было интересно, откуда вы получили информацию о 4096 символах.

          2. limits.tginfo.me/en

          Ошибка с кодом 400: CHAT_ADMIN_REQUIRED

          Если Вы работаете с Вашим аккаунтом и Вашей группой (пабликом), выдайте Вашему аккаунту в этой группе права администратора!

          Выше предоставлено описание и возможное решение ошибки Телеграм с кодом 400 «CHAT_ADMIN_REQUIRED».

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

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

          Так же, Вам нужно понимать что автор программы Telegram-Spam-Master может не знать, как решить вашу ошибку. Так что если в процессе поисков Вы найдете решение самостоятельно, было бы очень хорошо, если бы Вы поделились с ним этим решением!

          Справочник по Bot API

          Bot API представляет из себя HTTP-интерфейс для работы с ботами в Telegram.

          Подробнее о том, как создать и настроить своего бота, читайте в статье с информацией для разработчиков.

          Авторизация бота

          Каждому боту при создании присваивается уникальный токен вида 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 . В документации для простоты вместо него будет использоваться <token> . Подробнее о том, как получить или заменить токен для вашего бота, читайте в этой статье.

          Отправка запросов

          Все запросы к Telegram Bot API должны осуществляться через HTTPS в следующем виде: https://api.telegram.org/bot<token>/НАЗВАНИЕ_МЕТОДА . Например:

          Допускаются GET и POST запросы. Для передачи параметров в Bot API доступны 4 способа:

          Ответ придёт в виде JSON-объекта, в котором всегда будет булево поле ok и опциональное строковое поле description , содержащее человекочитаемое описание результата. Если поле ok истинно, то запрос прошёл успешно и результат его выполнения можно увидеть в поле result . В случае ошибки поле ok будет равно false , а причины ошибки будут описаны в поле description . Кроме того, в ответе будет целочисленное поле error_code , но коды ошибок будут изменены в будущем.

          Все методы регистрозависимы и должны быть в кодировке UTF-8.

          Отправка запросов при получении обновления

          Если ваш бот работает через вебхуки, то вы можете осуществить запрос к Bot API одновременно с отправкой ответа на вебхук. Для передачи параметров нужно использовать один из типов:

          • application/json
          • application/x-www-form-urlencoded
          • multipart/form-data

          Метод для вызова должен быть определён в запросе в поле method . Однако, имейте в виду: невозможно узнать статус и результат такого запроса.

          Примеры таких запросов описаны в FAQ.

          Получение обновлений

          Существует два диаметрально противоположных по логике способа получать обновления от вашего бота: getUpdates и вебхуки. Входящие обновления будут храниться на сервере до тех пор, пока вы их не обработаете, но не дольше 24 часов.

          Независимо от способа получения обновлений, в ответ вы получите объект Update, сериализованный в JSON.

          Update

          Этот объект представляет из себя входящее обновление. Под обновлением подразумевается действие, совершённое с ботом — например, получение сообщения от пользователя.

          Только один из необязательных параметров может присутствовать в каждом обновлении.

          Поле Тип Описание
          update_id Integer The update‘s unique identifier. Update identifiers start from a certain positive number and increase sequentially. This ID becomes especially handy if you’re using Webhooks, since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order.
          message Message Опционально. New incoming message of any kind — text, photo, sticker, etc.
          inline_query InlineQuery Опционально. New incoming inline query
          chosen_inline_result ChosenInlineResult Опционально. The result of an inline query that was chosen by a user and sent to their chat partner.
          callback_query CallbackQuery Опционально. New incoming callback query
          getUpdates

          Этот метод используется для получения обновлений через long polling (wiki). Ответ возвращается в виде массива объектов Update.

          Параметры Тип Обязательный Описание
          offset Integer Необязательный Identifier of the first update to be returned. Must be greater by one than the highest among the identifiers of previously received updates. By default, updates starting with the earliest unconfirmed update are returned. An update is considered confirmed as soon as getUpdates is called with an offset higher than its update_id. The negative offset can be specified to retrieve updates starting from -offset update from the end of the updates queue. All previous updates will forgotten.
          limit Integer Необязательный Limits the number of updates to be retrieved. Values between 1—100 are accepted. Defaults to 100.
          timeout Integer Необязательный Timeout in seconds for long polling. Defaults to 0, i.e. usual short polling
          Примечание:
          1. Этот метод не будет работать, если у вас уже подключен webhook.
          2. Во избежания повторяющихся обновлений, рекомендуется высчитывать offset каждый раз заново.
          setWebhook

          Этот метод необходим для задания URL вебхука, на который бот будет отправлять обновления. Каждый раз при получении обновления на этот адрес будет отправлен HTTPS POST с сериализованным в JSON объектом Update. При неудачном запросе к вашему серверу попытка будет повторена умеренное число раз.

          Для большей безопасности рекомендуется включить токен в URL вебхука, например, так: https://yourwebhookserver.com/<token> . Так как никто посторонний не знает вашего токена, вы можете быть уверены, что запросы к вашему вебхуку шлёт именно Telegram.

          Параметры Тип Обязательный Описание
          url String Нет HTTPS url для отправки запросов. Чтобы удалить вебхук, отправьте пустую строку.
          certificate InputFile Нет Загрузка публичного ключа для проверки корневого сертификата. Подробнее в разделе про самоподписанные сертификаты.
          Примечание:
          1. При подключенном и настроенном вебхуке метод getUpdates не будет работать.
          2. При использовании самоподписанного сертификата, вам необходимо загрузить публичный ключ с помощью параметра certificate .
          3. На текущий момент отправка обновлений через вебхуки доступна только на эти порты: 443, 80, 88, 8443.
          getWebhookInfo

          Содержит информацию о текущем состоянии вебхука.

          Поле Тип Описание
          url String URL вебхука, может быть пустым
          has_custom_certificate Boolean True, если вебхук использует самозаверенный сертификат
          pending_update_count Integer Количество обновлений, ожидающих доставки
          last_error_date Integer Опционально. Unix-время самой последней ошибки доставки обновления на указанный вебхук
          last_error_message String Опционально. Описание в человекочитаемом формате последней ошибки доставки обновления на указанный вебхук

          Доступные типы

          Все типы, использующиеся в Bot API, являются JSON-объектами.

          Для хранения всех полей типа Integer безопасно использовать 32-битные знаковые целые числа, если не указано иначе.

          Этот объект представляет бота или пользователя Telegram.

          Поле Тип Описание
          id Integer Уникальный идентификатор пользователя или бота
          first_name String Имя бота или пользователя
          last_name String Опционально. Фамилия бота или пользователя
          username String Опционально. Username пользователя или бота

          Этот объект представляет собой чат.

          Поле Тип Описание
          id Integer Уникальный идентификатор чата. Абсолютное значение не превышает 1e13
          type Enum Тип чата: “private”, “group”, “supergroup” или “channel”
          title String Опционально. Название, для каналов или групп
          username String Опционально. Username, для чатов и некоторых каналов
          first_name String Опционально. Имя собеседника в чате
          last_name String Опционально. Фамилия собеседника в чате
          all_members_are_administrators Boolean Опционально.True, если все участники чата являются администраторами
          Message

          Этот объект представляет собой сообщение.

          Поле Тип Описание
          message_id Integer Уникальный идентификатор сообщения
          from User Опционально. Отправитель. Может быть пустым в каналах.
          date Integer Дата отправки сообщения (Unix time)
          chat Chat Диалог, в котором было отправлено сообщение
          forward_from User Опционально. Для пересланных сообщений: отправитель оригинального сообщения
          forward_date Integer Опционально. Для пересланных сообщений: дата отправки оригинального сообщения
          reply_to_message Message Опционально. Для ответов: оригинальное сообщение. Note that the Message object in this field will not contain further reply_to_message fields even if it itself is a reply.
          text String Опционально. Для текстовых сообщений: текст сообщения, 0-4096 символов
          entities Массив из MessageEntity Опционально. Для текстовых сообщений: особые сущности в тексте сообщения.
          audio Audio Опционально. Информация об аудиофайле
          document Document Опционально. Информация о файле
          photo Массив из PhotoSize Опционально. Доступные размеры фото
          sticker Sticker Опционально. Информация о стикере
          video Video Опционально. Информация о видеозаписи
          voice Voice Опционально. Информация о голосовом сообщении
          caption String Опционально. Подпись к файлу, фото или видео, 0-200 символов
          contact Contact Опционально. Информация об отправленном контакте
          location Location Опционально. Информация о местоположении
          venue Venue Опционально. Информация о месте на карте
          new_chat_member User Опционально. Информация о пользователе, добавленном в группу
          left_chat_member User Опционально. Информация о пользователе, удалённом из группы
          new_chat_title String Опционально. Название группы было изменено на это поле
          new_chat_photo Массив из PhotoSize Опционально. Фото группы было изменено на это поле
          delete_chat_photo True Опционально. Сервисное сообщение: фото группы было удалено
          group_chat_created True Опционально. Сервисное сообщение: группа создана
          supergroup_chat_created True Опционально. Сервисное сообщение: супергруппа создана
          channel_chat_created True Опционально. Сервисное сообщение: канал создан
          migrate_to_chat_id Integer Опционально. Группа была преобразована в супергруппу с указанным идентификатором. Не превышает 1e13
          migrate_from_chat_id Integer Опционально. Cупергруппа была создана из группы с указанным идентификатором. Не превышает 1e13
          pinned_message Message Опционально. Указанное сообщение было прикреплено. Note that the Message object in this field will not contain further reply_to_message fields even if it is itself a reply.
          MessageEntity

          Этот объект представляет одну из особых сущностей в текстовом сообщении. Например: хештеги, имена пользователей, ссылки итд.

          Поле Тип Описание
          type String Type of the entity. One of mention ( @username ), hashtag, bot_command, url, email, bold (bold text), italic (italic text), code (monowidth string), pre (monowidth block), text_link (for clickable text URLs)
          offset Integer Offset in UTF-16 code units to the start of the entity
          length Integer Length of the entity in UTF-16 code units
          url String Опционально. For “text_link” only, url that will be opened after user taps on the text
          PhotoSize

          Этот объект представляет изображение определённого размера или превью файла / стикера.

          Поле Тип Описание
          file_id String Уникальный идентификатор файла
          width Integer Photo width
          height Integer Photo height
          file_size Integer Опционально. Размер файла
          Audio

          Этот объект представляет аудиозапись, которую клиенты Telegram воспинимают как музыкальный трек.

          Поле Тип Описание
          file_id String Уникальный идентификатор файла
          duration Integer Duration of the audio in seconds as defined by sender
          performer String Опционально. Performer of the audio as defined by sender or by audio tags
          title String Опционально. Title of the audio as defined by sender or by audio tags
          mime_type String Опционально. MIME файла, заданный отправителем
          file_size Integer Опционально. Размер файла
          Document

          Этот объект представляет файл, не являющийся фотографией, голосовым сообщением или аудиозаписью.

          Поле Тип Описание
          file_id String Unique file identifier
          thumb PhotoSize Опционально. Document thumbnail as defined by sender
          file_name String Опционально. Original filename as defined by sender
          mime_type String Опционально. MIME файла, заданный отправителем
          file_size Integer Опционально. Размер файла
          Sticker

          Этот объект представляет стикер.

          Поле Тип Описание
          file_id String Уникальный идентификатор файла
          width Integer Ширина стикера
          height Integer Высота стикера
          thumb PhotoSize Опционально. Превью стикера в формате .webp или .jpg
          file_size Integer Опционально. Размер файла
          Video

          Этот объект представляет видеозапись.

          Поле Тип Описание
          file_id String Уникальный идентификатор файла
          width Integer Ширина видео, заданная отправителем
          height Integer Высота видео, заданная отправителем
          duration Integer Продолжительность видео, заданная отправителем
          thumb PhotoSize Опционально. Превью видео
          mime_type String Опционально. MIME файла, заданный отправителем
          file_size Integer Опционально. Размер файла
          Voice

          Этот объект представляет голосовое сообщение.

          Поле Тип Описание
          file_id String Уникальный идентификатор файла
          duration Integer Продолжительность аудиофайла, заданная отправителем
          mime_type String Опционально. MIME-тип файла, заданный отправителем
          file_size Integer Опционально. Размер файла
          Contact

          Этот объект представляет контакт с номером телефона.

          Поле Тип Описание
          phone_number String Номер телефона
          first_name String Имя
          last_name String Опционально. Фамилия
          user_id Integer Опционально. Идентификатор пользователя в Telegram
          Location

          Этот объект представляет точку на карте.

          Поле Тип Описание
          longitude Float Долгота, заданная отправителем
          latitude Float Широта, заданная отправителем
          Venue

          Этот объект представляет объект на карте.

          Поле Тип Описание
          location Location Координаты объекта
          title String Название объекта
          address String Адрес объекта
          foursquare_id String Опционально. Идентификатор объекта в Foursquare
          UserProfilePhotos

          Этот объект содержит фотографии профиля пользователя.

          Поле Тип Описание
          total_count Integer Общее число доступных фотографий профиля
          photos Массив массивов с объектами PhotoSize Запрошенные изображения, каждое в 4 разных размерах.

          Этот объект представляет файл, готовый к загрузке. Он может быть скачан по ссылке вида https://api.telegram.org/file/bot<token>/<file_path> . Ссылка будет действительна как минимум в течение 1 часа. По истечении этого срока она может быть запрошена заново с помощью метода getFile.

          Поле Тип Описание
          file_id String Уникальный идентификатор файла
          file_size Integer Опционально. Размер файла, если известен
          file_path String Опционально. Расположение файла. Для скачивания воспользуйтейсь ссылкой вида https://api.telegram.org/file/bot<token>/<file_path>
          ReplyKeyboardMarkup

          Этот объект представляет клавиатуру с опциями ответа (см. описание ботов).

          KeyboardButton

          Этот объект представляет одну кнопку в клавиатуре ответа. Для обычных текстовых кнопок этот объект может быть заменён на строку, содержащую текст на кнопке.

          Поле Тип Описание
          text String Текст на кнопке. Если ни одно из опциональных полей не использовано, то при нажатии на кнопку этот текст будет отправлен боту как простое сообщение.
          request_contact Boolean Опционально. Если значение True , то при нажатии на кнопку боту отправится контакт пользователя с его номером телефона. Доступно только в диалогах с ботом.
          request_location Boolean Опционально. Если значение True , то при нажатии на кнопку боту отправится местоположение пользователя. Доступно только в диалогах с ботом.
          Внимание:
          ReplyKeyboardHide

          После получения сообщения с этим объектом, приложение Telegram свернёт клавиатуру бота и отобразит стандартную клавиатуру устройства (с буквами). По умолчанию клавиатуры бота отображаются до тех пор, пока не будет принудительно отправлена новая или скрыта старая клавиатура. Исключение составляют одноразовые клавиатуры, которые скрываются сразу после нажатия на какую-либо кнопку (см. ReplyKeyboardMarkup).

          InlineKeyboardMarkup

          Этот объект представляет встроенную клавиатуру, которая появляется под соответствующим сообщением.

          Поле Тип Описание
          inline_keyboard Массив массивов с InlineKeyboardButton Массив строк, каждая из которых является массивом объектов InlineKeyboardButton.
          Внимание:
          InlineKeyboardButton

          Этот объект представляет одну кнопку встроенной клавиатуры. Вы обязательно должны задействовать ровно одно опциональное поле.

          Внимание:
          CallbackQuery

          Этот объект представляет входящий запрос обратной связи от инлайн-кнопки с заданным callback_data .

          Если кнопка, создавшая этот запрос, была привязана к сообщению, то в запросе будет присутствовать поле message .

          Если кнопка была показана в сообщении, отправленном при помощи встроенного режима, в запросе будет присутствовать поле inline_message_id .

          Поле Тип Описание
          id String Уникальный идентификатор запроса
          from User Отправитель
          message Message Опционально. Сообщение, к которому была привязана вызвавшая запрос кнопка. Обратите внимание: если сообщение слишком старое, содержание сообщения и дата отправки будут недоступны.
          inline_message_id String Опционально. Идентификатор сообщения, отправленного через вашего бота во встроенном режиме
          data String Данные, связанные с кнопкой. Обратите внимание, что клиенты могут добавлять свои данные в это поле.
          ForceReply

          Upon receiving a message with this object, Telegram clients will display a reply interface to the user (act as if the user has selected the bot‘s message and tapped ’Reply’). This can be extremely useful if you want to create user-friendly step-by-step interfaces without having to sacrifice privacy mode.

          Поле Тип Описание
          force_reply True Shows reply interface to the user, as if they manually selected the bot‘s message and tapped ’Reply’
          selective Boolean Опционально. Use this parameter if you want to force reply from specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot’s message is a reply (has reply_to_message_id), sender of the original message.
          Пример:
          • Explain the user how to send a command with parameters (e.g. /newpoll question answer1 answer2). May be appealing for hardcore users but lacks modern day polish.
          • Guide the user through a step-by-step process. ‘Please send me your question’, ‘Cool, now let’s add the first answer option‘, ’Great. Keep adding answer options, then send /done when you‘re ready’.

          The last option is definitely more attractive. And if you use ForceReply in your bot‘s questions, it will receive the user’s answers even if it only receives replies, commands and mentions — without any extra work for the user.

          ResponseParameters

          Содержит информацию о том, почему запрос не был успешен.

          Field Type Description
          migrate_to_chat_id Integer Optional. The group has been migrated to a supergroup with the specified identifier. This number may be greater than 32 bits and some programming languages may have difficulty/silent defects in interpreting it. But it is smaller than 52 bits, so a signed 64 bit integer or double-precision float type are safe for storing this identifier.
          retry_after Integer Optional. In case of exceeding flood control, the number of seconds left to wait before the request can be repeated
          InputFile

          This object represents the contents of a file to be uploaded. Must be posted using multipart/form-data in the usual way that files are uploaded via the browser.

          Resending files without reuploading

          There are two ways of sending a file (photo, sticker, audio etc.). If it‘s a new file, you can upload it using multipart/form-data. If the file is already on our servers, you don’t need to reupload it: each file object has a file_id field, you can simply pass this file_id as a parameter instead.

          • It is not possible to change the file type when resending by file_id. I.e. a video can’t be sent as a photo, a photo can’t be sent as a document, etc.
          • It is not possible to resend thumbnails.
          • Resending a photo by file_id will send all of its sizes.
          Inline mode objects

          Objects and methods used in the inline mode are described in the Inline mode section.

          Доступные методы

          getMe

          A simple method for testing your bot’s auth token. Requires no parameters. Returns basic information about the bot in form of a User object.

          sendMessage

          Use this method to send text messages. On success, the sent Message is returned.

          Параметры Тип Обязательный Описание
          chat_id Integer or String Yes Unique identifier for the target chat or username of the target channel (in the format @channelusername )
          text String Yes Text of the message to be sent
          parse_mode String Необязательный Send Markdown or HTML, if you want Telegram apps to show bold, italic, fixed-width text or inline URLs in your bot’s message.
          disable_web_page_preview Boolean Необязательный Disables link previews for links in this message
          disable_notification Boolean Необязательный Sends the message silently. iOS users will not receive a notification, Android users will receive a notification with no sound.
          reply_to_message_id Integer Необязательный If the message is a reply, ID of the original message
          reply_markup InlineKeyboardMarkup or ReplyKeyboardMarkup or ReplyKeyboardHide or ForceReply Необязательный Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to hide reply keyboard or to force a reply from the user.
          Formatting options

          The Bot API supports basic formatting for messages. You can use bold and italic text, as well as inline links and pre-formatted code in your bots’ messages. Telegram clients will render them accordingly. You can use either markdown-style or HTML-style formatting.

          Note that Telegram clients will display an alert to the user before opening an inline link (‘Open this link?’ together with the full URL).

          Markdown style

          To use this mode, pass Markdown in the parse_mode field when using sendMessage. Use the following syntax in your message:

          HTML style

          To use this mode, pass HTML in the parse_mode field when using sendMessage. The following tags are currently supported:

          • Only the tags mentioned above are currently supported.
          • Tags must not be nested.
          • All < , > and & symbols that are not a part of a tag or an HTML entity must be replaced with the corresponding HTML entities ( < with &lt; , > with &gt; and & with &amp; ).
          • All numerical HTML entities are supported.
          • The API currently supports only the following named HTML entities: &lt; , &gt; , &amp; and &quot; .
          forwardMessage

          Use this method to forward messages of any kind. On success, the sent Message is returned.

          Параметры Тип Обязательный Описание
          chat_id Integer or String Yes Unique identifier for the target chat or username of the target channel (in the format @channelusername )
          from_chat_id Integer or String Yes Unique identifier for the chat where the original message was sent (or channel username in the format @channelusername )
          disable_notification Boolean Необязательный Sends the message silently. iOS users will not receive a notification, Android users will receive a notification with no sound.
          message_id Integer Yes Unique message identifier
          sendPhoto

          Use this method to send photos. On success, the sent Message is returned.

          Параметры Тип Обязательный Описание
          chat_id Integer or String Yes Unique identifier for the target chat or username of the target channel (in the format @channelusername )
          photo InputFile or String Yes Photo to send. You can either pass a file_id as String to resend a photo that is already on the Telegram servers, or upload a new photo using multipart/form-data.
          caption String Необязательный Photo caption (may also be used when resending photos by file_id), 0-200 characters
          disable_notification Boolean Необязательный Sends the message silently. iOS users will not receive a notification, Android users will receive a notification with no sound.
          reply_to_message_id Integer Необязательный If the message is a reply, ID of the original message
          reply_markup InlineKeyboardMarkup or ReplyKeyboardMarkup or ReplyKeyboardHide or ForceReply Необязательный Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to hide reply keyboard or to force a reply from the user.
          sendAudio

          Use this method to send audio files, if you want Telegram clients to display them in the music player. Your audio must be in the .mp3 format. On success, the sent Message is returned. Bots can currently send audio files of up to 50 MB in size, this limit may be changed in the future.

          For sending voice messages, use the sendVoice method instead.

          Параметры Тип Обязательный Описание
          chat_id Integer or String Yes Unique identifier for the target chat or username of the target channel (in the format @channelusername )
          audio InputFile or String Yes Audio file to send. You can either pass a file_id as String to resend an audio that is already on the Telegram servers, or upload a new audio file using multipart/form-data.
          caption Integer Необязательный Название аудио, 0-200 символов
          duration Integer Необязательный Duration of the audio in seconds
          performer String Необязательный Performer
          title String Необязательный Track name
          disable_notification Boolean Необязательный Sends the message silently. iOS users will not receive a notification, Android users will receive a notification with no sound.
          reply_to_message_id Integer Необязательный If the message is a reply, ID of the original message
          reply_markup InlineKeyboardMarkup or ReplyKeyboardMarkup or ReplyKeyboardHide or ForceReply Необязательный Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to hide reply keyboard or to force a reply from the user.
          sendDocument

          Use this method to send general files. On success, the sent Message is returned. Bots can currently send files of any type of up to 50 MB in size, this limit may be changed in the future.

          Параметры Тип Обязательный Описание
          chat_id Integer or String Yes Unique identifier for the target chat or username of the target channel (in the format @channelusername )
          document InputFile or String Yes File to send. You can either pass a file_id as String to resend a file that is already on the Telegram servers, or upload a new file using multipart/form-data.
          caption String Необязательный Document caption (may also be used when resending documents by file_id), 0-200 characters
          disable_notification Boolean Необязательный Sends the message silently. iOS users will not receive a notification, Android users will receive a notification with no sound.
          reply_to_message_id Integer Необязательный If the message is a reply, ID of the original message
          reply_markup InlineKeyboardMarkup or ReplyKeyboardMarkup or ReplyKeyboardHide or ForceReply Необязательный Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to hide reply keyboard or to force a reply from the user.
          sendSticker

          Use this method to send .webp stickers. On success, the sent Message is returned.

          Параметры Тип Обязательный Описание
          chat_id Integer or String Yes Unique identifier for the target chat or username of the target channel (in the format @channelusername )
          sticker InputFile or String Yes Sticker to send. You can either pass a file_id as String to resend a sticker that is already on the Telegram servers, or upload a new sticker using multipart/form-data.
          disable_notification Boolean Необязательный Sends the message silently. iOS users will not receive a notification, Android users will receive a notification with no sound.
          reply_to_message_id Integer Необязательный If the message is a reply, ID of the original message
          reply_markup InlineKeyboardMarkup or ReplyKeyboardMarkup or ReplyKeyboardHide or ForceReply Необязательный Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to hide reply keyboard or to force a reply from the user.
          sendVideo

          Use this method to send video files, Telegram clients support mp4 videos (other formats may be sent as Document). On success, the sent Message is returned. Bots can currently send video files of up to 50 MB in size, this limit may be changed in the future.

          Параметры Тип Обязательный Описание
          chat_id Integer or String Yes Unique identifier for the target chat or username of the target channel (in the format @channelusername )
          video InputFile or String Yes Video to send. You can either pass a file_id as String to resend a video that is already on the Telegram servers, or upload a new video file using multipart/form-data.
          duration Integer Необязательный Duration of sent video in seconds
          width Integer Необязательный Video width
          height Integer Необязательный Video height
          caption String Необязательный Video caption (may also be used when resending videos by file_id), 0-200 characters
          disable_notification Boolean Необязательный Sends the message silently. iOS users will not receive a notification, Android users will receive a notification with no sound.
          reply_to_message_id Integer Необязательный If the message is a reply, ID of the original message
          reply_markup InlineKeyboardMarkup or ReplyKeyboardMarkup or ReplyKeyboardHide or ForceReply Необязательный Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to hide reply keyboard or to force a reply from the user.
          sendVoice

          Use this method to send audio files, if you want Telegram clients to display the file as a playable voice message. For this to work, your audio must be in an .ogg file encoded with OPUS (other formats may be sent as Audio or Document). On success, the sent Message is returned. Bots can currently send voice messages of up to 50 MB in size, this limit may be changed in the future.

          Параметры Тип Обязательный Описание
          chat_id Integer or String Yes Unique identifier for the target chat or username of the target channel (in the format @channelusername )
          voice InputFile or String Yes Audio file to send. You can either pass a file_id as String to resend an audio that is already on the Telegram servers, or upload a new audio file using multipart/form-data.
          caption Integer Необязательный Название аудиосообщения, 0-200 символов
          duration Integer Необязательный Duration of sent audio in seconds
          disable_notification Boolean Необязательный Sends the message silently. iOS users will not receive a notification, Android users will receive a notification with no sound.
          reply_to_message_id Integer Необязательный If the message is a reply, ID of the original message
          reply_markup InlineKeyboardMarkup or ReplyKeyboardMarkup or ReplyKeyboardHide or ForceReply Необязательный Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to hide reply keyboard or to force a reply from the user.
          sendLocation

          Use this method to send point on the map. On success, the sent Message is returned.

          Параметры Тип Обязательный Описание
          chat_id Integer or String Yes Unique identifier for the target chat or username of the target channel (in the format @channelusername )
          latitude Float number Yes Latitude of location
          longitude Float number Yes Longitude of location
          disable_notification Boolean Необязательный Sends the message silently. iOS users will not receive a notification, Android users will receive a notification with no sound.
          reply_to_message_id Integer Необязательный If the message is a reply, ID of the original message
          reply_markup InlineKeyboardMarkup or ReplyKeyboardMarkup or ReplyKeyboardHide or ForceReply Необязательный Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to hide reply keyboard or to force a reply from the user.
          sendVenue

          Use this method to send information about a venue. On success, the sent Message is returned.

          Параметры Тип Обязательный Описание
          chat_id Integer or String Yes Unique identifier for the target chat or username of the target channel (in the format @channelusername )
          latitude Float number Yes Latitude of the venue
          longitude Float number Yes Longitude of the venue
          title String Yes Name of the venue
          address String Yes Address of the venue
          foursquare_id String Необязательный Foursquare identifier of the venue
          disable_notification Boolean Необязательный Sends the message silently. iOS users will not receive a notification, Android users will receive a notification with no sound.
          reply_to_message_id Integer Необязательный If the message is a reply, ID of the original message
          reply_markup InlineKeyboardMarkup or ReplyKeyboardMarkup or ReplyKeyboardHide or ForceReply Необязательный Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to hide reply keyboard or to force a reply from the user.
          sendContact

          Use this method to send phone contacts. On success, the sent Message is returned.

          Параметры Тип Обязательный Описание
          chat_id Integer or String Yes Unique identifier for the target chat or username of the target channel (in the format @channelusername )
          phone_number String Yes Contact’s phone number
          first_name String Yes Contact’s first name
          last_name String Необязательный Contact’s last name
          disable_notification Boolean Необязательный Sends the message silently. iOS users will not receive a notification, Android users will receive a notification with no sound.
          reply_to_message_id Integer Необязательный If the message is a reply, ID of the original message
          reply_markup InlineKeyboardMarkup or ReplyKeyboardMarkup or ReplyKeyboardHide or ForceReply Необязательный Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to hide keyboard or to force a reply from the user.
          sendChatAction

          Use this method when you need to tell the user that something is happening on the bot’s side. The status is set for 5 seconds or less (when a message arrives from your bot, Telegram clients clear its typing status).

          Пример:

          We only recommend using this method when a response from the bot will take a noticeable amount of time to arrive.

          Параметры Тип Обязательный Описание
          chat_id Integer or String Yes Unique identifier for the target chat or username of the target channel (in the format @channelusername )
          action String Yes Type of action to broadcast. Choose one, depending on what the user is about to receive: typing for text messages, upload_photo for photos, record_video or upload_video for videos, record_audio or upload_audio for audio files, upload_document for general files, find_location for location data.
          getUserProfilePhotos

          Use this method to get a list of profile pictures for a user. Returns a UserProfilePhotos object.

          Параметры Тип Обязательный Описание
          user_id Integer Yes Unique identifier of the target user
          offset Integer Необязательный Sequential number of the first photo to be returned. By default, all photos are returned.
          limit Integer Необязательный Limits the number of photos to be retrieved. Values between 1—100 are accepted. Defaults to 100.
          getFile

          Use this method to get basic info about a file and prepare it for downloading. For the moment, bots can download files of up to 20MB in size. On success, a File object is returned. The file can then be downloaded via the link https://api.telegram.org/file/bot<token>/<file_path> , where <file_path> is taken from the response. It is guaranteed that the link will be valid for at least 1 hour. When the link expires, a new one can be requested by calling getFile again.

          Параметры Тип Обязательный Описание
          file_id String Yes File identifier to get info about
          kickChatMember

          Use this method to kick a user from a group or a supergroup. In the case of supergroups, the user will not be able to return to the group on their own using invite links, etc., unless unbanned first. The bot must be an administrator in the group for this to work. Returns True on success.

          Внимание:
          Параметры Тип Обязательный Описание
          chat_id Integer or String Yes Unique identifier for the target group or username of the target supergroup (in the format @supergroupusername )
          user_id Integer Yes Unique identifier of the target user
          unbanChatMember

          Use this method to unban a previously kicked user in a supergroup. The user will not return to the group automatically, but will be able to join via link, etc. The bot must be an administrator in the group for this to work. Returns True on success.

          Параметры Тип Обязательный Описание
          chat_id Integer or String Yes Unique identifier for the target group or username of the target supergroup (in the format @supergroupusername )
          user_id Integer Yes Unique identifier of the target user
          answerCallbackQuery

          Use this method to send answers to callback queries sent from inline keyboards. The answer will be displayed to the user as a notification at the top of the chat screen or as an alert. On success, True is returned.

          Параметры Тип Обязательный Описание
          callback_query_id String Yes Unique identifier for the query to be answered
          text String Необязательный Text of the notification. If not specified, nothing will be shown to the user
          show_alert Boolean Необязательный If true, an alert will be shown by the client instead of a notification at the top of the chat screen. Defaults to false.
          url String Необязательный URL, который будет открыт у пользователя. Если вы создали игру, приняв условия @Botfather, укажите адрес, на котором расположена ваша игра. Учтите, что это будет работать только если запрос исходит от кнопки callback_game.
          В остальных случаях вы можете использовать параметр для создания ссылок вида telegram.me/your_bot?start=XXXX
          Inline mode methods

          Methods and objects used in the inline mode are described in the Inline mode section.

          Updating messages

          The following methods allow you to change an existing message in the message history instead of sending a new one with a result of an action. This is most useful for messages with inline keyboards using callback queries, but can also help reduce clutter in conversations with regular chat bots.

          Please note, that it is currently only possible to edit messages without reply_markup or with inline keyboards.

          editMessageText

          Use this method to edit text messages sent by the bot or via the bot (for inline bots). On success, the edited Message is returned.

          Параметры Тип Обязательный Описание
          chat_id Integer or String No Required if inline_message_id is not specified. Unique identifier for the target chat or username of the target channel (in the format @channelusername )
          message_id Integer No Required if inline_message_id is not specified. Unique identifier of the sent message
          inline_message_id String No Required if chat_id and message_id are not specified. Identifier of the inline message
          text String Yes New text of the message
          parse_mode String Необязательный Send Markdown or HTML, if you want Telegram apps to show bold, italic, fixed-width text or inline URLs in your bot’s message.
          disable_web_page_preview Boolean Необязательный Disables link previews for links in this message
          reply_markup InlineKeyboardMarkup Необязательный A JSON-serialized object for an inline keyboard.
          editMessageCaption

          Use this method to edit captions of messages sent by the bot or via the bot (for inline bots). On success, the edited Message is returned.

          Параметры Тип Обязательный Описание
          chat_id Integer or String No Required if inline_message_id is not specified. Unique identifier for the target chat or username of the target channel (in the format @channelusername )
          message_id Integer No Required if inline_message_id is not specified. Unique identifier of the sent message
          inline_message_id String No Required if chat_id and message_id are not specified. Identifier of the inline message
          caption String Необязательный New caption of the message
          reply_markup InlineKeyboardMarkup Необязательный A JSON-serialized object for an inline keyboard.
          editMessageReplyMarkup

          Use this method to edit only the reply markup of messages sent by the bot or via the bot (for inline bots). On success, the edited Message is returned.

          Параметры Тип Обязательный Описание
          chat_id Integer or String No Required if inline_message_id is not specified. Unique identifier for the target chat or username of the target channel (in the format @channelusername )
          message_id Integer No Required if inline_message_id is not specified. Unique identifier of the sent message
          inline_message_id String No Required if chat_id and message_id are not specified. Identifier of the inline message
          reply_markup InlineKeyboardMarkup Необязательный A JSON-serialized object for an inline keyboard.

          Inline-режим

          The following methods and objects allow your bot to work in inline mode.
          Please see our Introduction to Inline bots for more details.

          To enable this option, send the /setinline command to @BotFather and provide the placeholder text that the user will see in the input field after typing your bot’s name.

          InlineQuery

          This object represents an incoming inline query. When the user sends an empty query, your bot could return some default or trending results.

          Поле Тип Описание
          id String Unique identifier for this query
          from User Sender
          location Location Опционально. Sender location, only for bots that request user location
          query String Text of the query
          offset String Offset of the results to be returned, can be controlled by the bot
          answerInlineQuery

          Use this method to send answers to an inline query. On success, True is returned.
          No more than 50 results per query are allowed.

          InlineQueryResult

          This object represents one result of an inline query. Telegram clients currently support results of the following 19 types:

          InlineQueryResultArticle

          Represents a link to an article or web page.

          Поле Тип Описание
          type String Type of the result, must be article
          id String Unique identifier for this result, 1-64 Bytes
          title String Title of the result
          input_message_content InputMessageContent Content of the message to be sent
          reply_markup InlineKeyboardMarkup Опционально. Inline keyboard attached to the message
          url String Опционально. URL of the result
          hide_url Boolean Опционально. Pass True, if you don’t want the URL to be shown in the message
          description String Опционально. Short description of the result
          thumb_url String Опционально. Url of the thumbnail for the result
          thumb_width Integer Опционально. Thumbnail width
          thumb_height Integer Опционально. Thumbnail height
          InlineQueryResultPhoto

          Represents a link to a photo. By default, this photo will be sent by the user with optional caption. Alternatively, you can use input_message_content to send a message with the specified content instead of the photo.

          Поле Тип Описание
          type String Type of the result, must be photo
          id String Unique identifier for this result, 1-64 bytes
          photo_url String A valid URL of the photo. Photo must be in jpeg format. Photo size must not exceed 5MB
          thumb_url String URL of the thumbnail for the photo
          photo_width Integer Опционально. Width of the photo
          photo_height Integer Опционально. Height of the photo
          title String Опционально. Title for the result
          description String Опционально. Short description of the result
          caption String Опционально. Caption of the photo to be sent, 0-200 characters
          reply_markup InlineKeyboardMarkup Опционально. Inline keyboard attached to the message
          input_message_content InputMessageContent Опционально. Content of the message to be sent instead of the photo
          InlineQueryResultGif

          Represents a link to an animated GIF file. By default, this animated GIF file will be sent by the user with optional caption. Alternatively, you can use input_message_content to send a message with the specified content instead of the animation.

          Поле Тип Описание
          type String Type of the result, must be gif
          id String Unique identifier for this result, 1-64 bytes
          gif_url String A valid URL for the GIF file. Размер файла must not exceed 1MB
          gif_width Integer Опционально. Width of the GIF
          gif_height Integer Опционально. Height of the GIF
          thumb_url String URL of the static thumbnail for the result (jpeg or gif)
          title String Опционально. Title for the result
          caption String Опционально. Caption of the GIF file to be sent, 0-200 characters
          reply_markup InlineKeyboardMarkup Опционально. Inline keyboard attached to the message
          input_message_content inputMessageContent Опционально. Content of the message to be sent instead of the GIF animation
          InlineQueryResultMpeg4Gif

          Represents a link to a video animation (H.264/MPEG-4 AVC video without sound). By default, this animated MPEG-4 file will be sent by the user with optional caption. Alternatively, you can use input_message_content to send a message with the specified content instead of the animation.

          Поле Тип Описание
          type String Type of the result, must be mpeg4_gif
          id String Unique identifier for this result, 1-64 bytes
          mpeg4_url String A valid URL for the MP4 file. Размер файла must not exceed 1MB
          mpeg4_width Integer Опционально. Video width
          mpeg4_height Integer Опционально. Video height
          thumb_url String URL of the static thumbnail (jpeg or gif) for the result
          title String Опционально. Title for the result
          caption String Опционально. Caption of the MPEG-4 file to be sent, 0-200 characters
          reply_markup InlineKeyboardMarkup Опционально. Inline keyboard attached to the message
          input_message_content InputMessageContent Опционально. Content of the message to be sent instead of the video animation
          InlineQueryResultVideo

          Represents a link to a page containing an embedded video player or a video file. By default, this video file will be sent by the user with an optional caption. Alternatively, you can use input_message_content to send a message with the specified content instead of the video.

          Поле Тип Описание
          type String Type of the result, must be video
          id String Unique identifier for this result, 1-64 bytes
          video_url String A valid URL for the embedded video player or video file
          mime_type String Mime type of the content of video url, “text/html” or “video/mp4”
          thumb_url String URL of the thumbnail (jpeg only) for the video
          title String Title for the result
          caption String Опционально. Caption of the video to be sent, 0-200 characters
          video_width Integer Опционально. Video width
          video_height Integer Опционально. Video height
          video_duration Integer Опционально. Video duration in seconds
          description String Опционально. Short description of the result
          reply_markup InlineKeyboardMarkup Опционально. Inline keyboard attached to the message
          input_message_content InputMessageContent Опционально. Content of the message to be sent instead of the video
          InlineQueryResultAudio

          Represents a link to an mp3 audio file. By default, this audio file will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the audio.

          Поле Тип Описание
          type String Type of the result, must be audio
          id String Unique identifier for this result, 1-64 bytes
          audio_url String A valid URL for the audio file
          title String Title
          caption Integer Необязательный Название аудио, 0-200 символов
          performer String Опционально. Performer
          audio_duration Integer Опционально. Audio duration in seconds
          reply_markup InlineKeyboardMarkup Опционально. Inline keyboard attached to the message
          input_message_content InputMessageContent Опционально. Content of the message to be sent instead of the audio

          Note: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.

          InlineQueryResultVoice

          Represents a link to a voice recording in an .ogg container encoded with OPUS. By default, this voice recording will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the the voice message.

          Поле Тип Описание
          type String Type of the result, must be voice
          id String Unique identifier for this result, 1-64 bytes
          voice_url String A valid URL for the voice recording
          title String Recording title
          caption Integer Необязательный Название голосового сообщения, 0-200 символов
          voice_duration Integer Опционально. Recording duration in seconds
          reply_markup InlineKeyboardMarkup Опционально. Inline keyboard attached to the message
          input_message_content InputMessageContent Опционально. Content of the message to be sent instead of the voice recording

          Note: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.

          InlineQueryResultDocument

          Represents a link to a file. By default, this file will be sent by the user with an optional caption. Alternatively, you can use input_message_content to send a message with the specified content instead of the file. Currently, only .PDF and .ZIP files can be sent using this method.

          Поле Тип Описание
          type String Type of the result, must be document
          id String Unique identifier for this result, 1-64 bytes
          title String Title for the result
          caption String Опционально. Caption of the document to be sent, 0-200 characters
          document_url String A valid URL for the file
          mime_type String Mime type of the content of the file, either “application/pdf” or “application/zip”
          description String Опционально. Short description of the result
          reply_markup InlineKeyboardMarkup Опционально. Inline keyboard attached to the message
          input_message_content InputMessageContent Опционально. Content of the message to be sent instead of the file
          thumb_url String Опционально. URL of the thumbnail (jpeg only) for the file
          thumb_width Integer Опционально. Thumbnail width
          thumb_height Integer Опционально. Thumbnail height

          Note: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.

          InlineQueryResultLocation

          Represents a location on a map. By default, the location will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the location.

          Поле Тип Описание
          type String Type of the result, must be location
          id String Unique identifier for this result, 1-64 Bytes
          latitude Float number Location latitude in degrees
          longitude Float number Location longitude in degrees
          title String Location title
          reply_markup InlineKeyboardMarkup Опционально. Inline keyboard attached to the message
          input_message_content InputMessageContent Опционально. Content of the message to be sent instead of the location
          thumb_url String Опционально. Url of the thumbnail for the result
          thumb_width Integer Опционально. Thumbnail width
          thumb_height Integer Опционально. Thumbnail height

          Note: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.

          InlineQueryResultVenue

          Represents a venue. By default, the venue will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the venue.

          Поле Тип Описание
          type String Type of the result, must be venue
          id String Unique identifier for this result, 1-64 Bytes
          latitude Float Latitude of the venue location in degrees
          longitude Float Longitude of the venue location in degrees
          title String Title of the venue
          address String Address of the venue
          foursquare_id String Опционально. Foursquare identifier of the venue if known
          reply_markup InlineKeyboardMarkup Опционально. Inline keyboard attached to the message
          input_message_content InputMessageContent Опционально. Content of the message to be sent instead of the venue
          thumb_url String Опционально. Url of the thumbnail for the result
          thumb_width Integer Опционально. Thumbnail width
          thumb_height Integer Опционально. Thumbnail height

          Note: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.

          InlineQueryResultContact

          Represents a contact with a phone number. By default, this contact will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the contact.

          Поле Тип Описание
          type String Type of the result, must be contact
          id String Unique identifier for this result, 1-64 Bytes
          phone_number String Contact’s phone number
          first_name String Contact’s first name
          last_name String Опционально. Contact’s last name
          reply_markup InlineKeyboardMarkup Опционально. Inline keyboard attached to the message
          input_message_content InputMessageContent Опционально. Content of the message to be sent instead of the contact
          thumb_url String Опционально. Url of the thumbnail for the result
          thumb_width Integer Опционально. Thumbnail width
          thumb_height Integer Опционально. Thumbnail height

          Note: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.

          InlineQueryResultCachedPhoto

          Represents a link to a photo stored on the Telegram servers. By default, this photo will be sent by the user with an optional caption. Alternatively, you can use input_message_content to send a message with the specified content instead of the photo.

          Поле Тип Описание
          type String Type of the result, must be photo
          id String Unique identifier for this result, 1-64 bytes
          photo_file_id String A valid file identifier of the photo
          title String Опционально. Title for the result
          description String Опционально. Short description of the result
          caption String Опционально. Caption of the photo to be sent, 0-200 characters
          reply_markup InlineKeyboardMarkup Опционально. Inline keyboard attached to the message
          input_message_content InputMessageContent Опционально. Content of the message to be sent instead of the photo
          InlineQueryResultCachedGif

          Represents a link to an animated GIF file stored on the Telegram servers. By default, this animated GIF file will be sent by the user with an optional caption. Alternatively, you can use input_message_content to send a message with specified content instead of the animation.

          Поле Тип Описание
          type String Type of the result, must be gif
          id String Unique identifier for this result, 1-64 bytes
          gif_file_id String A valid file identifier for the GIF file
          title String Опционально. Title for the result
          caption String Опционально. Caption of the GIF file to be sent, 0-200 characters
          reply_markup InlineKeyboardMarkup Опционально. An Inline keyboard attached to the message
          input_message_content InputMessageContent Опционально. Content of the message to be sent instead of the GIF animation
          InlineQueryResultCachedMpeg4Gif

          Represents a link to a video animation (H.264/MPEG-4 AVC video without sound) stored on the Telegram servers. By default, this animated MPEG-4 file will be sent by the user with an optional caption. Alternatively, you can use input_message_content to send a message with the specified content instead of the animation.

          Поле Тип Описание
          type String Type of the result, must be mpeg4_gif
          id String Unique identifier for this result, 1-64 bytes
          mpeg4_file_id String A valid file identifier for the MP4 file
          title String Опционально. Title for the result
          caption String Опционально. Caption of the MPEG-4 file to be sent, 0-200 characters
          reply_markup InlineKeyboardMarkup Опционально. An Inline keyboard attached to the message
          input_message_content InputMessageContent Опционально. Content of the message to be sent instead of the video animation
          InlineQueryResultCachedSticker

          Represents a link to a sticker stored on the Telegram servers. By default, this sticker will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the sticker.

          Поле Тип Описание
          type String Type of the result, must be sticker
          id String Unique identifier for this result, 1-64 bytes
          sticker_file_id String A valid file identifier of the sticker
          reply_markup InlineKeyboardMarkup Опционально. An Inline keyboard attached to the message
          input_message_content InputMessageContent Опционально. Content of the message to be sent instead of the sticker

          Note: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.

          InlineQueryResultCachedDocument

          Represents a link to a file stored on the Telegram servers. By default, this file will be sent by the user with an optional caption. Alternatively, you can use input_message_content to send a message with the specified content instead of the file. Currently, only pdf-files and zip archives can be sent using this method.

          Поле Тип Описание
          type String Type of the result, must be document
          id String Unique identifier for this result, 1-64 bytes
          title String Title for the result
          document_file_id String A valid file identifier for the file
          description String Опционально. Short description of the result
          caption String Опционально. Caption of the document to be sent, 0-200 characters
          reply_markup InlineKeyboardMarkup Опционально. An Inline keyboard attached to the message
          input_message_content InputMessageContent Опционально. Content of the message to be sent instead of the file

          Note: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.

          InlineQueryResultCachedVideo

          Represents a link to a video file stored on the Telegram servers. By default, this video file will be sent by the user with an optional caption. Alternatively, you can use input_message_content to send a message with the specified content instead of the video.

          Поле Тип Описание
          type String Type of the result, must be video
          id String Unique identifier for this result, 1-64 bytes
          video_file_id String A valid file identifier for the video file
          title String Title for the result
          description String Опционально. Short description of the result
          caption String Опционально. Caption of the video to be sent, 0-200 characters
          reply_markup InlineKeyboardMarkup Опционально. An Inline keyboard attached to the message
          input_message_content InputMessageContent Опционально. Content of the message to be sent instead of the video
          InlineQueryResultCachedVoice

          Represents a link to a voice message stored on the Telegram servers. By default, this voice message will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the voice message.

          Поле Тип Описание
          type String Type of the result, must be voice
          id String Unique identifier for this result, 1-64 bytes
          voice_file_id String A valid file identifier for the voice message
          title String Voice message title
          caption Integer Необязательный Название аудиосообщения, 0-200 символов
          reply_markup InlineKeyboardMarkup Опционально. An Inline keyboard attached to the message
          input_message_content InputMessageContent Опционально. Content of the message to be sent instead of the voice message

          Note: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.

          InlineQueryResultCachedAudio

          Represents a link to an mp3 audio file stored on the Telegram servers. By default, this audio file will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the audio.

          Поле Тип Описание
          type String Type of the result, must be audio
          id String Unique identifier for this result, 1-64 bytes
          caption Integer Необязательный Название аудио, 0-200 символов
          audio_file_id String A valid file identifier for the audio file
          reply_markup InlineKeyboardMarkup Опционально. An Inline keyboard attached to the message
          input_message_content InputMessageContent Опционально. Content of the message to be sent instead of the audio

          Note: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.

          InputMessageContent

          This object represents the content of a message to be sent as a result of an inline query. Telegram clients currently support the following 4 types:

          InputTextMessageContent

          Represents the content of a text message to be sent as the result of an inline query.

          Поле Тип Описание
          message_text String Text of the message to be sent, 1-4096 characters
          parse_mode String Опционально. Send Markdown or HTML, if you want Telegram apps to show bold, italic, fixed-width text or inline URLs in your bot’s message.
          disable_web_page_preview Boolean Опционально. Disables link previews for links in the sent message
          InputLocationMessageContent

          Represents the content of a location message to be sent as the result of an inline query.

          Поле Тип Описание
          latitude Float Latitude of the location in degrees
          longitude Float Longitude of the location in degrees

          Note: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.

          InputVenueMessageContent

          Represents the content of a venue message to be sent as the result of an inline query.

          Поле Тип Описание
          latitude Float Latitude of the venue in degrees
          longitude Float Longitude of the venue in degrees
          title String Name of the venue
          address String Address of the venue
          foursquare_id String Опционально. Foursquare identifier of the venue, if known

          Note: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.

          InputContactMessageContent

          Represents the content of a contact message to be sent as the result of an inline query.

          Поле Тип Описание
          phone_number String Contact’s phone number
          first_name String Contact’s first name
          last_name String Опционально. Contact’s last name

          Note: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.

          ChosenInlineResult

          Represents a result of an inline query that was chosen by the user and sent to their chat partner.

          Поле Тип Описание
          result_id String The unique identifier for the result that was chosen
          from User The user that chose the result
          location Location Опционально. Sender location, only for bots that require user location
          inline_message_id String Опционально. Identifier of the sent inline message. Available only if there is an inline keyboard attached to the message. Will be also received in callback queries and can be used to edit the message.
          query String The query that was used to obtain the result

          Боты теперь умеют предоставлять пользователям возможность поиграть в HTML5-игры. Создать игру можно при помощи бота @BotFather и команды /newgame. Обратите внимание, что для создания игры вам нужно принять соглашение.

          • Игры — новый тип контента, представленный объектами Game и InlineQueryResultGame.
          • Как только вы создали игру с помощью бота BotFather, вы сможее отправлять игры в чаты или при помощи метода sendGame, или используя встроенный режим с методом InlineQueryResultGame.
          • Если вы отправите сообщение с игрой без каких-либо кнопок, к нему автоматически добавится кнопка ‘Играть в ИмяИгры‘. Когда кто-то нажмёт на эту кнопку, вашему боту придёт CallbackQuery с параметром game_short_name. После этого вы должны предоставить корректный URL страницы с игрой, который автоматически откроется во встроенном браузере у пользователя.
          • Вы можете сами добавить сколько угодно кнопок к сообщению с игрой. Пожалуйста, обратите внимание, что первая кнопка в первом ряду всегда должна открывать игру. Для этого существует поле callback_game в объекте InlineKeyboardButton. Остальные кнопки могут быть какими угодно: ссылки на сайт игры, вызов правил, и т. д.
          • Чтобы описание игры выглядело более привлекательно, вы можете загрузить GIF-анимацию с геймплеем игры. Сделать это можно при помощи бота BotFather (пример такой игры: Lumberjack).
          • В сообщении с игрой также будет отображаться таблица рекордов для текущего чата. Чтобы отображать рекорды в чате с игрой, вы можете использовать метод setGameScore. Добавьте параметр edit_message, чтобы автоматически обновлять сообщение с таблицей рекордов.
          • Чтобы отобразить таблицу рекордов прямо в вашем приложении, используйте метод getGameHighScores.
          • Вы можете добавить кнопки «Поделиться», которые позволят пользователям отправлять свои результаты в чаты или группы.
          sendGame

          Этот метод используется для отправки игры в виде обычного сообщения. В случае успеха возвращает объект с отправленным сообщением Message.

          Параметры Тип Обязательный? Описание
          chat_id Integer или String Да Уникальный идентификатор целевого чата или юзернейм целевого канала (в формате @channelusername )
          game_short_name String Да Короткое название игры, служит уникальным идентификатором игры. Задаётся в Botfather.
          disable_notification Boolean Optional Sends the message silently. iOS users will not receive a notification, Android users will receive a notification with no sound.
          reply_to_message_id Integer Нет Если сообщение является ответом, ID оригинального сообщения
          reply_markup InlineKeyboardMarkup или ReplyKeyboardMarkup или ReplyKeyboardHide или ForceReply Нет Дополнительные параметры интерфейса. Сериализованные в JSON встроенные клавиатуры, обычные клавиатуры, инструкция скрыть клавиатуру или принудительного ответа.

          Этот объект представляет собой игру.

          Поле Тип Описание
          title String Название игры
          description String Описание игры
          photo Массив объектов PhotoSize Изображение, которое будет показываться в качестве обложки игры.
          text String Опционально. Краткое описание игры или таблицы рекордов в сообщении с игрой. Может быть автоматически отредактировано, чтобы показывать текущую таблицу рекордов для игры при вызове ботом метода setGameScore, или ручном редактировании методом editMessageText. 0-4096 символов.
          text_entities Массив объектов MessageEntity Опционально. Сущности в сообщении, типа имён пользователей, ссылок, команд и т. д.
          animation Animation Опционально. Анимация, которая будет показана в опиании игры в сообщении.
          Animation

          Чтобы сообщение с игрой выглядело более привлекательно, вы можете загрузить для игры анимацию с геймплее. Этот объект представляет собой файл анимации, который будет отображён в сообщении с игрой.

          Поле Тип Описание
          file_id String Уникальный идентификатор файла
          thumb PhotoSize Опционально. Превью анимации, заданное отправителем
          file_name String Опционально. Название файла анимации, заданное отправителем
          mime_type String Опционально. MIME-тип файла анимации, заданное отправителем
          file_size Integer Опционально. Размер файла/td>
          CallbackGame

          Заглушка, пока не содержит никакой информации.

          setGameScore

          Используйте этот метод, чтобы обновить игровой счёт определённого пользователя. Если сообщение было отправлено ботом, вернёт отредактированное сообщение Message, иначе True. Вернёт ошибку, если вы попытаетесь установить новый счёт меньше, чем текущий.

          Параметры Тип Обязательный? Описание
          user_id Integer Да Идентификатор пользователя
          score Integer Да Новый счёт, больше нуля
          chat_id Integer или String Нет Необходим, если не указан inline_message_id. Уникальный идентификатор чата или имя пользователя канала (в формате @channelusername ).
          message_id Integer Нет Необходим, если не указан inline_message_id. Уникальный идентификатор отправленного сообщения
          inline_message_id String Нет Необходим, если не указан chat_id или inline_message_id. Идентификатор встроенного сообщения
          edit_message Boolean Нет Передайте True, чтобы в сообщение была автоматически встроена таблица рекордов
          getGameHighScores

          Используйте этот метод, чтобы получить данные для таблицы рекордов. Этот метод возвращает счёт указанного пользователя и нескольких его соседей по таблице. В случает успеха вернёт массив объектов GameHighScore.

          Параметры Тип Обязательный? Описание
          user_id Integer Да Идентификатор пользователя
          chat_id Integer или String Нет Необходим, если не указан inline_message_id. Уникальный идентификатор чата или имя пользователя канала (в формате @channelusername ).
          message_id Integer Нет Необходим, если не указан inline_message_id. Уникальный идентификатор отправленного сообщения
          inline_message_id String Нет Необходим, если не указан chat_id или inline_message_id. Идентификатор встроенного сообщения
          GameHighScore

          Этот объект представляет собой один из рядов таблицы рекордов игры.

          Поле Тип Описание
          position Integer Место в таблице результатов
          user User Пользователь
          score Integer Счёт

          Сайт про Telegram на русском (неофициальный).

          Здесь собраны приложения на базе MTProto, переведена некоторая документация с официального сайта, а также работает Webogram.

          Всё, о чём должен знать разработчик Телеграм-ботов

          Вы вряд ли найдете в интернете что-то про разработку ботов, кроме документаций к библиотекам, историй «как я создал такого-то бота» и туториалов вроде «как создать бота, который будет говорить hello world». При этом многие неочевидные моменты просто нигде не описаны.

          Как вообще устроены боты? Как они взаимодействуют с пользователями? Что с их помощью можно реализовать, а что нельзя?

          Подробный гайд о том, как работать с ботами — под катом.

          Статья обновлена в январе 2022

          Обновлена информация об id пользователей и чатов: теперь их нельзя хранить в 32-битном типе чисел.

          Добавлен раздел о сообщениях от лица групп и каналов

          Обновлена информация о различных меню команд для отдельных чатов и пользователей.

          Добавлена информация о спойлерах в разметке сообщений.

          Добавлен раздел об обновлениях Bot API.

          Содержание

          Начало работы

          Telegram API vs Telegram Bot API

          Рассказываю по порядку.

          Телеграм использует собственный протокол шифрования MTProto. MTProto API (он же Telegram API) — это API, через который ваше приложение Телеграм связывается с сервером. Telegram API полностью открыт, так что любой разработчик может написать свой клиент мессенджера.

          Для написания ботов был создан Telegram Bot API — надстройка над Telegram API. Перевод с официального сайта:

          Чтобы использовать Bot API, вам не нужно ничего знать о том, как работает протокол шифрования MTProto — наш вспомогательный сервер будет сам обрабатывать все шифрование и связь с Telegram API. Вы соединяетесь с сервером через простой HTTPS-интерфейс, который предоставляет простую версию Telegram API.

          Среди упрощений Bot API: работа через вебхуки, упрощенная разметка сообщений и прочее.

          Почему-то мало кто знает о том, что боты могут работать напрямую через Telegram API. Более того, таким образом можно даже обойти некоторые ограничения, которые даёт Bot API.

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

          На чём пишут Телеграм-ботов

          Бот должен уметь отправлять запросы Телеграм-серверу и получать от него апдейты (updates, обновления).

          Как получать апдейты в Bot API

          Получать апдейты можно одним из двух способов:

          Поллинг — просто регулярно отправлять запрос к серверу Телеграма для получения обновлений,

          Вебхук — сделать так, чтобы Телеграм сам отправлял запросы по нужному URL.

          Конечно, удобнее использовать библиотеки, чем делать http-запросы «руками».

          Если вы попробуете загуглить, как написать Телеграм-бота на Python, вам предложат воспользоваться библиотеками python-telegram-bot и telebot. Но не стоит.

          Ну, если вы только хотите познакомиться с разработкой ботов и написать своего hello-world-бота, то можете, конечно использовать и их. Но эти библиотеки могут далеко не всё. Среди разработчиков ботов лучшей библиотекой для ботов на Python считается aiogram. Она асинхронная, использует декораторы и содержит удобные инструменты для разработки. Ещё был хороший Rocketgram, но он давно не обновлялся.

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

          Если же вы хотите использовать Telegram API, то можете воспользоваться Python’овскими Telethon и Pyrogram.

          Пример кода бота

          Если вы хотите получить какое-то представление о том, как вообще выглядит код бота, вот вам пример использования на aiogram с его странички на GitHub:

          Этот бот будет отвечать на команды /start и и /restart.

          Создание бота

          Единственная информация о Телеграм-ботах, которой в интернете полным-полно: как создать бота. Это делается через специального бота BotFather. Когда вы создадите бота, BotFather даст вам его токен. Токен выглядит примерно так: 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw . Именно с помощью токена вы сможете управлять ботом.

          Один пользователь может создать до 20 ботов.

          В BotFather удобно управлять ботами своими командой /mybots .

          Юзернеймы

          При создании бота нужно выбрать юзернейм. После этого поменять его будет очень сложно.

          Как поменять юзернейм бота

          Если у вас есть бот, и вы хотите дать ему более короткий юзернейм (который может быть занят неработающим ботом), то вы, теоретически, можете это сделать через @BotSupport.

          Для этого бот должен (внезапно) быть рабочим, а также поддерживать английский язык.

          Принято использовать такой формат обращения в поддержку:

          Если вы везунчик 9999 lvl — вам ответят.

          Юзернейм бота выглядит как обычный юзернейм, но он должен заканчиваться на «bot».
          Вы могли видеть ботов с именами @pic, @vid, @sticker, @gamee — это официальные боты Телеграма. Им можно нарушать все правила ��

          Очень многие юзернеймы уже заняты. Свободных коротких юзернеймов осталось очень мало. И что самое грустное: почти все эти боты мертвы. Просто не отвечают на сообщения. Наверное, это просто разные любопытные люди хотят сделать бота, создают его, а потом забивают. У меня самого есть несколько лежащих ботов. Так что, думаю, лимит в 20 ботов на одного владельца вполне оправдан ��

          Оформление бота

          Открыв бота, пользователи могут увидеть его профиль.

          Оформление бота настраивается в BotFather: меню /mybots → Edit Bot . Там можно изменить:

          Описание (Description) — это текст, который пользователи будут видеть в начале диалога с ботом под заголовком «Что может делать этот бот?»

          Информация (About) — это текст, который будет виден в профиле бота.

          Аватарка. Аватарки ботов, в отличие от аватарок пользователей и чатов, не могут быть анимированными. Только картинки.

          Команды — тут имеются ввиду подсказки команд в боте. Подробнее о командах ниже.

          Inline Placeholder — об инлайн-режиме см. ниже.

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

          Сообщения и чаты

          Запуск бота пользователем

          Когда пользователь впервые открывает бота, он видит кнопку «Запустить» или «Начать» (зависит от платформы пользователя), на английском — «Start». Нажимая на эту кнопку, он отправляет команду /start .

          Таким образом, первое сообщение от пользователя — это всегда /start (либо /start с параметрами, об этом ниже в разделе «Диплинки»).

          . если пользователь использует официальный клиент

          На стороне сервера это не проверяется, поэтому теоретически пользователь может отправить боту любое сообщение через Telegram API.

          Сообщения

          Понятно, что главная функция бота — отправлять и получать сообщения.

          И то, и другое можно делать со всеми видами сообщений (фото и видео, файлы, опросы, голосовые сообщения и т. д.).

          В Телеграме можно делиться файлами до 2 ГБ, но в Bot API более жесткие лимиты: боты могут скачивать файлы до 20 МБ и отправлять файлы до 50 МБ.

          Работа с файлами в Bot API

          Если бот уже загрузил файл на сервер Телеграма, то он может использовать file_id, чтобы отправлять этот файл.

          Загружать файл на сервер можно в том числе и по URL файла.

          Куда может писать бот

          Бот может писать в личку только тем пользователям, которые его запустили. Пользователь может заблокировать бота, и тогда бот снова не сможет ему писать.

          Боты не могут писать другим ботам.

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

          В группе боту можно дать права администратора, чтобы он мог выполнять действия админов.

          В одной группе может быть до 20 ботов. В публичные группы (группы с юзернеймом) ботов могут добавлять только админы.

          Также бота можно добавить в канал, причем только как администратора. Самый частый способ использования ботов в каналах — добавление кнопок под постами («лайки», ссылки и прочее).

          Как боты добавляют кнопки

          У админа канала может быть специальное право: «Редактирование чужих публикаций». С помощью него боты редактируют посты, добавляя к ним кнопки.

          Подробнее о кнопках тоже ниже.

          Супергруппы

          На самом деле многие группы в Телеграме являются супергруппами.

          Почему так? Раньше было четкое разделение на группы и супергруппы. По задумке, супергруппы — это группы для сообществ. Супергруппы могут иметь больше участников, публичные ссылки и другие плюшки.

          Со временем, видимо, решили, что это неудобная концепция. Теперь обычная группа становится супергруппой, когда у группы меняются какие-нибудь настройки (подробнее тут). Вот такой костыль.

          В этой статье под группами я подразумеваю и супергруппы, и обычные группы.

          Супергруппу нельзя обратно превратить в группу. С точки зрения API супергруппа устроена так же, как и канал. Важное отличие супергрупп от обычных групп состоит в нумерации сообщений: о нём чуть ниже.

          id пользователей и чатов

          У каждого пользователя, бота, группы, канала в Телеграме есть собственный id. Различать чаты в коде бота следует именно по id, потому что он никогда не меняется.

          В токене бота первая часть — это его id. Например, токен 110201874:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw принадлежит боту с id 110201874 .

          В Bot API перед id супергрупп и каналов пишется -100. Так, id 1356415630 превращается в -1001356415630 .

          Не следует хранить id пользователей и чатов в 32-битном типе числа: теперь id могут превышать 2 31 -1.

          id сообщений

          Каждое сообщение в Телеграме имеет свой id. Это относится и к системным сообщениям (пользователь зашел в группу, изменилось название группы и т. д.)

          Через Telegram API боты могут получать по запросу сообщения в любом чате по их id.

          id сообщений в супергруппах и каналах уникальны для чата: первое сообщение в чате имеет номер 1, второе имеет номер 2 и так далее.

          id сообщений в личных сообщениях и обычных группах работают по другому. Там, можно сказать, нумерация сквозная: id сообщения уникально для каждого отправившего его пользователя. Так, первое сообщение от пользователя во всех личках и группах имеет номер 1, второе сообщение от того же пользователя имеет номер 2 и так далее.

          Видимость сообщений в группах

          Обычно бот должен реагировать именно на команды. Телеграм не уведомляет бота об остальных сообщениях, и это гарантирует приватность переписки.

          Но если боту нужно видеть все сообщения в группе (например, если это чат-бот или антиспам-бот), для него можно отключить Privacy mode.

          Privacy mode — настройка в BotFather, которая по умолчанию включена. В таком режиме бот в группах видит только такие сообщения:

          Сообщения с упоминанием бота,

          Ответы на сообщение бота, ответы на ответы и так далее,

          Команды — о них в следующем пункте.

          А если Privacy mode выключен, то бот видит все сообщения в группе.

          Если бот — админ в группе, то он в любом случае видит все сообщения.

          Бот, работающий через Bot API, в любом случае не будет видеть сообщения от других ботов.

          Бот видит не все сообщения

          Бот видит не все сообщения Я включил Privacy mode, а он не работает

          Нужно удалить бота из группы и добавить заново.

          Недавно был найден баг: боты не могли видеть некоторые сообщения от юзеров, если сообщения выглядят как команды с юзернеймом пользователя на конце.

          Это могло нарушить работу антиспам- и других ботов.

          Сейчас баг уже исправлен.

          Сообщения от лица групп и каналов

          В группах могут быть не только сообщения от пользователей, но и:

          Сообщения в группе из привязанного канала (с точки зрения API это пересланные сообщения)

          Сообщения от лица группы от анонимных администраторов той же группы

          Сообщения от лица публичных каналов от любых пользователей

          Учитывайте это при разработке ботов для групп.

          Команды

          Часто используемый способ «общения» пользователей с ботом — команды. Команды начинаются на «/» и состоят из латинских букв (можно использовать цифры и нижние подчеркивания).

          Команды подсвечиваются как ссылки: нажатие отправляет команду в чат.

          В группах, чтобы различать команды от разных ботов, Телеграм предлагает ставить в конце команды юзернейм бота. Например: /start@examplebot .

          В BotFather можно указать подсказки команд для бота. Он будут отображаться при вводе «/» и команд. Если есть подсказки, рядом с кнопкой «Отправить» появляется кнопка для открытия меню команд.

          Если в подсказках команд есть /help , в профиле бота появляется кнопка «Помощь с ботом». Нажатие на кнопку отправляет эту команду.

          Если в подсказках команд есть /settings , в профиле бота появляется кнопка «Настройки бота». Нажатие на кнопку отправляет эту команду.

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

          Разметка сообщений

          Как вы, наверное, знаете, сообщения в Телеграме могут содержать не только обычный текст, но и жирный, курсив и др. В Bot API разметку сообщений можно делать в HTML и Markdown.

          Разметка в Telegram API

          В Telegram API для разметки надо вместе с сообщением передавать entities (MessageEntityBold, MessageEntityItalic и так далее). Хорошие библиотеки сами превращают HTML/Markdown в текст и entities.

          Способы выделения текста:

          Жирный текст

          Моноширинный текст («в строке» и «блоком»)

          Спойлер — текст, который показывается только после нажатия на плашку

          Упоминание пользователя — текст, похожий на ссылку, клик по которому открывает профиль пользователя. Если упомянуть в группе её участника, он получит уведомление.
          Чтобы вставить в сообщение упоминание пользователя, в Bot API нужно встроить ссылку на tg://user?id=123456789.

          Кнопки
          Инлайн-кнопки

          Бот может оставлять кнопки под своими сообщениями.

          Кнопки под сообщениями (они же inline keyboards / inline buttons) в основном бывают трёх видов:

          URL button — кнопка с ссылкой.

          Callback button. При нажатии на такую кнопку боту придёт апдейт. С созданием кнопки можно указать параметр, который будет указан в этом апдейте (до 64 байтов). Обычно после нажатий на такие кнопки боты изменяют исходное сообщение или показывают notification или alert.

          Switch to inline button. Кнопка для переключения в инлайн-режим (об инлайн-режиме см. ниже). Кнопка может открывать инлайн в том же чате или открывать меню для выбора чата. Можно указать в кнопке запрос, который появится рядом с никнеймом бота при нажатии на кнопку.

          Login URL button — специальная кнопка для авторизации пользователей на сайте. Использовалась, например, в официальном боте @discussbot (до добавления нативных комментариев в Телеграм).

          Callback game button — кнопка для открытия HTML-игры. См. пункт «HTML-игры».

          Pay button — кнопка для платежей. См. пункт «Платежи через ботов».

          Клавиатурные кнопки

          Есть другой тип кнопок: keyboard buttons. Они отображаются вместо клавиатуры как подсказки. При нажатии на такую кнопку пользователь просто отправит этот текст.

          При этом в личных чатах с помощью кнопки можно:

          Запросить номер телефона пользователя,

          Запросить геолокацию пользователя,

          Открыть у пользователя меню создания опроса.

          Есть опция resize_keyboard, которая отвечает за то, изменять ли высоту этой «клавиатуры из кнопок». По умолчанию она, почему-то, выключена, и тогда высота клавиатуры стандартная большая. Получаются кнопки как на этой картинке:

          Чтобы показать клавиатурные кнопки, бот должен отправить сообщение. Можно отправить клавиатуру, которая свернётся (но не пропадёт) после нажатия на кнопку.

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

          Для пользователей, юзернеймы которых были в тексте сообщения,

          Если это ответ на другое сообщение: для пользователя, который его отправил.

          Ещё о кнопках

          Оба типа кнопок могут составлять несколько рядов, в каждом из которых по несколько кнопок. Ограничения: в ряду может быть до 8 кнопок, а всего с сообщением до 100 кнопок.

          При отправке сообщения можно выбрать одно (но не больше) из следующих действий:

          Добавить к сообщению инлайн-кнопки,

          Показать клавиатурные кнопки,

          Убрать все клавиатурные кнопки,

          Force reply: автоматически заставить пользователя ответить на сообщение. Так произойдёт то же самое, что и при нажатии пользователем кнопки «Ответить». Это нужно для того, чтобы бот мог общаться с пользователями в группах, не нарушая Privacy mode.

          Таким образом, нельзя показать оба типа кнопок одновременно.

          Взаимодействие с ботом

          Ссылки на бота

          Юзернеймы ботов работают так же, как и любые другие юзернеймы в Телеграме: бота @examplebot можно открыть по ссылке t.me/examplebot.

          Также существует прямая ссылка: tg://resolve?domain=examplebot

          Подробнее о ссылках tg://

          Такие ссылки могут не только заменять ссылки t.me, но и задавать свои действия. Например, tg://settings открывает настройки.

          Список известных таких ссылок есть канале @DeepLink.

          Ссылка на добавление в группу

          По ссылке t.me/examplebot?startgroup=true у пользователя откроется меню: выбор группы для добавления бота.

          Прямая ссылка: tg://resolve?domain=examplebot&startgroup=true

          Диплинки

          По ссылке t.me/examplebot?start=<ваш текст> пользователь может запустить бота с каким-то стартовым параметром ( <ваш текст> ).

          Что происходит, когда пользователь переходит по такой ссылке:

          Бот открывается как обычно.

          Отображается кнопка «Запустить», даже если пользователь уже запускал бота.

          Пользователь нажимает на кнопку и видит сообщение /start (всё как обычно).

          Боту вместо этого приходит сообщение /start <ваш текст>

          Так бот может отреагировать на запуск не как на обычный «/start», а другим способом.

          Часто диплинки используются для реферальных программ (в качестве параметра можно передавать id пользователя, который поделился ссылкой). Есть и другие применения.

          Прямая ссылка: tg://resolve?domain=examplebot&start=<ваш текст>

          Инлайн-режим

          Инлайн-режим (inline mode) — это специальный режим работы бота, с помощью которого пользователь может использовать бота во всех чатах.

          Выглядит это так: пользователь вводит юзернейм бота в поле для ввода сообщения. После юзернейма можно ещё записать запрос (текст до 256 символов).

          Появляется менюшка с результатами. Выбирая результат, пользователь отправляет сообщение.

          Инлайн-режим можно включить в BotFather, там же можно выбрать плейсхолдер вместо стандартного «Search. «

          В группе можно запретить использовать инлайн всем или некоторым участникам. В официальных приложениях Телеграм это ограничение объединено с ограничением на отправку стикеров и GIF.

          Результаты инлайн-режима

          Результаты можно отображать двумя способами:

          Сеткой. Удобно для выдачи картинок.

          Вертикальным списком. Удобно для выдачи текста.

          Можно совмещать два типа, но корректно отображается это только на Telegram Desktop.

          Приватность и геопозиция в инлайне

          Когда пользователь вызывает инлайн-режим, бот не может получить никакую информацию о контексте, кроме информации о пользователе. Таким образом, бот не может узнать ни чат, в котором вызвали инлайн, ни сообщение, на которое пользователь отвечает.

          Но зато если включить в BotFather настройку «Inline Location Data», то бот сможет видеть геопозицию пользователей, когда они используют инлайн (на мобильных устройствах). Перед этим у пользователей показывается предупреждение.

          Inline feedback

          Inline feedback — это апдейты о выбранных инлайн-результатах. Включаются через BotFather.

          Предполагается использование inline feedback для сбора статистики, но не всегда он используется так. Inline feedback позволяет «подгружать» не все результаты сразу, а только выбранный. Например, если бот используется для поиска музыки, то он может загружать не все песни сразу, а только одну.

          Важный момент: если вы получили апдейт об отправке инлайн-сообщения, то вы можете его редактировать, только если к нему прикреплены инлайн-кнопки. (Если кнопок нет, то в апдейте не указывается id инлайн-сообщения, по которому происходит редактирование).

          Создание наборов стикеров

          Боты (и только боты!) могут создавать наборы стикеров. При этом каждый набор стикеров должен принадлежать какому-то пользователю. Посмотреть свои наборы стикеров пользователь может с помощью бота @Stickers.

          Платежи через ботов

          Телеграм предоставляет ботам возможность принимать платежи от пользователей. Это делается через провайдеров ЮMoney, Сбербанк, Stripe и ещё 7.

          Эта возможность используются редко, потому что для использования провайдеров нужно юридическое лицо.

          UPD 04.2021. В новом обновлении появилось больше возможностей платежей для разработчиков. Теперь боты могут отправлять платежи не только в лс, но и в группы и в каналы. Это позволяет сделать из канала «витрину», на которой можно сразу купить товар. Вы можете посмотреть, как это выглядит, в официальном демо-канале.

          HTML-игры в ботах

          Боты могут позволять пользователям играть в HTML5-игры в чатах. Бот может отправлять сообщения-игры или создавать их через инлайн-режим. Как это работает, можно посмотреть на примере официального @gamebot.

          Telegram Login Widget

          Вы можете добавить на свой сайт авторизацию через Телеграм. Процесс авторизации будет проходить так:

          Пользователь должен будет ввести свой номер телефона.

          Бот Telegram попросит подтвердить вход.

          Пользователь авторизуется и нажимает на «Принять» на сайте.

          Telegram Login Widget не связан с Login URL button (см. раздел про кнопки выше), а является его альтернативой.

          Разработка ботов

          Какие апдейты можно получать

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

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

          В Telegram API бот может чуточку больше: он может получать сообщения по id, получать список участников группы и прочее.

          Получение апдейтов: Bot API vs Telegram API

          Если вы получили апдейт в Bot API, то второй раз вы его уже не получите.

          В Telegram API это не так: пользователь может пользоваться мессенджером через несколько клиентов, каждый из которых должен получать апдейты.

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

          Ограничения Bot API не позволяют сделать то же самое.

          Обновления API

          Telegram API и Telegram Bot API обновляются с появлением новых фич в Телеграме. Все обновления Bot API описаны на отдельной странице в документации и в официальном канале BotNews.

          Лимиты

          Конечно, на запросы к серверу существуют лимиты. В Bots FAQ на сайте Telegram названы следующие:

          Не больше одного сообщения в секунду в один чат,

          Не больше 30 сообщений в секунду вообще,

          Не больше 20 сообщений в минуту в одну группу.

          Эти лимиты не строгие, а примерные. Лимиты могут быть увеличены для больших ботов через поддержку.

          Другие известные ограничения в Telegram собраны на limits.tginfo.me — см. раздел про ботов.

          Рассылка по пользователям

          Ниже в Bots FAQ сказано, что Bot API не позволяет рассылать сообщения всем юзерам одновременно и что в будущем, может быть, они что-то для этого сделают. И написано это уже несколько лет.

          Они советуют растянуть рассылку на длительное время (8-12 часов) и замечают, что API не позволит отправлять сообщения более чем

          30 пользователям в секунду.

          Смена владельца бота

          Осенью 2020 года появилась возможность передавать ботов другому человеку. Это можно сделать в настройках бота в BotFather. Для этого на вашем аккаунте должна быть включена двухфакторная авторизация — не менее, чем за 7 дней до передачи. Передать бота можно только пользователю, который что-либо ему писал.

          Локальный сервер Bot API

          Также осенью 2020 года исходники Bot API выложили на GitHub. Теперь вы можете поднять собственный сервер Bot API. На GitHub перечислены следующие преимущества:

          Скачивание файлов с сервера без ограничения (ограничение на отправку файлов пользователями в Телеграме — 2 ГБ),

          Загрузка файлов на сервер до 2000 МБ,

          Загрузка файлов на сервер с помощью локального пути и URI файла,

          Использование HTTP URL для вебхука,

          Использование любого локального IP-адреса для вебхука,

          Использование любого порта для вебхука,

          Возможность увеличить максимальное число соединений до 100000,

          Получение локального пути файла вместо загрузки файла с сервера.

          Юзерботы

          В начале статьи я рассказывал о том, что такое Telegram API и Telegram Bot API.

          Telegram API используется не только для ботов — тогда в чём проблема управлять аккаунтами пользователей, как ботами? Люди это делают. Кто-то автоматически ставит текущее время себе на аватарку, кто-то скриптом реагирует на свои сообщения как на команды, кто-то сохраняет сообщения из публичных групп и каналов. Всё это называют юзерботами.

          Юзерботов следует использовать аккуратно: за большую подозрительную активность аккаунт могут ограничить или забанить.

          Заключение

          Я постарался собрать в одном месте и структурировать информацию о всех возможностях Телеграм-ботов. Большое спасибо vanutp, NToneE и Grinrill за помощь с фактами. Если мы что-то забыли — пишите, исправлю.

          Я специально не разделял большую статью на несколько постов, чтобы можно было быстро найти нужную информацию. К тому же, в начале статьи есть её содержание. Так что можете сохранить её к себе и использовать как справочник ��

          Вообще интерфейс бота (то есть интерфейс чата) имеет много ограничений. Но плохо ли это? Действительно удобнее использовать инструмент, когда это часть привычной среды. Я часто прямо в переписке нахожу нужную картинку или информацию с помощью инлайн-ботов. Как заядлый пользователь Телеграма, я люблю использовать ботов. И создаю ботов. И вы создавайте.

          Ошибки в Телеграм

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

          Самые распространенные ошибки в Telegram делятся на три типа:

          1. Уведомления, сигнализирующие об ошибке. Сообщения такого рода приходят чаще всего, и решить их не так сложно. В самом уведомлении обычно в виде цифрового или текстового кода пишется, в чем проблема
          2. Отказ мессенджера работать при запуске. Тут уже чуть сложнее, но существует две причины, по которым это происходит: проблемы на сервере Telegram или отсутствие каких-то системных файлов на устройстве.
          3. Сбой в работе мессенджера. К этому пункту относятся все остальные ошибки, из-за которых Telegram не может работать исправно.

          Начнем по порядку. 1. Уведомления, сигнализирующие об ошибке.

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

          Ошибка 303 – данные некорректно обработаны во время работы с программным интерфейсом;

          Ошибка 400, 401, 403 – проблемы внутренние;

          Ошибка 500 – проблемы с сервером.

          Ошибки, выражающиеся в текстовых кодах:

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

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

          2. Отказ мессенджера работать при запуске.

          Такая проблема считается одной из распространенных. Случаев бывает несколько и стоит определиться, какой подходит именно вам:

          1. Если при запуске приложения всплывает — connecting, то значит проблема на сервере и с этим ничего не сделать. Стать зайти чуть позже.
          2. Если появляется окно Start Messeging при входе с компьютера, но ничего не происходит, то стоит убедиться – правильно ли скачана версия для операционной системы. Если все верно, то стоит переустановить приложение, но до этого удалив все, что с ним связано. Мешать приложению может и антивирус на компьютере. Возможно стоит отключить его на время, а мессенджер запустить от имени администратора.
          3. Сбой в работе мессенджера.

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

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

          «В приложении не меняется время». Такая ошибка тоже может возникать. Она связана с неправильным установлением времени на смартфоне. Чтобы убрать эту ошибку в настройках «даты и времени» убрать галочку в пункте «время по сети», а также посмотреть, правильно ли определен часовой пояс.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *