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 — ссылка на профиль пользователя
Макросы — общая документация по макросам