Skip to content

Latest commit

 

History

History
106 lines (78 loc) · 4.58 KB

README.md

File metadata and controls

106 lines (78 loc) · 4.58 KB

Telegram бот AgeDefiner на Java

English version is here

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

Бот работает как интерпретатор команд. Поэтому с ним нужно общаться используя его синтаксис.

Описание возможностей и синтаксиса бота с примерами


  1. Переменные задаются так

Общий случай:

-config-alias VarName = Expression -m"Description"

  • -config-alias - ключевое слово, означающее что нужно создать пользовательскую переменную
  • VarName - допустимое имя переменной (символы 'a..Z' и цифры)
  • Expression - Любое допустимое выражение. Может содержать функции Age(), Diff() или пользовательские переменные. И арифмитические операции, например: Age() - Diff() Variable. Определение описывается следующим образом:
    • expression : factor ( ( ' ' | '-' ) factor )*
    • factor : var | func
    • func : Age(date) | Diff(date, date)
    • var : NAME
    • date : dd.mm.yyyy
  • -m - опциональный ключ, сразу за ним должно следовать описание в кавычках и без пробелов "Description". Его цель описать смысл этого выражения именно для вас

Примеры:

-config-alias Neo = Age(02.09.1964) -m"Возраст Киану Ривза"
-config-alias T800 = Age(30.07.1947) -m"Возраст Арнольда"
-config-alias aDiff = Diff(02.09.1964, 30.07.1947) -m"Разница между Шварцом и Киану"

  • Neo - это переменная. Регистр не имеет значения
  • Age(02.09.1964) - функция (формат даты только dd.mm.yyyy)
  • -m"Возраст Киану Ривза" - описание (опциональный параметр, обязательно в кавычках)
  1. Можно вызывать переменные или функции
> Neo
Возраст Киану Ривза:
  58 years 1 month 17 days //на момент 19.10.2022
> aDiff
Разница между Шварцом и Киану:
  17 years 1 month 3 days
> Diff(31.03.1999, 02.09.1964) -m"Возраст Киану на момент релиза Матрицы"
Возраст Киану на момент релиза Матрицы:
  34 years 6 months 29 days

Доступные функции: Age(d1) и Diff(d2, d1). Age -> Diff(Now(), d1)

  1. Можно складывать и вычитать
> Diff(11.11.1918, 28.07.1914)   Diff(02.09.1945, 01.09.1939) -m"Длительность мировых войн"
Длительность мировых войн
  10 years 3 months 15 days
> T800 - Neo -m"Разница между Шварцом и Киану"
Разница между Шварцом и Киану:
  17 years 1 months 3 days
  1. Поддерживается многострочный ввод
> Neo
> Diff(31.03.1999, 02.09.1964) -m"Возраст Киану на момент релиза Матрицы"
Возраст Киану Ривза:
  58 years 1 month 17 days //на момент 19.10.2022
Возраст Киану на момент релиза Матрицы:
  34 years 6 months 29 days
  1. Дополнительные возможности

-config-alias-show Neo - показать ключ Neo

-config-alias-show - показать все ключи

-config-alias-delete aDiff - удалить ключ aDiff

-config-alias-delete -all - удалить все ключи

Локальный запуск


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

BOT_USER_NAME = <BotUserName>
BOT_TOKEN = <Token>