EnotPRO Logo EnotPRO

tgdate

Макрос !{tgdate} определяет приблизительную дату регистрации аккаунта Telegram по его ID.

Telegram выдаёт ID новым пользователям примерно по возрастанию, поэтому по номеру ID можно оценить, когда аккаунт был создан. Оценка строится по таблице известных дат за 2013–2025 годы.

Где используется:

  • Проверка «свежести» аккаунта в антиспаме и модерации
  • Приветствия и карточки пользователя
  • Условия в триггерах (через сравнение с текущей датой)

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

⚠️ Важно: Результат — оценка, а не точная дата. Подробнее ниже, в разделе «Точность».

Пример результата:

2022-01-16

Синтаксис

!{tgdate|
  id: ID пользователя;
  path: from;
  output_format: формат;
  output_timezone: часовой пояс;
  tg_format: формат Telegram;
}

Короткая форма (без параметров):

!{tgdate}

В короткой форме макрос показывает дату регистрации отправителя сообщения в формате YYYY-MM-DD.

Параметры

Параметр Тип Обязательный Описание Значение по умолчанию
id Число ❌ Нет ID пользователя (вместо path)
path Строка ❌ Нет Чей ID использовать from
output_format Строка ❌ Нет Формат вывода даты YYYY-MM-DD
output_timezone Строка ❌ Нет Часовой пояс вывода часовой пояс бота
tg_format Строка ❌ Нет Обёртка в <tg-time> для нативной даты

Синонимы параметров те же, что у макроса time: format2 для output_format, timezone2 для output_timezone, format3 для tg_format.

Значения параметра path

Параметр path указывает, чей ID брать из контекста.

Значение Описание
from Отправитель текущего сообщения (значение по умолчанию)
target Целевой пользователь — тот, над кем выполняется действие
reply Автор сообщения, на которое ответили

💡 В обычном сообщении from и target — один и тот же человек. Они расходятся в реакциях, которые работают по ответу, по внешнему сообщению или по списку пользователей. Для модерации обычно нужен path: target — возраст аккаунта нарушителя, а не того, кто вызвал реакцию.

Форматы вывода

Параметр output_format принимает те же форматы, что и макрос time:

Формат Пример результата
YYYY-MM-DD 2022-01-16 (по умолчанию)
DD.MM.YYYY 16.01.2022
MMMM YYYY January 2022
DateOnly 2022-01-16
RFC3339 2022-01-16T00:00:00+03:00
unix 1642291200 (число секунд)

Часовой пояс задаётся так же, как в time — названием (Europe/Moscow, UTC) или смещением (+3, -05:00).

Примеры

Дата регистрации отправителя

!{tgdate}

Результат: 2022-01-16

Дата регистрации по конкретному ID

!{tgdate|id: 805158066}

Результат: 2019-07-15

Дата регистрации того, над кем выполняется действие

!{tgdate|path: target; output_format: 'DD.MM.YYYY'}

Результат: 15.07.2019

Дата регистрации автора сообщения, на которое ответили

!{tgdate|path: reply; output_format: 'MMMM YYYY'}

Результат: July 2019

Только месяц и год

!{tgdate|output_format: 'MM.YYYY'}

Результат: 01.2022

В виде Unix timestamp

!{tgdate|output_format: unix}

Результат: число вида 1642291200 — удобно для вычислений в макросе math

Нативная дата Telegram

!{tgdate|tg_format: D}

Telegram покажет дату в формате, привычном для языка пользователя.

Сколько аккаунту полных лет

!{math|floor((!{time|output_format:unix} - !{tgdate|output_format:unix}) / 31557600)}

Результат: 4

Запасное значение, если дату получить не удалось

!{tgdate|path: target; default: неизвестно}

Точность

Оценка приблизительная. По известным данным:

Показатель Значение
Ошибка у половины аккаунтов не больше 40 дней
Средняя ошибка 50 дней
У 90% аккаунтов ошибка не больше 104 дня
Старые аккаунты (ID меньше миллиарда) точнее: средняя ошибка 26 дней

Точнее в принципе невозможно: Telegram выдаёт ID не строго последовательно. Встречаются аккаунты с бо́льшим ID, зарегистрированные раньше, чем аккаунты с меньшим.

⚠️ Не используйте макрос там, где нужна достоверная дата — например, для начисления бонусов «за стаж». Для оценки «аккаунт создан только что» он подходит, для юридически значимых решений — нет.

Дата никогда не выходит за разумные границы: не раньше запуска Telegram (14.08.2013) и не позже текущего момента.

Типичные ошибки и их решение

Ошибка Причина Решение
Макрос ничего не выводит В контексте нет нужного пользователя Укажите id явно или другой path
Макрос ничего не выводит ID принадлежит каналу или чату, а не пользователю Макрос работает только с пользователями, используйте default
Дата не того человека По умолчанию берётся отправитель Укажите path: target или path: reply
Дата у всех новых аккаунтов одна ID выходит за пределы таблицы известных дат Так и задумано: оценка ограничена текущей датой

Смотрите также

time — форматы даты и времени, часовые пояса

user — ссылка на профиль пользователя

Макросы — общая документация по макросам

© 2025 EnotPRO. Все права защищены.