рдкрд╛рдпрдерди рдЯреИрдордЯрдо рдмреЙрдЯ рд╡рд┐рдХрд╛рд╕


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


рдЯреИрдордЯрд╛рдо рдореИрд╕реЗрдВрдЬрд░ рдкрд░ рдмреЙрдЯ рдПрдкреАрдЖрдИ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рдж, рдореИрдВ, рдПрдХ рд╕рдЪреНрдЪреЗ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЖрд▓рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 2 рдкрд╛рдпрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдИ:


  • рдУрдкрди рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреАрдЖрдИ (рдЗрд╕рдХреЗ рдмрд╛рдж - рдУрдПрд╕реА) - рд╢реБрд░реВ рдореЗрдВ рдЗрд╕реЗ рдПрдкреАрдЖрдИ рдпреЛрдЬрдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдУрдкрдирдПрдкреАрдЖрдИ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдлрд┐рд░ рдЗрд╕реЗ рдЬрдирд░реЗрдЯрд░ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛;
  • рдЗрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╢реЗрд▓ TamTamBot (рдЗрд╕рдХреЗ рдмрд╛рдж - TTB) рд╣реИ, рдЬреЛ OAC рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред

рддреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЯреИрдЯрдо рдкрд╛рдпрдерди рдПрд╕рдбреАрдХреЗ рдерд╛ред


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


рдХрд╛рд░реНрдп


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


рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХ рдиреЗ рдЕрдЬрдЧрд░ 3 рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ , git , PyCharm рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ (рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╣рд╛рдиреА PyCharm рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдЧреА)ред рдУрдУрдкреА рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╕рдордЭрдирд╛ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИред


рдмреЙрдЯ рдЯреЛрдХрди рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ


рдЯреЛрдХрди рд╡рд┐рд╢реЗрд╖ рдмреЙрдЯ @PrimeBot рдкрд░ рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ


рд╣рдо рддрдорддрд╛рдо рдореЗрдВ рдЗрд╕ рдмреЙрдЯ рдХреЛ рдвреВрдВрдврддреЗ рд╣реИрдВ, / рдХрдорд╛рдВрдб рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рджреЗрддреЗ рд╣реИрдВ:


  • рд▓реИрдЯрд┐рди рдЕрдХреНрд╖рд░реЛрдВ рдореЗрдВ рдмреЙрдЯ рдХрд╛ рдЕрджреНрд╡рд┐рддреАрдп рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВ - рдпрд╣ рдмреЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдпрд╣ @ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ https://tt.me/username рдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдВрдХ рджреНрд╡рд╛рд░рд╛ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдкрд░ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдмреЙрдЯ рд╢рдмреНрдж рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред
  • рдПрдХ рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВ - рдпрд╣ рдмреЙрдЯ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдирд╛рдо рд╣реИред рдпрд╣рд╛рдВ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд┐рд░рд┐рд▓рд┐рдХ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдирд┐рд░реНрдорд┐рдд рдмреЙрдЯ рд╕рдВрдкрд░реНрдХреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдмрджрд▓реЗ рдореЗрдВ рд╣рдореЗрдВ рдПрдХ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ - рдлреЙрд░реНрдо рдХреЗ рдкрд╛рддреНрд░реЛрдВ рдХрд╛ рдПрдХ рдХреНрд░рдо: HDyDvomx6TfsXkgwfFCUY410fv-vff4XVjr8JVSU4cред


рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реЗрдЯрдЕрдк


рдкреНрд░рджрд░реНрд╢рди

рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдБ:


 mkdir ttBotDevHelper 

рдЗрд╕ рдкрд░ рдЬрд╛рдПрдВ:


 cd ttBotDevHelper/ 

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


 git init 

рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдЙрдиреНрд╣реЗрдВ рдЧрд┐рдЯ рдХреЗ рд╕рдмрдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рдирд╛:


 git submodule add https://github.com/asvbkr/openapi_client.git openapi_client git submodule add https://github.com/asvbkr/TamTamBot.git TamTamBot 

рд╣рдо PyCharm рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдХреЗ рддрд╣рдд рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рд╕реЗ "PyCharm рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░ рдЦреЛрд▓реЗрдВ") рдФрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рдмреЙрдЯ рд╣реЛрдВрдЧреЗ - рдлрд╝рд╛рдЗрд▓ / рдирдИ / рдкрд╛рдпрдерди рдлрд╝рд╛рдЗрд▓ред рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╡рд╛рдж рдореЗрдВ, рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВ - ttBotDevHelper, рдФрд░ git рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╡рд╛рд▓ рдкрд░ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЙрддреНрддрд░ рджреЗрдВред


рдЕрдм рд╣рдореЗрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ / рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреИрдм рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдЙрдкрдХреБрдВрдЬреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдЕрдЧрд▓рд╛, рджрд╛рдИрдВ рдУрд░, рдЧрд┐рдпрд░ рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдЬреЛрдбрд╝реЗрдВ рдЪреБрдиреЗрдВ:


рдЫрд╡рд┐


PyCharm рдЕрдкрдирд╛ рдЖрд╡рд╛рд╕ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред


рдЫрд╡рд┐


рдЙрд╕рд╕реЗ рд╕рд╣рдордд рд╣реЛрдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред


рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдкрд┐рдЫрд▓рд╛ рд╕реНрдХреНрд░реАрди рдЦреБрд▓ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рд░реНрдорд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдЧреАред рдЗрд╕ рд╕реНрдХреНрд░реАрди рдкрд░, рдЖрдкрдХреЛ рджрд╛рдИрдВ рдУрд░ "+" рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдФрд░ рдкреИрдХреЗрдЬ рдирд╛рдореЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд░рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


  • рдЕрдиреБрд░реЛрдз
  • рдЫрд╣

рдлрд┐рд░ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, .itignore рдлрд╝рд╛рдЗрд▓ рдХреЛ git рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:


 venv/ .idea/ # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class *.log *.log.* .env ttb.sqlite3 

TT_BOT_API_TOKEN рдирд╛рдордХ рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдЬреЛрдбрд╝реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо https://tt.me/primebot рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЕрдкрдиреЗ рдмреЙрдЯ рдХреЗ рдЯреЛрдХрди рдХрд╛ рдореВрд▓реНрдп рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ PyCharm рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рддреЗ рд╣реИрдВред


(!) OS рдкрд░рд┐рд╡реЗрд╢ рдореЗрдВ рд╕реАрдзреЗ рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп, PyCharm рдПрдХ рд╡рд┐рд╢реЗрд╖ .env рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдкрд░ рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред


рдмрдзрд╛рдИ рд╣реЛ, рдЕрдм рдЖрдк рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ - рдЕрдкрдиреЗ рдмреЙрдЯ рдХреЛ рд▓рд┐рдЦрдирд╛ред


рд╕рд░рд▓ рдмреЙрдЯ рд▓реЙрдиреНрдЪ


TtBotDevHelper.py рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓рд┐рдЦреЗрдВ:


 # -*- coding: UTF-8 -*- from TamTamBot.TamTamBot import TamTamBot class BotDevHelper(TamTamBot): pass 

рдпрд╣рд╛рдБ рд╣рдо TamTamBot рдХреНрд▓рд╛рд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдирд╛ рдмреЙрдЯ рдХреНрд▓рд╛рд╕ рдмрдирд╛рддреЗ рд╣реИрдВред


PyCharm рдХрд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдмреЛрдЯрдбреЗрд╡реЗрд▓рд░ рд╡рд░реНрдЧ рдореЗрдВ рдЕрдореВрд░реНрдд рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреНрд▓рд╛рд╕ рдХреЗ рдирд╛рдо рдкрд░ Alt-Enter рджрдмрд╛рдПрдВ, "рдЕрдореВрд░реНрдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ" рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, PyCharm рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ (рдЙрдирдореЗрдВ рд╕реЗ 2) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ OK рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдирддреАрдЬрддрди, рджреЛ рдЦрд╛рд▓реА рд╕рдВрдкрддреНрддрд┐ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛: рдЯреЛрдХрди рдФрд░ рд╡рд┐рд╡рд░рдгред рд╣рдо рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреЛрдб рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:


 # -*- coding: UTF-8 -*- import os from TamTamBot.TamTamBot import TamTamBot from TamTamBot.utils.lng import set_use_django class BotDevHelper(TamTamBot): @property def token(self): return os.environ.get('TT_BOT_API_TOKEN') @property def description(self): return '       .\n\n' \ 'This bot is an helper in the development and management of bots.' if __name__ == '__main__': set_use_django(False) BotDevHelper().polling() 

token рд╕рдВрдкрддреНрддрд┐ рд╣рдорд╛рд░реЗ рдмреЙрдЯ рдХрд╛ рдЯреЛрдХрди рд▓реМрдЯрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ TT_BOT_API_TOKEN рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред description рд╕рдВрдкрддреНрддрд┐ рд╣рдорд╛рд░реЗ рдмреЙрдЯ рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╡рд┐рд╡рд░рдг рд▓реМрдЯрд╛рддреА рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


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


рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ TamTamBot рдореЗрдВ рд╡реЗрдм рд╣реБрдХ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП django рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рдХрд╛рд░реНрдп рд╕рд░рд▓ рд╣реИ, рдФрд░ рд╣рдореЗрдВ django рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо set_use_django(False) рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣рд╛рдВ, polling() рдкрджреНрдзрддрд┐ рдХреЛ рд╣рдорд╛рд░реЗ рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдореЛрдб рдореЗрдВ рд╕рдВрдЪрд╛рд▓рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред


рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреЛрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛рдПрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреБрдВрдЬреА рд╕рдВрдпреЛрдЬрди Ctrl-Shift-F10 рджрдмрд╛рдПрдВред


рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рд╕реАрдзреЗ OS рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдерд╛, рддреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ "No access_token" рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .env рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PyCharm рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред


рджрд┐рдЦрд╛рдУ рдХреИрд╕реЗ

.Env рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:


 TT_BOT_API_TOKEN=__ 

рдЕрдм рдЖрдкрдХреЛ рдЗрд╕реЗ PyCharm рдореЗрдВ рд▓реЙрдиреНрдЪ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


рд╣рдо рд░рди / рдПрдбрд┐рдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ EnvFile рдЯреИрдм рдкрд░ рд╣рдо рдЕрдкрдиреА .env рдлрд╝рд╛рдЗрд▓ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ:


рдЫрд╡рд┐


рдлрд┐рд░ рдЕрдкреНрд▓рд╛рдИ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред


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


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


рд╕реНрд░реЛрдд рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рд╕реНрд░реЛрдд рд╕рдВрджреЗрд╢ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛


рд╣рдо receive_text() рд╡рд┐рдзрд┐ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░ рджреЗрдВрдЧреЗ, рдЬрд┐рд╕рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдмреЙрдЯ рдХреЗ рд╕рд╛рде рдЪреИрдЯ рдореЗрдВ рдкрд╛рда рднреЗрдЬрддреЗ рд╕рдордп рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


  def receive_text(self, update): res = self.msg.send_message(NewMessageBody(f' : {update.message}', link=update.link), user_id=update.user_id) return bool(res) 

UpdateCmn рд╡рд░реНрдЧ рдХреА update рд╡рд╕реНрддреБ, рдЬреЛ рдЗрд╕ рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╛рд╕ рдХреА рдЬрд╛рддреА рд╣реИ, рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЙрди рд╕рднреА рдХреЛ рдЬреЛ рдЕрдм рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:


  • update.message - рдПрдХ рдРрд╕реА рд╡рд╕реНрддреБ рдЬрд┐рд╕рдореЗрдВ рд╕реНрд╡рдпрдВ рд╕рдВрджреЗрд╢ рд╣реЛрддрд╛ рд╣реИ;
  • update.link - рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд▓рд┐рдВрдХ;
  • update.user_id - рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ред

рдмреЙрдЯ рд╕реЗ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо self.msg рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ self.msg рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ API рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рдВрджреЗрд╢ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ send_message() рд╡рд┐рдзрд┐ рд╣рдореЗрдВ send_message() , рдЬреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдХрдо рд╕реЗ рдХрдо, рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ NewMessageBody рд╡рд░реНрдЧ рдФрд░ рдЧрдВрддрд╡реНрдп - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА, рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдмрджрд▓реЗ рдореЗрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ NewMessageBody рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрд░реЛрдд рд╕рдВрджреЗрд╢ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдФрд░ рд╕реНрд░реЛрдд рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд▓рд┐рдВрдХ рдкреНрд░реЗрд╖рд┐рдд рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рд╣рдо рдЕрдкрдиреЗ рдмреЙрдЯ рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдмреЙрдЯ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдореЗрдВ рдЬрд╛рдБрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдмреЙрдЯ рд╣рдорд╛рд░реЗ рдХрд┐рд╕реА рднреА рд╕рдВрджреЗрд╢ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реНрд░реЛрдд рд╕рдВрджреЗрд╢ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИред


рдЗрд╕ рд░рд╛рдЬреНрдп рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдБ рд╣реИ ред


рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдмреЙрдЯ рдХрдорд╛рдВрдб рдЬреЛрдбрд╝рдирд╛ - рдЗрд╕рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджреЗрд╢ рдХрд╛ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рджрд┐рдЦрд╛рдирд╛


рдмреЙрдЯреНрд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЕрдХреНрд╕рд░ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЬреНрдЮрд╛рдд рд╕рдВрджреЗрд╢ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ (рд╕рдВрджреЗрд╢ рдЖрдИрдбреА - рдордзреНрдп) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рд╕рдВрджреЗрд╢ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рджреЗрдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдХрд╛рд░реНрдпрд╢реАрд▓рддрд╛ рдХреЛ рд╣рдорд╛рд░реЗ рдмреЙрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ, рд╣рдо рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рдореЗрдВ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ:


  def view_messages(self, update, list_mid, link=None): res = False msgs = self.msg.get_messages(message_ids=list_mid) if msgs: for msg in msgs.messages: r = self.msg.send_message(NewMessageBody(f' {msg.body.mid}:\n`{msg}`'[:NewMessageBody.MAX_BODY_LENGTH], link=link), user_id=update.user_id) res = res or r return res 

рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ, рд╣рдо рдордзреНрдп рдХреА рд╕реВрдЪреА рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред


рд╕рдВрджреЗрд╢ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо self.msg.get_messages рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИред


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдПрдХ рдкрд╛рдард╛рддреНрдордХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рд╣рдорд╛рд░реА рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрддреНрдкрдиреНрди рд╕рдВрджреЗрд╢ рдХреЗ рдкрд╛рда рдХреЛ рдЕрдзрд┐рдХрддрдо рд╕рдВрджреЗрд╢ рд▓рдВрдмрд╛рдИ - NewMessageBody.MAX_BODY_LENGTH рдХреЗ рдирд┐рд░рдВрддрд░ рджреНрд╡рд╛рд░рд╛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдлрд┐рд░ рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдХрдорд╛рдВрдб рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЪрд▓реЛ рдЗрд╕реЗ vmp рдХрд╣рддреЗ рд╣реИрдВред рдЖрдк рдПрдХ рд╕реНрдкреЗрд╕ рдХреЗ рд╕рд╛рде рдХрдорд╛рдВрдб рдореЗрдВ рдорд┐рдб рд▓рд┐рд╕реНрдЯ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


TTB рдХреЛ рдЗрд╕рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ рдХреЛ cmd_handler_%s рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдП, рдЬрд╣рд╛рдБ% s рдХрдорд╛рдВрдб рдХрд╛ рдирд╛рдо рд╣реИред рдпрд╛рдиреА vmp рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП, рд╡рд┐рдзрд┐ рдХреЛ cmd_handler_vmp рдХрд╣рд╛ cmd_handler_vmp ред UpdateCmn рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ cmd_args рд╕рдВрдкрддреНрддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЙрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдФрд░ рд╢рдмреНрджреЛрдВ рдХрд╛ рдПрдХ рд╢рдмреНрджрдХреЛрд╖ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдереЗ


рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:


  def cmd_handler_vmp(self, update): res = None if not update.this_cmd_response: #    ,       if update.cmd_args: #        list_id = [] parts = update.cmd_args.get('c_parts') or [] if parts: for line in parts: for part in line: list_id.append(str(part)) if list_id: res = self.view_messages(update, list_id, update.link) return bool(res) 

рд╣рдо рдмреЙрдЯ рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рддреЗ рд╣реИрдВред рдЕрдм, рдпрджрд┐ рдЖрдк рдмреЙрдЯ рдХреЗ рд╕рдВрд╡рд╛рдж рдореЗрдВ рдПрдХ рдХрдорд╛рдВрдб рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ: /vmp mid1 mid2 (рдЖрдк рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рдЬрд╛рдБрдЪ рдордзреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ), рддреЛ рдмрджрд▓реЗ рдореЗрдВ рд╣рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдордзреНрдп рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рд╕рдВрджреЗрд╢ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд╕рд╛рде рджреЛ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддреЗ рд╣реИрдВред


рдЗрд╕ рд░рд╛рдЬреНрдп рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдБ рд╣реИ ред


рдкрд╛рда рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЙрдЯ рдХрдорд╛рдВрдб рдХрд╛ рд╕рдВрд╢реЛрдзрди


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


рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдореВрд▓ рд╕рдВрджреЗрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рд╕рдВрджреЗрд╢ рд╕реЗ рдордзреНрдп рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдЗрд╕ рдореЛрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо vmp рдХрдорд╛рдВрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЬрдм рдЗрд╕реЗ рдмрд┐рдирд╛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдХрд╣рд╛ рдЬрд╛рдП, рддреЛ рдпрд╣ рд╕рдВрджреЗрд╢ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдпрд╣ рднреЗрдЬреЗ рдЧрдП рд╕рдВрджреЗрд╢ рдХреЗ рдмреАрдЪ рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред


(!) рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рдмреЙрдЯ рдХреЛ рдЪреИрдирд▓ / рдЪреИрдЯ рд╕реНрд░реЛрдд рд╕реЗ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред


рд╣рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрдорд╛рдВрдб рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:


  def cmd_handler_vmp(self, update): res = None if not update.this_cmd_response: #    ,       if update.cmd_args: #        list_id = [] parts = update.cmd_args.get('c_parts') or [] if parts: for line in parts: for part in line: list_id.append(str(part)) if list_id: res = self.view_messages(update, list_id, update.link) else: #      self.msg.send_message(NewMessageBody(f' **  /    :'), user_id=update.user_id) update.required_cmd_response = True #       else: #    message = update.message link = message.link #       link #  -   . if link and link.type == MessageLinkType.FORWARD: res = self.view_messages(update, [link.message.mid], update.link) else: #         ,    . self.msg.send_message(NewMessageBody(f'.  **   /. , .'), user_id=update.user_id) return False return bool(res) 

рдФрд░ рдХрдм рд╕реЗ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╕рдВрджреЗрд╢реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдЬреЛрдЦрд┐рдо рдмрдврд╝рддрд╛ рд╣реИ, рдлрд┐рд░ view_messages() рд╡рд┐рдзрд┐ рдореЗрдВ рд╣рдо рдЕрдиреБрд░реЛрдзрд┐рдд / рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:


  def view_messages(self, update, list_mid, link=None): res = False msgs = self.msg.get_messages(message_ids=list_mid) if msgs: #    mid     if len(msgs.messages) < len(list_mid): self.msg.send_message(NewMessageBody( f'     .    @{self.username}  /  .', link=update.link ), user_id=update.user_id) return False else: for msg in msgs.messages: r = self.msg.send_message(NewMessageBody(f' {msg.body.mid}:\n`{msg}`'[:NewMessageBody.MAX_BODY_LENGTH], link=link), user_id=update.user_id) res = res or r return res 

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


рдмреЙрдЯ рдЧреБрдг рд╕реЗрдЯ рдХрд░рдирд╛


рдЕрдм рдпрд╣ рдЪрдордХ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдЖрдЗрдП рд╕рдВрдкрддреНрддрд┐ рдХреЗ about рдмрдВрдж рдХрд░реЗрдВ, рдЬреЛ рдЙрд╕ рдкрд╛рда рдХреЛ рд▓реМрдЯрд╛рддреА рд╣реИ рдЬреЛ рдмреЙрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрдм рд╡рд╣ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде / рдкреНрд░рд╛рд░рдВрдн рдХрдорд╛рдВрдб рднреАред


  @property def about(self): return '       .' 

рд╣рдо get_commands() рд╡рд┐рдзрд┐ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рд╣рдорд╛рд░реЗ рдмреЙрдЯ рдХреЗ рдХрдорд╛рдВрдб рдХреА рд╕реВрдЪреА рдХреЛ рд▓реМрдЯрд╛рддреА рд╣реИ, рдЬреЛ рдмреЙрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред


  def get_commands(self): # type: () -> [BotCommand] commands = [ BotCommand('start', ' '), BotCommand('menu', ' '), BotCommand('vmp', '  '), ] return commands 

рдЪрд▓рд┐рдП main_menu_buttons рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдореЗрди рдореЗрдиреВ рдкрд░ рдмрдЯрдиреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ / рдореЗрдиреВ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


  def main_menu_buttons(self): # type: () -> [] buttons = [ #       -  [CallbackButtonCmd(' ', 'start')], #        - .    -  [CallbackButtonCmd('  ', 'vmp', intent=Intent.POSITIVE)], ] return buttons 

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


рдЗрд╕ рд░рд╛рдЬреНрдп рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдБ рд╣реИ ред


рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ @devhelpbot рдмреЛрдЯ рдХреЛ рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред


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


рд╡реИрд╕реЗ, рдЖрдк рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЪреИрдЯ рдореЗрдВ рдкреНрд░рд╢реНрди рдЬрд▓реНрджреА рд╕реЗ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ ред рд╡рд╣рд╛рдВ рд╕реАрдзреЗ рд╕реБрдЭрд╛рд╡ / рд╡рд┐рдЪрд╛рд░ред

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


All Articles