рдЯреЗрд▓реАрдЧреНрд░рд╛рдл: рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдХреЗ рд▓рд┐рдП рдХреЛрдЯрд▓рд┐рди рдбреА.рдПрд╕.рдПрд▓.

рд▓реЛрдЧреЛ


рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдмреЙрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдЬрд╛рд░реЛрдВ рд▓реЗрдЦреЛрдВ рдкрд░ред рд╡рд┐рд╖рдп рдирдП рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИред


рд▓реЗрдХрд┐рди рдЯреЗрд▓реАрдЧреНрд░рд╛рдо, рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдмреЙрдЯреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдврд╛рдВрдЪрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдХрдЯ рдХреЗ рддрд╣рдд рд╕рд╛рдмрд┐рдд рдХрд░реВрдВрдЧрд╛ред


рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛


2015 рдореЗрдВ, рд░реВрд╕реА рд░реВрдмрд▓ рдмреБрдЦрд╛рд░ рдореЗрдВ рдерд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдбреЙрд▓рд░ рдореЗрдВ рдмрдЪрдд рдереА рдФрд░ рдореИрдВрдиреЗ рд╣рд░ рдкрд╛рдВрдЪ рдорд┐рдирдЯ рдореЗрдВ рдореБрджреНрд░рд╛ рдХреЛ рдореЗрд░реА рдЬрд╝рд░реВрд░рдд рдХреА рджрд░ рдкрд░ рдмреЗрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рдХрд┐рдпрд╛ред рдмреБрдЦрд╛рд░ рдШрд╕реАрдЯрд╛, рдореИрдВ рдердХ рдЧрдпрд╛ рдФрд░ рдПрдХ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдмреЙрдЯ ( @TinkoffRatesBot ) рд▓рд┐рдЦрд╛, рдЬреЛ рдЖрдкрдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдирд┐рдордп рджрд░ рдереНрд░реЗрд╢реЛрд▓реНрдб (рдЕрдкреЗрдХреНрд╖рд┐рдд) рдореВрд▓реНрдп рддрдХ рдкрд╣реБрдВрдЪрддреА рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдореИрдВ рдЗрд╕ рдХрд╛рд░реНрдп рд╕реЗ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реБрдЖред рдмреЛрдерд╛ рдиреЗ рдмрд╣реБрдд рдЬрд▓реНрджреА рд▓рд┐рдЦрд╛, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рд╕рдВрддреБрд╖реНрдЯрд┐ рдирд╣реАрдВ рдорд┐рд▓реАред


рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдирд╣реАрдВ рд╣реИ рдФрд░ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереАред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдореЗрдВ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдФрд░ рдореБрдЭреЗ рдпрд╣ рднреА рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдореЗрдВ рдкреВрд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ (рд╡рд┐рд╖рдп рдореЗрдВ, рдХреЛрдб рдореЗрдВ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд╕рд╛рде рдШреГрдгрд┐рдд), рдЬрд┐рд╕рдиреЗ рдЬреАрдердм рдкрд░ рдПрдХ рд╣рдЬрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╕рд┐рддрд╛рд░реЗ рдЕрд░реНрдЬрд┐рдд рдХрд┐рдП рд╣реИрдВред


рдореЗрд░реЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЪреБрдиреМрддреА рдкрдЯрдХрдерд╛ рдкреНрд░рдгрд╛рд▓реА рдереА: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдЖрджреЗрд╢ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "/ рдЯреИрдХреНрд╕реА", рдмреЙрдЯ рдЙрд╕реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкреВрдЫрддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдЙрддреНрддрд░ рдХреЛ рдорд╛рдиреНрдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмрд╛рдж рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп "рдлреЙрд░реНрдо" рдмрдирддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдзрд┐ рджреА рдЬрд╛рддреА рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред
рдореИрдВрдиреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдХрдХреНрд╖рд╛рдУрдВ рдХреА рд╕рдВрд░рдЪрдирд╛, рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рд╕реНрддрд░, рдпрд╣ рд╕рдм рдЗрддрдирд╛ рд╡рд┐рд╖рдо рдерд╛ рдХрд┐ рдпрд╣ рджреЗрдЦрдиреЗ рдореЗрдВ рдХрдбрд╝рд╡рд╛ рдерд╛ред рдореБрдЭреЗ рдЗрд╕ рд╕рд╡рд╛рд▓ рд╕реЗ рдкреАрдбрд╝рд╛ рд╣реБрдИ: рдпрд╣ рдХреИрд╕реЗ рдПрдХ рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?


рдореИрдВ рдХреБрдЫ рд╕рд░рд▓, рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ - рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреВрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд╛рддрдЪреАрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЖрдзреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛред


рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐ рдореБрджреНрджрд╛ рдмрд╣реБрдд рддреАрд╡реНрд░ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рд░реНрдп рдкрд╣рд▓реЗ рд╣реА рд╣рд▓ рд╣реЛ рдЪреБрдХрд╛ рд╣реИред рдмрд▓реНрдХрд┐ рдХрднреА-рдХрднреА рдореИрдВ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рдерд╛ред рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдЧреНрд░реВрд╡реА рдбреАрдПрд╕рдПрд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдХреЛрдЯрд▓рд┐рди рдкрд╣реБрдВрдЪреЗ, рддреЛ рд╡рд┐рдХрд▓реНрдк рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ред рдЗрд╕рд▓рд┐рдП рдЯреЗрд▓реАрдЧреНрд░рд╛рдл рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред


рд╣рд╛рдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХреЛрдИ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдирд╣реАрдВ рдереА рдХрд┐ рдЯреЗрд▓реАрдЧреНрд░рд╛рдл рдЬреАрдд рдЬрд╛рдПрдЧрд╛ред рдФрд░ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ рдЯреЗрд▓реАрдЧреНрд░рд╛рдл рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЯреЗрд▓реАрдЧреНрд░рд╛рдл рдЗрд╕ рдЪреБрдиреМрддреА рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛, рдЕрдиреВрдард╛ рддрд░реАрдХрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рд╣реЛрдирд╛ред


рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ?


рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ


рдкрд╣рд▓рд╛ рдХрджрдо рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рднрдВрдбрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реИред рд╢рд╛рдпрдж рдХрд┐рд╕реА рд╕рдордп рдореИрдВ рдЯреЗрд▓реАрдЧреНрд░рд╛рдл рдХреЛ рдорд╛рд╡реЗрди рд╕реЗрдВрдЯреНрд░рд▓ рдпрд╛ рдЬреЗрд╕реЗрдиреНрдЯреЗрд░ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдПред


Gradle
repositories { maven { url "https://dl.bintray.com/ruslanys/maven" } } 

Maven
 <repositories> <repository> <snapshots> <enabled>false</enabled> </snapshots> <id>bintray-ruslanys-maven</id> <name>bintray</name> <url>https://dl.bintray.com/ruslanys/maven</url> </repository> </repositories> 

рдпрд╣ рдЫреЛрдЯреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдорд▓рд╛ рд╣реИред рдЯреЗрд▓реАрдЧреНрд░рд╛рдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдкреНрд░рд┐рдВрдЧ-рдмреВрдЯ-рд╕реНрдЯрд╛рд░реНрдЯрд░ рдирд┐рд░реНрднрд░рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


Gradle
 compile("me.ruslanys.telegraff:telegraff-starter:1.0.0") 

Maven
 <dependency> <groupId>me.ruslanys.telegraff</groupId> <artifactId>telegraff-starter</artifactId> <version>1.0.0</version> </dependency> 

рд╡рд┐рдиреНрдпрд╛рд╕


рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд░рд▓ рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рджреЛ рдпрд╛ рддреАрди рдорд╛рдкрджрдВрдбреЛрдВ рддрдХ рд╕реАрдорд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:


application.properties
 telegram.access-key=123 # тСа telegram.mode=webhook # тСб telegram.webhook-base-url=https://ruslanys.me # тСв telegram.webhook-endpoint-url=/telegram # тСг telegram.handlers-path=handlers # тСд telegram.unresolved-filter.enabled=false # тСе 

  1. рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреА рдХреБрдВрдЬреАред
  2. рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рд╕реЗ рд╕рдВрджреЗрд╢ (рдЕрдкрдбреЗрдЯ) рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ред рдпрд╣ рдпрд╛ рддреЛ рдорддрджрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рд╡реЗрдмрд╣реБрдХред
  3. рдпрджрд┐ рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ "рд╡реЗрдмрд╣реБрдХ" рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдХреА рдЧрдИ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХрд╛ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
  4. рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рд╕рдорд╛рдкрди рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд░рд╛рд╕реНрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝реЙрд░реНрдо рдХрд╛ рдПрдХ рдкрде рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛: /telegram/${UUID} ред рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрддрд╛ рд╡реЗрдм рд╣реБрдХ рдкрддреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрд╛рдо рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╡реЗрдм рд╣реБрдХ рдкрддрд╛ рдЕрдЧрд▓реА рдмрд╛рд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдорддрджрд╛рди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  5. рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдерд┐рдд рд╣реЛрдЧреАред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ handlers рдлрд╝реЛрд▓реНрдбрд░ рд╣реИред
  6. UnresolvedFilter "рд╡рд┐рддрд░рдг" рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рд╣реИред рдЗрд╕ рдШрдЯрдирд╛ рдореЗрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рдВрджреЗрд╢ рдкрд░ рдХреЛрдИ рд╣реИрдВрдбрд▓рд░ рдирд╣реАрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, UnresolvedFilter "рд╕реЙрд░реА, рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖрддрд╛: \ UnresolvedFilter " рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ!


рд╕рдВрдЪрд╛рд▓рдХреЛрдВ


рд╣реИрдВрдбрд▓рд░ (рд╕реНрдХреНрд░рд┐рдкреНрдЯ) рдЯреЗрд▓реАрдЧреНрд░рд╛рдл рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдЪреЗрди рд╕реЗрдЯ рд╣реИред рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрдорд╛рдВрдб, рдЬреИрд╕реЗ "/ рдкреНрд░рд╛рд░рдВрдн", "/ рдЯреИрдХреНрд╕реА", "/ рд╕рд╣рд╛рдпрддрд╛", рдПрдХ рдЕрд▓рдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ / рд╕реНрдХреНрд░рд┐рдкреНрдЯ / рд╣реИрдВрдбрд▓рд░ / рд╣реИрдВрдбрд▓рд░ рд╣реИред


рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреБрдЫ рдЪрд░рдгреЛрдВ (рдкреНрд░рд╢реНрдиреЛрдВ) рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЧреБрдЬрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдлреЙрд░реНрдо рднрд░рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдЪреВрдВрдХрд┐ рдореИрд╕реЗрдВрдЬрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдмрд╛рдд рдХрд░рдиреЗ рдФрд░ рдкреВрдЫрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдХреНрдпрд╛ рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╣ рдХрд░реЗрдЧрд╛ рдХрд┐ рд╡рд╣ рдЖрдкрдХреА рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рдЕрд▓рдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдЧрд╛ред


рдЦреИрд░, рдЕрдВрдд рдореЗрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢рд╛рдЦрд╛ рдХрд░ рд╕рдХрддреА рд╣реИ, рдЕрд░реНрдерд╛рддред рдПрдХ рдкреНрд░рд╢реНрди рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЙрддреНрддрд░ рдмрд╛рдж рдХреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рдЖрджреЗрд╢ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП!


рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди .kts рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рдВрд╕рд╛рдзрди handlers рд╕рд╛рде рд░рдЦреЗрдВ: src/main/resources/handlers/ExampleHandler.kts ред


рдЯреИрдХреНрд╕реА рдХреЙрд▓ рдкрд░рд┐рджреГрд╢реНрдп
 enum class PaymentMethod { CARD, CASH } handler("/taxi", "") { // тСа step<String>("locationFrom") { // тСб question { // тСв MarkdownMessage(" ?") } } step<String>("locationTo") { question { MarkdownMessage(" ?") } } step<PaymentMethod>("paymentMethod") { question { state -> MarkdownMessage("   ?", "", "") // тСг } validation { // тСд when (it.toLowerCase()) { "" -> PaymentMethod.CARD "" -> PaymentMethod.CASH else -> throw ValidationException(",    ") // тСе } } next { state -> null // тСж } } process { state, answers -> // тСз val from = answers["locationFrom"] as String val to = answers["locationTo"] as String val paymentMethod = answers["paymentMethod"] as PaymentMethod // тСи // Business logic MarkdownMessage("""     #${state.chat.id}.   $from  $to.  $paymentMethod. """.trimIndent()) // тСй } } 

рд╕реНрдЯреЗрдкреНрд╕ рдХреА рдХреБрдВрдЬреА рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕реНрдерд┐рд░рд╛рдВрдХ рдореЗрдВ рдирд╣реАрдВ рд▓реА рдЧрдИ рдереАред рдЙрддреНрдкрд╛рджрди рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдЪрд▓рд┐рдП рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ:


  1. рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВред рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЯреАрдо рдХреЗ рдирд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рджреЛ рдЯреАрдореЗрдВ рд╣реИрдВ: "/ рдЯреИрдХреНрд╕реА", "рдЯреИрдХреНрд╕реА"ред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рд╕рдВрджреЗрд╢ рдЗрди рд╢рдмреНрджреЛрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВрдбрд▓рд░ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  2. рд╣рдо рдЪрд░рдгреЛрдВ (рдкреНрд░рд╢реНрдиреЛрдВ) рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЪрд░рдг рдирд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рдж рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЗрд╕ рдХреБрдВрдЬреА ("рд▓реЛрдХреЗрд╢рдирдлреНрд░реЙрдо") рджреНрд╡рд╛рд░рд╛ рдареАрдХ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  3. рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ рддреАрди рдЦрдВрдб рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рдкреНрд░рд╢реНрди рд╕реНрд╡рдпрдВ рд╣реИред рдкреНрд░рд╢реНрди рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рдЕрдиреБрднрд╛рдЧ рд╣реИ рдЬреЛ рд╣рд░ рдХрджрдо рдкрд░ рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрд┐рдирд╛ рдкреНрд░рд╢реНрди рдХреЗ рдПрдХ рдЪрд░рдг рдореЗрдВ рдХреЛрдИ рдЕрд░реНрде рдирд╣реАрдВ рд╣реИред
  4. рдЖрдк рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдкреНрд░рд╢реНрди рднрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреАрдмреЛрд░реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: "рдХрд╛рд░реНрдб" рдпрд╛ "рдХреИрд╢"ред рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, TelegramSendRequest рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ SendRequest рдкреНрд░рддреНрдпрдп рд╕реЗ рдмреЗрд╣рддрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдЬреЛ рдХрд┐ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдореЗрдВ рдПрдХ рдирд┐рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд░реЛрдз рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
    рд╡рд░реНрдЧ рд╕рдВрд░рдЪрдирд╛
  5. рджреВрд╕рд░рд╛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪрд░рдг рдЕрдиреБрднрд╛рдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдорд╛рдирдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреЗрдиреЗрд░рд┐рдХ), рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╕рддреНрдпрд╛рдкрди рдмреНрд▓реЙрдХ рдХреЛ рдареАрдХ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЗрд╕рдХрд╛ рдЪрд░рдг рдорд╛рдирдХреАрдХреГрдд рд╣реИред
  6. рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрд╕рдВрддреЛрд╖рдЬрдирдХ рд╣реИ, рддреЛ рдЖрдк рд╕реНрдкрд╖реНрдЯ рдкрд╛рда рдХреЗ рд╕рд╛рде ValidationException рдХреЛ рдлреЗрдВрдХ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рдХреАрдмреЛрд░реНрдб, рдпрджрд┐ рдпрд╣ рдкреНрд░рд╢реНрди рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
  7. рдЕрдВрддрд┐рдо рдЪрд░рдг рдЕрдиреБрднрд╛рдЧ рдЕрдЧрд▓реЗ рдЪрд░рдг рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдмреНрд▓реЙрдХ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЪрд░рдгреЛрдВ рдХреЛ рдЙрдирдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдКрдкрд░ рд╕реЗ рдиреАрдЪреЗ рддрдХред рд▓реЗрдХрд┐рди рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдмреНрд▓реЙрдХ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдХреЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рддреЛ рдЕрдЧрд▓реЗ рдЪрд░рдг рдХреА рдХреБрдВрдЬреА ( String ) рдпрд╛ "рдирд▓" рдХреЛ рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдФрд░ рдХрджрдо рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдпрд╣ рдХрдорд╛рдВрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
  8. рдЬрдм рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрд░реЛрдз рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЙрд╕рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд▓реИрдореНрдмреНрдбрд╛ рдореЗрдВ рддрд░реНрдХ рд╕реНрдЯреЗрдЯ рд╣реИрдВ (рдпрд╣ рдПрдХ рд╕рддреНрд░ рдХреА рддрд░рд╣ рдХреБрдЫ рд╣реИ) рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВред
  9. рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд┐рдлрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрд╕рд╛рдзрд┐рдд рд╡рд╕реНрддреБ рд╣реИред
  10. рдХрдорд╛рдВрдб рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреИрд░рд╛рдЧреНрд░рд╛рдл 4 рдХреЗ рд╕рдорд╛рди рдХреЛрдИ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрджрд┐ рдХрдорд╛рдВрдб рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк "рд╢реВрдиреНрдп" рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдкрд╛рд╕ рд╢рд╛рдпрдж рдХрджрдо рди рд╣реЛрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдХрдорд╛рдВрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рд╕реНрд╡рд╛рдЧрдд рдкрдЯрдХрдерд╛
 handler("/start") { process { _, _ -> MarkdownMessage("!") } } 

рдХреЛрд╢рд┐рд╢


рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХрд╛рдВрдЯрд╛, рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдХреНрд▓реЛрди рдХрд░реЗрдВ рдФрд░ telegraff-sample рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ, рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ, рд╕реНрдкрд░реНрд╢ рдХрд░реЗрдВ!


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, telegraff-sample рдПрдХ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕реНрд╡рддрдВрддреНрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ рдЬреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕рдХрд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдЧреНрд░реЗрдбрд░ рд░реИрдкрд░ рднреА рд╣реИред рдЖрдк рдХреЗрд╡рд▓ рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рддрд░рд╣ рдХрд╛ рдЖрдбрдВрдмрд░ рд╣реИред


рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?


рддрд╛рд░


Telegram рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ рдФрд░ TelegramApi рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ рдХреЛ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрдИ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдПрдкреАрдЖрдИ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреА рд░реЗрд╕реНрдЯреЗрдордкреНрд▓реЗрдЯ (рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг) рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд╢реБрд░реВред


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЯреЗрд▓реАрдЧреНрд░рд╛рдл рдореЗрдВ рдЗрд╕ рдПрдкреАрдЖрдИ рдХреЗ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧреНрд░рд╛рд╣рдХ рд╣реИрдВ: рдкреЛрд▓рд┐рдВрдЧрдХреНрд▓рд┐рдХ , рд╡реЗрдмрд╣реБрдХрд▓рд╛рдЗрдХ ред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдмрд┐рди рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рдФрд░ рдпрджреНрдпрдкрд┐ рдЕрджреНрдпрддрди (рдирдП рд╕рдВрджреЗрд╢) рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рд╕рд╛рд░ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЗ EventPublisher ("рдСрдмреНрдЬрд░реНрд╡рд░" рдкреИрдЯрд░реНрди) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирдП рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдШрдЯрдирд╛ ( TelegramUpdateEvent ) рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╢реНрд░реЛрддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рддрд╛рд░реНрдХрд┐рдХ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЕрдореВрд░реНрддрддрд╛ рдХреА рдкрд░рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╕рдВрджреЗрд╢ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдлрд┐рд▓реНрдЯрд░


рдЬреИрд╕реЗ рд╣реА рдХреЛрдИ рдирдпрд╛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЙрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрджреЗрд╢ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рд╣реЛрдЧрд╛ред


рдпрд╣ рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдЬрд╛рд╡рд╛ рдИрдИ рдлрд┐рд▓реНрдЯрд░ рдХреЗ рд╕рдорд╛рди рд╣реИред рдЕрдВрддрд░ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рд╣реИ рдХрд┐ рддрдерд╛рдХрдерд┐рдд рд╣реИрдВрдбрд▓рд░ (рдпрджрд┐ рд╣рдо рдЬрд╛рд╡рд╛ рдИрдИ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ, рддреЛ рдпреЗ рд╕рд░реНрд╡рд▓реЗрдЯ рд╣реИрдВ) рдлрд┐рд▓реНрдЯрд░ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред


рдлрд╝рд┐рд▓реНрдЯрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛


рдЗрд╕рд▓рд┐рдП, рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИрдВ рдФрд░ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдиреАрдЪреЗ рдЬрд╛рдиреЗ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рд╢рд╛рдпрдж рдирд╣реАрдВред


LoggingFilter рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рд░реНрд╡реЛрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ (рдкрд╣рд▓рд╛) рдлрд┐рд▓реНрдЯрд░ рд╣реИ рдЬрд┐рд╕реЗ рдПрдХ рдирдП рд╕рдВрджреЗрд╢ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рдПрдХ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рд▓реЙрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдиреАрдЪреЗ рднреЗрдЬрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ LoggingFilter рдХреЛ рдЬреЛрдбрд╝рд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрддрд░ рдкрд░ рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдЕрдЧрд▓рд╛ рдлрд┐рд▓реНрдЯрд░ CancelFilter ред рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ HandlersFilter рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдкреВрд░рдХ рд╣реИред рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдп рд╕рд░рд▓ рд╣реИ: рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрддрдорд╛рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ "рд░рджреНрдж рдХрд░реЗрдВ" рдпрд╛ "рд░рджреНрдж рдХрд░реЗрдВ" рдФрд░ рдЙрд╕рдХреА рд╕реНрдерд┐рддрд┐ (рд╕рддреНрд░) рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИред рд╡рд╣ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА рдирдП рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, CancelFilter тАЬрдЙрдЪреНрдЪтАЭ (рдкреНрд░рд╛рдердорд┐рдХрддрд╛) CancelFilter ред


HandlersFilter рдореМрдЬреВрджрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдореБрдЦреНрдп рдлрд┐рд▓реНрдЯрд░ рд╣реИред рдпрд╣ рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рд╡рд╛рдВрдЫрд┐рдд рд╣реИрдВрдбрд▓рд░ (рд╕реНрдХреНрд░рд┐рдкреНрдЯ) рдХреЛ рдвреВрдВрдврддрд╛ рд╣реИ рдФрд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рд╕рддреНрдпрд╛рдкрди рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЪрд░рдгреЛрдВ рдХрд╛ рдХреНрд░рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИред


рдпрджрд┐ HandlersFilter рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрдкрдпреБрдХреНрдд рд╣реИрдВрдбрд▓рд░ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рддреЛ рд╕рддреНрд░ рдпрд╛ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ, рд╕рдВрджреЗрд╢ рдХреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдиреАрдЪреЗ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪрд░рдо рдлрд╝рд┐рд▓реНрдЯрд░ UnresolvedFilter ред рдпрд╣ рдПрдХ рдлрд┐рд▓реНрдЯрд░ рд╣реИ рдЬреЛ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдВрддрд┐рдо рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рд░рд▓ рд╣реИ: рдпрджрд┐ рд╡реЗ рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣реБрдВрдЪреЗ, рддреЛ рд╕рдВрджреЗрд╢ рдХрд╛ рдЬрд╡рд╛рдм рдХреИрд╕реЗ рджреЗрдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рднреА рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛ред рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреЙрдЯ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдЕрдЧрд░ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдХреИрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВ, рддреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВред


рдЕрдкрдирд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ TelegramFilter рд╡рд░реНрдЧ рдХрд╛ рдмреАрди рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдПрдиреЛрдЯреЗрд╢рди @TelegramFilterOrder(ORDER_NUMBER) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред


рдлрд╝рд┐рд▓реНрдЯрд░ рдЙрджрд╛рд╣рд░рдг
 @Component @TelegramFilterOrder(Integer.MIN_VALUE) class LoggingFilter : TelegramFilter { override fun handleMessage(message: TelegramMessage, chain: TelegramFilterChain) { log.info("New message from #{}: {}", message.chat.id, message.text) chain.doFilter(message) } companion object { private val log = LoggerFactory.getLogger(LoggingFilter::class.java) } } 

рдпрд╣ рд╣реИ рдХрд┐ рдХреИрд╕реЗ @TinkoffRatesBot рдПрдХ "рдХреИрд▓рдХреБрд▓реЗрдЯрд░" рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд┐рдП рдмрд┐рдирд╛, рдЖрдк рдПрдХ рд╕рдВрдЦреНрдпрд╛ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "1000", рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдкреВрд░реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "4500 * 3 - 12000"ред рдмреЙрдЯ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдЧрд╛, рд╡рд░реНрддрдорд╛рди рд╡рд┐рдирд┐рдордп рджрд░реЛрдВ рдХреЛ рдкрд░рд┐рдгрд╛рдо рдкрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпреЛрдВ рдХрд╛ рдирддреАрдЬрд╛ CalculationFilter рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╣реИ, рдЬреЛ HandlersFilter рдиреАрдЪреЗ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди UnresolvedFilter рдКрдкрд░ рд╣реИред


рд╕рдВрдЪрд╛рд▓рдХреЛрдВ


рдЯреЗрд▓реАрдЧреНрд░рд╛рдл рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо (рд╣реИрдВрдбрд▓рд░реНрд╕) рдХреЛрдЯрд▓рд┐рди рдбреАрдПрд╕рдПрд▓ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рд▓рдВрдмреЛрджрд░ рдФрд░ рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред


рдореИрдВ рдЕрд▓рдЧ рд╕реЗ рдХреЛрдЯрд▓рд┐рди рдбреАрдПрд╕рдПрд▓ рджреЗрдЦрдиреЗ рдХреА рдмрд╛рдд рдирд╣реАрдВ рджреЗрдЦрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдмрд╛рддрдЪреАрдд рд╣реИред JetBrains рд╕реЗ рдорд╣рд╛рди рдкреНрд░рд▓реЗрдЦрди рдФрд░ i_osipov рд╕реЗ рдПрдХ рд╡реНрдпрд╛рдкрдХ рд░рд┐рдкреЛрд░реНрдЯ рд╣реИред


рдмрд╛рд░реАрдХрд┐рдпреЛрдВ


рдпрд╣ рдЦрдВрдб рд╡рд░реНрддрдорд╛рди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╕рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рддрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЗрди рдкрд╣рд▓реБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред


рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕ рдЦрдВрдб рд╕реЗ рдПрдХ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдмрд┐рдВрджреБ рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХрд╛ рдЬреНрдЮрд╛рди рдпрд╛ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИ, рддреЛ рдореИрдВ рдмрд╣реБрдд рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред


рддрд╛рд░


рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдкрд░рдд рд╢рд╛рдпрдж рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдирд╣реАрдВ рд╣реИред рдХреЗрд╡рд▓ рд╡реЗ рд╡рд┐рдзрд┐рдпрд╛рдБ рдЬреЛ рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХ рдереАрдВ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЧрдИрдВред рдЕрдЧрд░ рдХреЛрдИ рдРрд╕реА рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХрдореА рд╣реИ, рддреЛ TelegramApi рд╕рд╣реА рдХрд░реЗрдВ рдФрд░ PR рднреЗрдЬреЗрдВ!


рдлрд┐рд▓рд╣рд╛рд▓ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднрд╛рдЧреЛрдВ рдореЗрдВ рдЗрдирд▓рд╛рдЗрди рдХреАрдмреЛрд░реНрдб рд╕рдкреЛрд░реНрдЯ рдХреА рдХрдореА рд╣реИ (рдпрд╣ рддрдм рд╣реИ рдЬрдм рдХреАрдмреЛрд░реНрдб рд╕реАрдзреЗ рд░рд┐рдмрди рдореЗрдВ рд╕рдВрджреЗрд╢ рдХреЗ рдиреАрдЪреЗ рд╣реИ)ред рдХрд╛рд░реНрдп рдЗрд╕ рддрдереНрдп рд╕реЗ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрдирд▓рд╛рдЗрди-рдХреАрдмреЛрд░реНрдб рдХреЛ рдореМрдЬреВрджрд╛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ "рджрд░реНрдЬ" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕рд░рд▓, рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ, рдЕрд▓рдЧ-рдерд▓рдЧ рд░рд╣реЗред рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрднреА рддрдХ рдХрд┐рд╕реА рднреА рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


рдореЛрдЯрд╛ рдЬрд╛рд░


рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХреБрдЫ рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдЬреИрд╕реЗ рдХрд┐ JRuby рдФрд░ рд╢рд╛рдпрдж Kotlin Embedded Compiler (рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ) рдореЗрдВ Fat JAR рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред Fat JAR рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХрд╛ рдХреЛрдб рдФрд░ рдЖрдкрдХреА рд╕рд╛рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдПрдХ рдлрд╛рдЗрд▓ ( *.jar ) рдореЗрдВ рдкреИрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИред


рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрдирдкреИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдЬрдм рдЖрд╡реЗрджрди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореБрдЦреНрдп рдкреИрдХреЗрдЬ рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдЬрд╛рд░ рдбрд┐рд╕реНрдХ рдкрд░ рдХрд╣реАрдВ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд╛рд╕рдкреИрде рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ bootJar рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ:


рдкреНрд▓рдЧрдЗрди рд╡рд┐рдиреНрдпрд╛рд╕
 bootJar { requiresUnpack "**/**kotlin**.jar" requiresUnpack "**/**telegraff**.jar" } 

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдкрдиреА рд╕реЗрдо (рд╕реЗрд╡рд╛рдУрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдХреЛ рд╣реИрдВрдбрд▓рд░ (рд╕реНрдХреНрд░рд┐рдкреНрдЯ) рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рднреА рдЕрдирдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬреЛ, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд╛рдн рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред


рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рджреЗрдЦрд╛, рдЧреНрд░реИрдбрд▓ application рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп, рд╕рд░рд▓ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рдХрдВрдЯреЗрдирд░реАрдХреГрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИред


рдЗрд╕ рд╕рдм рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдХреБрдЫ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рд╣реИ ред


рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЖрджреЗрд╢


рдпрд╣рд╛рдВ рдореИрдВ рджреЛ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрджрд┐ рдЖрдк рдЯреИрдХреНрд╕реА рдХреЙрд▓ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ enum рд╡рд░реНрдЧ рдХреЛ handler(...) рд▓рд┐рдП рдХреЙрд▓ рдХреЗ рдКрдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЗрд╕ рддрдереНрдп рд╕реЗ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, handler рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд╣реИред рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓, рдЬрд┐рд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХреБрдЫ рд╕рдВрд░рдЪрдирд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕реЗ рдЯреЗрд▓реАрдЧреНрд░рд╛рдл рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдпрджрд┐, рдЖрдкрдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХрд╛рд░рдЦрд╛рдирд╛ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдирд╣реАрдВ рд▓рд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдЧрд┐рд░ рдЬрд╛рдПрдЧреАред


рджреВрд╕рд░реЗ, рдЖрдкрдХреЛ рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдЖрдкрдХреЗ рд╕рдВрдкреВрд░реНрдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдФрд░ рд╕реЗрдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдВрджрд░реНрдн рдХреЛ рдПрдХ рд╕реНрдерд┐рд░ рдЪрд░ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХреБрдЫ рд╕реЗрд╡рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрджрд░реНрдн рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЕрднреА рддрдХ рдЖрд░рдВрдн рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдЯреЗрд▓реАрдЧреНрд░рд╛рдл рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╣реИ рдФрд░ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдлрд▓рд┐рдпрд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдБ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред


рдирд┐рд╖реНрдХрд░реНрд╖


рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ - рдХрд╛рдВрдЯрд╛,
рдореИрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ - рдкреАрдЖрд░ рднреЗрдЬреЗрдВ,
рдореИрдВ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ - рдЬреАрдердм рдореЗрдВ рдПрдХ рддрд╛рд░рд╛рдВрдХрди рдкреЛрд╕реНрдЯ рдХреА рддрд░рд╣ рдбрд╛рд▓реЗрдВ рдФрд░ рдЕрдкрдиреЗ рджреЛрд╕реНрддреЛрдВ рдХреЛ рдмрддрд╛рдПрдВ!


рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА

Source: https://habr.com/ru/post/hi445072/


All Articles