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

рдпрджрд┐ рдЖрдк рдХрдИ рдмреЙрдЯреНрд╕ рдХрд╛ рдХреЛрдб рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдЙрд╕реА рдкреИрдЯрд░реНрди рдкрд░ рдЖрддрд╛ рд╣реИ:
- рд╕рдВрджреЗрд╢ рдЖрддрд╛ рд╣реИ
- рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрджреЗрд╢ рд╣реИрдВрдбрд▓рд░ (
callback
) рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдпрд╣ рдЖрдо рддреМрд░ рдкрд░ рдмреЙрдЯ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рддрд░реАрдХрд╛ рд╣реИред рдпрд╣ рдПрдХ-рд╡реНрдпрдХреНрддрд┐ рдЪреИрдЯ рдХреЗ рд▓рд┐рдП рдФрд░ рд╕рдореВрд╣реЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рдмреЙрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд╕рд╛рде, рдПрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ: рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рд╛рдзрд╛рд░рдг рдмреЙрдЯреНрд╕ рдХрд╛ рдХреЛрдб рдЕрдХреНрд╕рд░ рдХрд╛рдлреА рднреНрд░рдорд┐рдд рд╣реЛрддрд╛ рд╣реИред
рдЖрдЗрдП рдЗрд╕реЗ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред
рдореИрдВ рдЕрд╕реНрд╡реАрдХрд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реВрдБрдЧрд╛:
- рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ рдЬреЛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд╡рд╣ рдмреЙрдЯ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ
<->
ред - рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдХреЛрдб рдПрдХ рд╕реНрдХреЗрдЪ рдХреЛрдб рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ 15 рдорд┐рдирдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ред рдЗрд╕рд▓рд┐рдП рдХрдбрд╝рд╛рдИ рд╕реЗ рдиреНрдпрд╛рдп рди рдХрд░реЗрдВред
- рдореИрдВрдиреЗ рд╡реНрдпрд╡рд╕рд╛рдп рдореЗрдВ рдПрдХ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛: рд▓реЛрдб рд╕рдВрддреБрд▓рди рдХреЗ рд╕рд╛рдеред рд▓реЗрдХрд┐рди, рдЕрдлрд╕реЛрд╕, рдореЗрд░реЗ рдЙрддреНрдкрд╛рджрди рдХреЛрдб рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреБрдирд┐рдпрд╛рджреА рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд▓реЗрдЦ рдореЗрдВ рдЗрд╕ рд╕реНрдХреЗрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдкреНрд░рддрд┐рдорд╛рди рд╡рд┐рдХрд╛рд╕ рдХреЗ рдореБрджреНрджреЛрдВ рдкрд░ рд╕рдВрдкрд░реНрдХ рдХрд░реВрдВрдЧрд╛ (рдореИрдВ рдпрд╣ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╣рдо рдХрд╣рд╛рдВ рдФрд░ рдХреИрд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдП рд╣реИрдВ)ред
рдЕрдЪреНрдЫрд╛, рдЕрдм рдЪрд▓реЛред
рд╕рдорд░реНрдерди рдХреЗ рд░реВрдк рдореЗрдВ, aiogram рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп , python3.7 + рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд▓рд┐рдВрдХ рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЗрдХреЛ рдмреЙрдЯ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред
рдореИрдВ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдХреЙрдкреА рдХрд░реВрдВрдЧрд╛:
рдХреЛрдб рджреЗрдЦреЗрдВ """ This is a echo bot. It echoes any incoming text messages. """ import logging from aiogram import Bot, Dispatcher, executor, types API_TOKEN = 'BOT TOKEN HERE'
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдмреЙрдЯ рдХрд╛ рд╕рдВрдЧрдарди рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╣реИред рдЬрдм рднреА рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреБрдЫ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдПрдХ рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд▓рд╛рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ рдЗрд╕ рдкреНрд░рддрд┐рдорд╛рди рдХреЗ рд╕рд╛рде?
рдЬрдЯрд┐рд▓ рд╕рдВрд╡рд╛рджреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдХрд╛рд░реНрдп рдЕрдкрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдкрд░ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рднрдВрдбрд╛рд░рдг рд╕реЗ рдЕрдкрдиреЗ рд░рд╛рдЬреНрдп рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХрд╛рдВрд╢ рдмреЙрдЯреНрд╕ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡реНрдпрд╡рд╕рд╛рдп рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╛рдо рдкрд░ рд░рдЦрдиреЗ), рддреЛ рд╡реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ 1..N рдкреНрд░рд╢реНрди рдкреВрдЫрддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдЗрди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ)ред
рдпрджрд┐ рдПрдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╢реИрд▓реА (рдПрдХ рд░рд┐рдВрдЧ рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рдмрдЬрд╛рдп) рдореЗрдВ рдПрдХ рдмреЙрдЯ рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рдерд╛, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЛ рд╕реАрдзреЗ рд╕реНрдЯреИрдХ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред
рдЪрд▓реЛ рдЗрд╕реЗ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред
рдореИрдВрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдПрдХ рд╕реНрдХреЗрдЪ рдХреЛ рд╕реНрдХреЗрдЪ рдХрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдХреЛрдб рджреЗрдЦреЗрдВ рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
ChatDispatcher
рд╡рд░реНрдЧ рдирд┐рдореНрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде ChatDispatcher
рд╣реИ:
- рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рддреЗрдЬ рдХрд░рдирд╛ (рдЗрд╕реЗ рд╢рд╛рд░реНрдбрд┐рдВрдЧ рдХреНрдпреЛрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдмрд╛рдж рдореЗрдВ, рдЬрдм рд╣рдо рдмрдбрд╝реЗ рднрд╛рд░ рдкрд░ рд╕реНрдкрд░реНрд╢ рдХрд░рддреЗ рд╣реИрдВ)ред рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╕рдВрдЦреНрдпрд╛ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕рдВрд╡рд╛рдж рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рд▓реМрдЯрд╛рддрд╛ рд╣реИред
- рдРрд╕реЗ рдХрд╛рд░реНрдп рдЬреЛ рдЪреИрдЯ рд╕реЗрд╡рд╛ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░реЗрдВрдЧреЗред
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдордЖрдЙрдЯ рдорд╛рдиред
рдиреМрдХрд░реА рдХрд╛ рд╡рд┐рд╡рд░рдг:
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрджреЗрд╢ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ, рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдп рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╕рдВрд╡рд╛рдж рдХрд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдпрд╣ рдХрд╛рд░реНрдп рддрдм рддрдХ рдЪрд▓реЗрдЧрд╛ рдЬрдм рддрдХ рд╕рдВрд╡рд╛рдж рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВред
echo
рдЪреИрдЯ рдЙрджрд╛рд╣рд░рдг:
async def chat(get_message): message = await get_message() await message.answer(message.text)
- рд╣рдо рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ (
message.answer
)ред
рдЖрдЗрдП рдЗрд╕ рдкреНрд░рддрд┐рдорд╛рди рдореЗрдВ рдПрдХ рдмреЙрдЯ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ
рдкреВрд░реНрдг рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдБ рдПрдХ рд▓рд┐рдЦрд┐рдд рдмреЙрдЯ рдЙрджрд╛рд╣рд░рдг - рдпрд╣ рдмрд╕ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдкрд░рд┐рдгрд╛рдо рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЦреИрд░, рдЕрдм рдХреЛрдб рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рд╕рд╡рд╛рд▓ рдирд╣реАрдВ рдЙрдард╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рдорд╛рд░реЗ рд╕реНрдХреЗрдЪ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдорд╛рдирдХ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо await chat_dispatcher.handle(message)
ред рдФрд░ рд╣рдордиреЗ chat
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ chat
рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛, рдореИрдВ рдЗрд╕рдХрд╛ рдХреЛрдб рдпрд╣рд╛рдВ рджреЛрд╣рд░рд╛рдКрдВрдЧрд╛:
async def chat(get_message): try: message = await get_message() await message.answer(' , ') first = await get_message() if not re.match('^\d+$', str(first.text)): await first.answer(' , : /start') return await first.answer(' ') second = await get_message() if not re.match('^\d+$', str(second.text)): await second.answer(' , : /start') return result = int(first.text) + int(second.text) await second.answer(' %s (/start - )' % result) except ChatDispatcher.Timeout as te: await te.last_message.answer('- , ') await te.last_message.answer(' - /start')
рдЪреИрдЯ рд╕реЗрд╡рд╛ рдХреЛрдб - рдмрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдорд╛рдВрдЧрддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреЗрд╡рд▓ рд╕реНрдЯреИрдХ рдкрд░ рдЦрдбрд╝реА рд╣реЛрддреА рд╣реИрдВ (рдЪрд░ first
, second
, message
)ред
get_message
рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рджреМрд░рд╛рди рдХреБрдЫ рднреА рджрд░реНрдЬ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдФрд░ рдЖрдк рдЙрд╕реА рд╕рдордп рдореЗрдВ рдЯрд╛рдЗрдордЖрдЙрдЯ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред
рдбрд╛рдпрд▓реЙрдЧ рд╕реНрдЯреЗрдЯ - рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рд╕реАрдзреЗ рд▓рд╛рдЗрди рдирдВрдмрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдХреЛрдб рдиреАрдЪреЗ рдЬрд╛рддреЗ рд╣реБрдП, рд╣рдо рд╕рдВрд╡рд╛рдж рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ ред рд╕рдВрд╡рд╛рдж рд╕реВрддреНрд░ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ!
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд░рд╛рдЬреНрдп рдорд╢реАрдиреЛрдВ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдкреНрд░рддрд┐рдорд╛рди рдореЗрдВ, рдЖрдк рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╕рдВрд╡рд╛рдж рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ callback
рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрдирдХрд╛ рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛрдЧрд╛ред
рдХрдорд┐рдпреЛрдВ
рдЙрдирдХреЗ рдмрд┐рдирд╛ рдХрд╣рд╛рдБред
- рдкреНрд░рддреНрдпреЗрдХ рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрд╛рд░реНрдп-рдХреЛрд░реБрдЯрд┐рди рд╣реИред рдФрд╕рддрди, рдПрдХ рд╕реАрдкреАрдпреВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд▓рдЧрднрдЧ 1000 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реЗрд╡рд╛ рджреЗрддрд╛ рд╣реИ, рдлрд┐рд░ рджреЗрд░реА рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред
- рдкреВрд░реЗ рдбреЗрдореЙрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ - рд╕рднреА рд╕рдВрд╡рд╛рджреЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ (рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реИ)ред
- рдХреЛрдб [рдЙрджрд╛рд╣рд░рдг рд╕реЗ] рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдФрд░ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рде рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ: рд╕реНрдЯреЙрдк рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░реЗрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмрддрд╛рдПрдВ "рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣рд╛рдВ рдПрдХ рдЖрдкрд╛рддрдХрд╛рд▓реАрди рд╕реНрдерд┐рддрд┐ рд╣реИ, рдЖрдЧ, рдореИрдВ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рд╡рд╛рдкрд╕ рдЖрдКрдВрдЧрд╛ред" рд╡рд╣ рдЖрдЦрд┐рд░реА рд╕рдорд╕реНрдпрд╛ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреА рд╣реИред рдЖрдЗрдП рдЗрд╕реЗ рджреЗрдЦреЗрдВ:
рд▓реЛрдб рд╕реНрдХреЗрд▓рд┐рдВрдЧ
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд▓реЛрдб рдХрд┐рдП рдЧрдП рдмреЙрдЯ рдХреЛ рдПрдХ рд╕рд╛рде рдХрдИ рдмреИрдХреЗрдВрдб рдкрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рддрджрдиреБрд╕рд╛рд░, рдСрдкрд░реЗрд╢рди рдХреЗ webHook
рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ webHook
рдмреАрдЪ рд╕рдВрддреБрд▓рди webHook
, рдХрд╣рддреЗ рд╣реИрдВ, рджреЛ рдмреИрдХрдПрдВрдб, рддреЛ рдЬрд╛рд╣рд┐рд░ рд╣реИ рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрд╕реА webHook
рдЖрддрд╛ рд╣реИ рдЬреЛ рдЙрд╕рд╕реЗ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реИред
рд╣рдордиреЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛ред
- рдмреИрд▓реЗрдВрд╕рд░ рдкрд░, рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢ (
message
) рдХреЗ JSON рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ - рдЗрд╕рдореЗрдВ рд╕реЗ рдПрдХ рдпреВрдЬрд░ рдЖрдИрдбреА рдЪреБрдиреЗрдВ
- рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдмреИрдХрдПрдВрдб рдирдВрдмрд░ (== рд╢рд╛рд░реНрдж) рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
user_id % Nshards
рдХрд╛ рдЙрдкрдпреЛрдЧ user_id % Nshards
ред - рд╣рдо рд╢рд╛рд░реНрдХ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА - рд╕рдВрд╡рд╛рджреЛрдВ рдХреЗ рдХреЛрд░рдЖрдЙрдЯ рдХреЗ рдмреАрдЪ рддреАрдХреНрд╖реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рдмрди рдЬрд╛рддреА рд╣реИ рдФрд░ рдмреИрд▓реЗрдВрд╕рд░ рдореЗрдВ рдмреИрдХрдПрдВрдб рдХреА рд╢рд╛рд░реНрдк рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдЖрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдмреИрд▓реЗрдВрд╕рд░ рдХрд╛ рдХреЛрдб рд╕рд░рд▓ рд╣реИ - рдпрд╣ рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдореЗрдВ 10 рдорд┐рдирдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдирд╣реАрдВ рд▓рд╛рдКрдВрдЧрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдпрджрд┐ рдЖрдк рдЗрд╕ рдкреНрд░рддрд┐рдорд╛рди рдореЗрдВ рдмреЙрдЯ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрд╛рдлреА рд╕рд░рд▓рддрд╛ рд╕реЗ рд╕рдВрд╡рд╛рджреЛрдВ рдХреЛ рдПрдХ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдирдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрди рд╕рдВрд╡рд╛рджреЛрдВ рдХреЗ рдХреЛрдб рдХреЛ рд╕рдордЭрддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдиреЗ рдЙрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдП рдереЗред
рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ рд░рд┐рдВрдЧ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдмреЙрдЯ рдХреНрдпреЛрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ - рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ред
рд╡реЗ рдРрд╕реЗ рдкреНрд░рддрд┐рдорд╛рди рдореЗрдВ рд▓рд┐рдЦрддреЗ рдереЗред рдЗрд╕ рд╢реИрд▓реА рдореЗрдВ рдЪреИрдЯ рд░реВрдо рдХреА рд╕реЗрд╡рд╛ рдХрд░рдирд╛ рдЖрдИрдЖрд░рд╕реА рдХреЗ рдпреБрдЧ рдореЗрдВ рдЕрдкрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмреЙрдЯ рдмрдирд╛рдП рдЧрдП рдереЗред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдирд╡реАрдирддрд╛ рдХрд╛ рдвреЛрдВрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ред
рдФрд░ рдЕрдзрд┐рдХред рдпрджрд┐ рдЖрдк рдЗрд╕ рдкреНрд░рддрд┐рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ goto
рд╕рдВрдЪрд╛рд▓рдХ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ goto
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕реБрдВрджрд░ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдЧрд╛ (рд╕рдВрд╡рд╛рджреЛрдВ рдореЗрдВ рд▓реВрдк рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ goto
рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдкрд╛рдпрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред