ΠΠ΅ ΡΠ°ΠΊ Π΄Π°Π²Π½ΠΎ Π² Telegram Π²ΡΡΠ»ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ β Β«Telegram Π΄Π»Ρ Π±ΠΈΠ·Π½Π΅ΡΠ°Β». Π Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠ½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π΄Π»Ρ Premium-ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, Π° Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΡΠ°Π½Π΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π±ΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π° Π»ΠΈΡΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ChatGPT.
ΠΠ΅ ΡΠ°ΠΊ Π΄Π°Π²Π½ΠΎ Π² Telegram Π²ΡΡΠ»ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ β Β«Telegram Π΄Π»Ρ Π±ΠΈΠ·Π½Π΅ΡΠ°Β». Π Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠ½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π΄Π»Ρ Premium-ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, Π° Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΡΠ°Π½Π΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ.
Β«Telegram Π΄Π»Ρ Π±ΠΈΠ·Π½Π΅ΡΠ°Β» ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½ΠΎΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· Telegram, Π²Π²ΠΎΠ΄Ρ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
- ΠΠ΄ΡΠ΅Ρ β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ Π°Π΄ΡΠ΅Ρ ΠΈ Π³Π΅ΠΎΠΏΠΎΠ·ΠΈΡΠΈΡ Π² ΠΏΡΠΎΡΠΈΠ»Π΅.
- Π§Π°ΡΡ ΡΠ°Π±ΠΎΡΡ β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ Π³ΡΠ°ΡΠΈΠΊ ΡΠ°Π±ΠΎΡΡ Π±ΠΈΠ·Π½Π΅ΡΠ°.
- ΠΡΡΡΡΡΠ΅ ΠΎΡΠ²Π΅ΡΡ β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π°Π±ΠΎΡ Β«ΡΠ°Π±Π»ΠΎΠ½Π½ΡΡ Β» ΠΎΡΠ²Π΅ΡΠΎΠ².
- ΠΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΡ β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π΄Π»Ρ Π½ΠΎΠ²ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ².
- Β«ΠΠ΅Ρ Π½Π° ΠΌΠ΅ΡΡΠ΅Β» β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠ²Π΅ΡΡ, Π² Π½Π΅ΡΠ°Π±ΠΎΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ.
- Π‘ΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ°Ρ β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ°Ρ Ρ Π²Π°ΠΌΠΈ.
- ΠΠΈΠ΄ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΡΠ° β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΈΠ΄ ΡΠ°ΡΠ° Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠΊΡΡΠ» ΡΠ°Ρ Ρ Π²Π°ΠΌΠΈ, Π½ΠΎ Π΅ΡΡ Π½Π΅ Π½Π°ΠΏΠΈΡΠ°Π» ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
- Π§Π°Ρ-Π±ΠΎΡΡ β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΊ ΡΡΡΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π±ΠΎΡΠ° Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ Π² Π»ΠΈΡΠ½ΡΡ ΡΠ°ΡΠ°Ρ .
ΠΠ· Π²ΡΠ΅Π³ΠΎ ΡΡΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π° ΠΏΡΠ½ΠΊΡΠ°: Π§Π°Ρ-Π±ΠΎΡΡ ΠΈ Π§Π°ΡΡ ΡΠ°Π±ΠΎΡΡ.
Π§ΡΠΎ ΠΌΡ Ρ Π²Π°ΠΌΠΈ ΡΠ΄Π΅Π»Π°Π΅ΠΌ?
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Telegram-Π±ΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π»ΠΈΡΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Π½Π΅ΡΠ°Π±ΠΎΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΈ Π΄Π»Ρ ΠΎΡΠ²Π΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ChatGPT ΠΎΡ OpenAI.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ OpenAI Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½Π° ΡΠ΅ΡΡΠΈΡΠΎΡΠΈΠΈ Π Π€, Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ²ΠΈΡ NeuroAPI. ΠΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ OpenAI ΠΈΠ· Π ΠΎΡΡΠΈΠΈ ΠΈ Π‘ΠΠ ΠΏΠΎ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠΌ ΡΠ΅Π½Π°ΠΌ.
ΠΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ?
ΠΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π² ΡΡΠ°ΡΡΠ΅ Π±ΠΎΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΡΠ°ΡΡΠ½ΠΎΠΌΡ Π»ΠΈΡΡ, ΡΠ΄Π΅Π»Π°Π² Π»ΠΈΡΠ½ΠΎΠ³ΠΎ Π°ΡΡΠΈΡΡΠ΅Π½ΡΠ° Π½Π° Π²ΡΠ΅ΠΌΡ ΠΎΡΡΡΡΡΡΠ²ΠΈΡ Π² ΡΠ΅ΡΠΈ, ΡΠ°ΠΊ ΠΈ Π±ΠΈΠ·Π½Π΅ΡΡ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ Π² Π½Π΅ΡΠ°Π±ΠΎΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ.
ΠΠ»Π°Π²Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π³ΡΠ°ΠΌΠΎΡΠ½ΠΎΠ³ΠΎ Β«ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΌΡΠ°Β», ΠΏΠΎΠΊΡΡΠ²Π°ΡΡΠ΅Π³ΠΎ Π²Π°ΡΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠΈ.
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΠΎΡΠ° Π² ΠΏΡΠΎΡΠΈΠ»Π΅
ΠΠ»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ Π±ΠΎΡ. ΠΠ°ΠΊ Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΡΠ°ΡΡΠ΅ AIOgram3 1.5. Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π±ΠΎΡΠ°
ΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±ΠΎΡΠ° ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΊΠ΅Π½Π°, Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ BotFather, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ /mybots Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΏΠΈΡΠΊΠ° Π²ΡΠ΅Ρ Π±ΠΎΡΠΎΠ².ΠΡΠ±Π΅ΡΠΈΡΠ΅ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ Π±ΠΎΡΠ°.
ΠΠ°ΡΠ΅ΠΌ Π² ΠΎΡΠΊΡΡΠ²ΡΠ΅ΠΌΡΡ ΠΌΠ΅Π½Ρ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΡΠ½ΠΊΡ Bot Settings.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΌΠ΅Π½Ρ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΡΠ½ΠΊΡ Business Mode.
ΠΠΊΠ»ΡΡΠΈΡΠ΅ Π±ΠΈΠ·Π½Π΅Ρ ΡΠ΅ΠΆΠΈΠΌ.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΠΊΠ»ΡΡΠΈΠ»ΠΈ Π±ΠΈΠ·Π½Π΅Ρ ΡΠ΅ΠΆΠΈΠΌ Π΄Π»Ρ Π±ΠΎΡΠ°, ΠΎΡΠΊΡΠΎΠΉΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Telegram ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΡΠ½ΠΊΡ Telegram Π΄Π»Ρ Π±ΠΈΠ·Π½Π΅ΡΠ°, Π° Π² Π½ΡΠΌ ΠΏΡΠ½ΠΊΡ Π§Π°Ρ-Π±ΠΎΡΡ.
Π ΠΎΡΠΊΡΡΠ²ΡΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Π² ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΏΡΠΎΠΏΠΈΡΠΈΡΠ΅ ΡΡΡΠ»ΠΊΡ Π½Π° Π±ΠΎΡΠ° t.me/mybot ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΈΠΌΡ @mybot.
ΠΠΎΡΠΎΠ²ΠΎ.
π ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΈΡΠΎΠ½ΠΈΡΡΠ°
ΠΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π½Π° Π½Π°ΡΠ΅ΠΌ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΈΡΠΎΠ½ΠΈΡΡΠ°Β»
ππ ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎΠ±Π΅ΡΠ° ΠΏΠΎ Python
ΠΠΎΠ΄ΡΡΠ½ΡΡΡ ΡΠ²ΠΎΠΈ Π·Π½Π°Π½ΠΈΡ ΠΏΠΎ Python Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π° Π½Π°ΡΠ΅ΠΌ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎΠ±Π΅ΡΠ° ΠΏΠΎ PythonΒ»
ππ§© ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π°Π΄Π°Ρ ΠΏΠΎ Python
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎ Python Π΄Π»Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π° Π½Π°ΡΠ΅ΠΌ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π°Π΄Π°Ρ ΠΏΠΎ PythonΒ»
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π² ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ Π΄Π»Ρ Π²Π°Ρ IDE ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠΉΡΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅.
ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ΡΡ PyCharm, ΡΠΎ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ IDE Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ΡΡ VSCode, ΡΠΎ Π΅Π³ΠΎ ΠΏΡΠΈΠ΄ΡΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π²ΡΡΡΠ½ΡΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
- aiogram β Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ Π±ΠΎΡΠ°.
- pydantic-settings β ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ.
- openai β ΠΡΠΈΡΠΈΠ°Π»ΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° OpenAI Π΄Π»Ρ Python.
- pytz β ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΡΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΡΡΠ°ΠΌΠΈ.
- httpx β Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ /Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ².
- redis β ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Redis.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΈΡ , Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» requirements.txt ΠΈ Π²Π½Π΅ΡΠΈΡΠ΅ Π² Π½Π΅Π³ΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
ΠΠ°Π»Π΅Π΅ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» .env Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ.ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅:
- token β Π’ΠΎΠΊΠ΅Π½ Π±ΠΎΡΠ°, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΎΡ BotFather.
- admin_id β Telegram-id Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°.
- openai_key β API-ΠΊΠ»ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ Π½Π° ΡΠ°ΠΉΡΠ΅ NeuroAPI ΠΈΠ»ΠΈ OpenAI.
- openai_base_url β ΠΠ΄ΡΠ΅Ρ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠ° Π΄Π»Ρ OpenAI.
- redis_host β Π₯ΠΎΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Redis. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Docker compose, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΈΠΌΡ ΡΠ΅ΡΠ²ΠΈΡΠ° β redis.
- delay β ΠΠ°Π΄Π΅ΡΠΆΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΡΠ²Π΅ΡΠ°ΠΌΠΈ Π² ΠΌΠΈΠ½ΡΡΠ°Ρ . ΠΠ± ΡΡΠΎΠΌ Π½ΠΈΠΆΠ΅.
ΠΡΠΈΠΌΠ΅Ρ:
Π’Π°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» main.py ΠΈ ΠΏΠ°ΠΊΠ΅Ρ (Python package) app.
Π€Π°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
Π ΠΏΠ°ΠΊΠ΅ΡΠ΅ app ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» settings.py. Π Π½ΡΠΌ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· .env-ΡΠ°ΠΉΠ»Π° ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΈΠ½ΡΡΠ°Π½Ρ Π±ΠΎΡΠ° ΠΈ Redis.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ»Π°ΡΡ Secrets, ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΡ BaseSettings. ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈΠ· .env-ΡΠ°ΠΉΠ»Π° Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΈΡ Π² Python-ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° pydantic-settings.
Π ΡΠ΅Π»Π΅ ΠΊΠ»Π°ΡΡΠ° ΠΏΡΠΎΠΏΠΈΡΠΈΡΠ΅ ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π΅ΠΉ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ :
ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ»Π΅ΠΉ, Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ° Π½Π°ΠΏΠΈΡΠΈΡΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΊΠ»Π°ΡΡ Config, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΈΠ· ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π±ΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ:
ΠΠΎΠ΄ ΠΊΠ»Π°ΡΡΠΎΠΌ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ secrets ΠΈ ΠΎΠ±ΡΡΠ²ΠΈΠΌ Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° Secrets.
ΠΠ°Π»Π΅Π΅ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ redis_conn, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Redis, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ Π°Π΄ΡΠ΅Ρ Ρ ΠΎΡΡΠ°. ΠΡΠ΄ΡΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΊΠ»Π°ΡΡΠ°! ΠΠ°ΠΌ Π½ΡΠΆΠ΅Π½ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ Redis.
ΠΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ bot. ΠΠ±ΡΡΠ²ΠΈΡΠ΅ Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° Bot, ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π² Π½Π΅Π³ΠΎ ΡΠΎΠΊΠ΅Π½ ΠΈ ΡΠ΅ΠΆΠΈΠΌ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
ΠΡΠΎ parse_mode: ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΠΎΡΠ²Π΅ΡΠ΅ ChatGPT ΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Β«ΡΠ°ΡΠΏΠ°ΡΡΠΈΡΡΒ». ΠΠ΅ΡΠ΅Π΄Π°Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ parse_mode="Markdown", ΠΌΡ ΡΠΎΠΎΠ±ΡΠ°Π΅ΠΌ Π±ΠΎΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ Ρ Markdown-ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.
ΠΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠ°ΠΉΠ»Π°
Π‘ΡΠ°ΡΡΡ ΠΏΠΎ ΡΠ΅ΠΌΠ΅
Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΡΡΡΠΎΠΊ
ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΡΡΠΎΠΊ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ app ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» views.py.
ΠΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½Π΅ Π΄Π΅Π»Π°ΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Π°ΡΠΈΠ°Π½Ρ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ° ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΡΠΈ ΠΏΡΠΎΡΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ΅ΠΊΡΡΡΠΎΠ²ΡΡ ΡΡΡΠΎΠΊΡ:
- start_bot_message β Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ Π·Π°ΠΏΡΡΠΊΠ΅ Π±ΠΎΡΠ° Π΄Π»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°.
- stop_bot_message β Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π±ΠΎΡΠ° Π΄Π»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°.
- system_prompt β Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΏΡΠΎΠΌΡ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ChatGPT.
ΠΠΎΠ΄
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
Π Telegram ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΠΏΠΎ Π΄Π½ΡΠΌ Ρ ΠΏΠΎΠ½Π΅Π΄Π΅Π»ΡΠ½ΠΈΠΊΠ° ΠΏΠΎ Π²ΠΎΡΠΊΡΠ΅ΡΠ΅Π½ΡΠ΅. Π ΠΊΠΎΠ΄Π΅ ΠΆΠ΅ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΎΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ° BusinessOpeningHoursInterval.
Π ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΠΊΠ»Π°ΡΡΠ° BusinessOpeningHoursInterval Π΅ΡΡΡ Π΄Π²Π° ΠΏΠΎΠ»Ρ: opening_minute ΠΈ closing_minute, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΌΠΈΠ½ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΡ Ρ 00:00 Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π³ΠΎ ΠΏΠΎΠ½Π΅Π΄Π΅Π»ΡΠ½ΠΈΠΊΠ°, Ρ ΡΡΡΡΠΎΠΌ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·ΠΎΠ½Ρ.
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠΈΠ½ΡΡ, ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΡ Ρ ΠΏΠΎΠ½Π΅Π΄Π΅Π»ΡΠ½ΠΈΠΊΠ°, ΠΈ ΠΏΡΠΎΠΉΡΠΈΡΡ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡ, Π²Ρ ΠΎΠ΄ΠΈΡ Π»ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ². ΠΡΠ»ΠΈ Π²Ρ ΠΎΠ΄ΠΈΡ, ΡΠΎ Π±ΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ Π½Π΅ Π²Ρ ΠΎΠ΄ΠΈΡ, Π±ΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ.
Π ΠΏΠ°ΠΊΠ΅ΡΠ΅ app, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ utils. Π ΡΡΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» opening_hours.py.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ check_opening_hours, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ opening_hours β ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° BusinessOpeningHours.
ΠΠ»Π°ΡΡ BusinessOpeningHours ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π²Π° ΠΏΠΎΠ»Ρ:
- time_zone_name β ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·ΠΎΠ½Ρ. ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π² ΠΏΡΠΎΡΠΈΠ»Π΅ Telegram ΠΏΡΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π³ΡΠ°ΡΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΡ.
- opening_hours β Π£ΠΏΠΎΠΌΡΠ½ΡΡΡΠΉ Π²ΡΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ° BusinessOpeningHoursInterval.
ΠΠ°Π»Π΅Π΅ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ΅ΡΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅:
- tz β Π Π½Π΅ΠΉ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ pytz ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·ΠΎΠ½Π΅.
- now β Π Π½Π΅ΠΉ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Ρ ΡΡΡΡΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·ΠΎΠ½Ρ.
- monday_start β Π Π½Π΅ΠΉ Π²ΡΡΡΠΈΡΡΠ²Π°Π΅ΠΌ Π²ΡΠ΅ΠΌΡ Π΄ΠΎ Π½Π°ΡΠ°Π»Π° ΠΏΠΎΠ½Π΅Π΄Π΅Π»ΡΠ½ΠΈΠΊΠ°.
- minutes_since_monday β Π Π½Π΅ΠΉ Π²ΡΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ»ΠΎ ΠΌΠΈΠ½ΡΡ Ρ Π½Π°ΡΠ°Π»Π° Π½Π΅Π΄Π΅Π»ΠΈ.
ΠΠ°Π»Π΅Π΅ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΈΠΊΠ», Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠ² ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, Π²Ρ ΠΎΠ΄ΠΈΡ Π»ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π² ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ.
ΠΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ΄
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
ΠΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ ΠΈ Π»ΠΈΠ±ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π»ΡΡΠ΅ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ, Π»ΠΈΠ±ΠΎ Β«ΡΠ±ΡΠΎΡΠΈΡΡΒ» Π΅Π³ΠΎ, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΡΠ΅Π°Π³ΠΈΡΡΡ.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΈΠ΄Π΄Π»Π²Π°ΡΠΈ (middleware) β ΡΡΠΎ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ Β«ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΠΊΠΈΒ», ΡΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠΈΠ΅ Π΄ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π»ΠΎΠ³ΠΈΠΊΠΈ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΏΠΈΡΡ Π² ΠΠ, ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
Π ΠΏΠ°ΠΊΠ΅ΡΠ΅ app ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ middlewares. Π Π½ΡΠΌ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» business_middleware.py.
Π ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ»Π°ΡΡ BusinessMiddleware, ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΡ BaseMiddleware.
Π Π½ΡΠΌ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ dunder-ΠΌΠ΅ΡΠΎΠ΄ __call__, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠΈΠΉ self, handler, event, data.
ΠΠ°Π»Π΅Π΅ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ· ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ°ΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° BusinessOpeningHours.
ΠΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΡΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅
Π Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΉ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠΎΡΡΠ° Π²Π΅ΡΡΠΈΠΈ aiogram 3.6.0, Π·Π°ΡΠ²Π»Π΅Π½Π° ΠΏΠΎΠ»Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Bot API 7.3. ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ°ΡΠ°, ΡΠΎ ΡΠ°ΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ business_opening_hours, ΠΎΠ΄Π½Π°ΠΊΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° BusinessOpeningHours ΡΠ°ΠΌ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ None.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Β«ΠΊΠΎΡΡΡΠ»ΡΒ» Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ aiogram Π±ΡΠ» ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ Π±Π°Π³-ΡΠ΅ΠΏΠΎΡΡ. ΠΡΠ»ΠΈ Π² Π±ΡΠ΄ΡΡΠΈΡ Π²Π΅ΡΡΠΈΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π°, ΠΏΠΎΡΡ Π±ΡΠ΄Π΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ½.
ΠΠΎΠ½Π΅Ρ Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΡΡΡΡΠΏΠ»Π΅Π½ΠΈΡ
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π³ΡΠ°ΡΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΡ ΠΌΡ ΠΎΠ±ΡΠ°ΡΠΈΠΌΡΡ ΠΊ API Telegram.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ httpx, ΠΎΡΠΊΡΠΎΠΉΡΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ.
Π ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ response ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ GET-Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Telegram.
Π ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ chat ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ JSON-ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ response.
ΠΠ°ΡΠ΅ΠΌ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ full_chat ΡΠΎΠ·Π΄Π°ΡΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° ChatFullInfo, ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°Π² Π² Π½Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ chat ΠΏΠΎ ΠΊΠ»ΡΡΡ result. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ ΡΠΈΡΡΡΠ΅ JSON-Π΄Π°Π½Π½ΡΠ΅ Π² Python-ΠΎΠ±ΡΠ΅ΠΊΡΡ.
ΠΠ°Π»Π΅Π΅ Π² Π±Π»ΠΎΠΊΠ΅ if Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΠ°Π½Π΅Π΅ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ check_opening_hours, ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π² Π½Π΅Ρ full_chat.business_opening_hours.
ΠΡΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ True, ΠΌΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ.
ΠΠ½ΡΡΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ context, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ° event_context ΠΈΠ· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ data.
ΠΠ°Π»ΡΡΠ΅ Π΅ΡΡ ΠΎΠ΄Π½ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ if, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ business_connection_id, Ρ. Π΅. ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈΡΠ½ΡΠΌ ΠΈ ΡΡΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π΅ Π°Π΄ΠΌΠΈΠ½, ΠΈΠ½Π°ΡΠ΅ Π±ΠΎΡ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π½Π° Π²Π°ΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠΎΠΆΠ΅. ΠΡΠ»ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π»ΡΡΠ΅ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ.
ΠΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠ°ΠΉΠ»Π°
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ChatGPT
Π ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄Π΅ΠΌ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π·Π°ΠΏΡΠΎΡ ΠΊ ChatGPT ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΎΡΠ²Π΅Ρ.
Π ΠΏΠ°ΠΊΠ΅ΡΠ΅ utils, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» openai_actions.py.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ get_chat_completion, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ message β ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° Message.
Π ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ http_client ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° httpx.AsyncClient. ΠΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ HTTP-ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄ΡΠ½ Π·Π°ΠΏΡΠΎΡ.
Π ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ client ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° AsyncOpenAI, ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π² Π½Π΅Π³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ: api_key, http_client ΠΈ base_url. ΠΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄Π»Ρ OpenAI.
ΠΠ°Π»Π΅Π΅ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ messages ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ, Π³Π΄Π΅ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ β ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΏΡΠΎΠΌΡ, Π° Π²ΡΠΎΡΠΎΠΉ β ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ:
Π ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ response ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π·Π°ΠΏΡΠΎΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π² Π½Π΅Π³ΠΎ:
- model β ΠΡΠ±ΡΠ°Π½Π½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ChatGPT, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, gpt-3.5-turbo, gpt-4-turbo, gpt-4o ΠΈΠ»ΠΈ Π»ΡΠ±ΡΡ Π΄ΡΡΠ³ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ OpenAI.
- messages β Π‘ΠΏΠΈΡΠΎΠΊ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ.
- max_tokens β ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΠΊΠ΅Π½ΠΎΠ² Π² ΠΎΡΠ²Π΅ΡΠ΅.
- temperature β Π’Π΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ 0 Π΄ΠΎ 1. ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠΎΠ²Π΅Π½Ρ Β«ΡΠ°Π½ΡΠ°Π·ΠΈΠΈΒ» Π±ΠΎΡΠ°. Π§Π΅ΠΌ Π±Π»ΠΈΠΆΠ΅ ΡΠΈΡΠ»ΠΎ ΠΊ Π½ΡΠ»Ρ, ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡ Π±ΡΠ΄ΡΡ ΠΎΡΠ²Π΅ΡΡ ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΡΠ΅ΠΌ Π±Π»ΠΈΠΆΠ΅ ΠΊ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅, ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌΠΈ Π±ΡΠ΄ΡΡ ΠΎΡΠ²Π΅ΡΡ.
Π Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π·Π°ΠΏΡΠΎΡΠ° Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ:
ΠΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ΄
ΠΠ°Π΄Π΅ΡΠΆΠΊΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π½Π΅ ΡΠΏΠ°ΠΌΠΈΠ»ΠΈ ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π»ΠΈΡΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊ Β«Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ GPTΒ», Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π·Π°Π΄Π΅ΡΠΆΠΊΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
Π Π²Π°ΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ Π½ΡΠΆΠ½Π°.
Π ΠΏΠ°ΠΊΠ΅ΡΠ΅ utils ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» check_delay.py, Π° Π² Π½ΡΠΌ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ check_user_delay, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ user_id.
Π’ΡΡ-ΡΠΎ Π½Π°ΠΌ ΠΈ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Redis Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ID ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΡΡΠ³ΡΡ ΠΠ ΠΈΠ»ΠΈ Π²ΠΎΠ²ΡΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ Π² ΠΊΠΎΠ΄Π΅, ΡΡΠΎ Π½Π΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ.
Π ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ last_message_time ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΈΠ· Redis ΠΏΠΎ user_id Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ Π΅ΡΡΡ. ΠΡΠ»ΠΈ Π΅Π³ΠΎ Π½Π΅Ρ β Π²Π΅ΡΠ½ΡΡΡΡ None.
Π Π±Π»ΠΎΠΊΠ΅ if ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΡΠΎ last_message_time True (ΠΏΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, Π½Π΅ None).ΠΠ½ΡΡΡΠΈ Π±Π»ΠΎΠΊΠ° Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ time_since_last_message ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΠΈΠ· Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°.ΠΠΈΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² .env Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠΉ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ, ΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ False.
ΠΠΎ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ True.
ΠΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ΄
ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π±ΠΈΠ·Π½Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
ΠΡΡΠ°Π»ΠΎΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ, Π² ΠΊΠΎΡΠΎΡΡΠΉ middleware Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
Π ΠΏΠ°ΠΊΠ΅ΡΠ΅ app ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ handlers, Π° Π² Π½ΡΠΌ ΡΠ°ΠΉΠ» business_handler.py.
Π ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ handle_business_message, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ message β ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° Message.
Π ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π±Π»ΠΎΠΊ if, ΠΏΡΠΎΠ²Π΅ΡΡΡΡΠΈΠΉ Π·Π°Π΄Π΅ΡΠΆΠΊΡ ΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ° Π² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ (ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΌΠΎΠ³ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎ, Π° ΡΡΠΎ Π΄ΡΡΠ³Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΡ Ρ ChatGPT).
ΠΡΠ»ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, ΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ.
ΠΡΠ»ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅.
Π ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ answer Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ get_chat_completion, ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π² Π½Π΅Ρ message.
ΠΠ°ΡΠ΅ΠΌ ΠΎΡΠ²Π΅ΡΠ°Π΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ.
Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ Π² Redis Π²ΡΠ΅ΠΌΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ.
ΠΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ΄
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎ Π·Π°ΠΏΡΡΠΊΠ΅/ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π±ΠΎΡΠ°
ΠΠ΅Π±ΠΎΠ»ΡΡΠΎΠ΅, Π½ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
Π ΠΏΠ°ΠΊΠ΅ΡΠ΅ handlers ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» events.py.
Π Π½ΡΠΌ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΄Π²Π΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: start_bot ΠΈ stop_bot.
Π ΡΡΠ½ΠΊΡΠΈΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡ.
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ°ΠΉΠ»
ΠΠΎΠ³ΠΈΠΊΡ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ. Π’Π΅ΠΏΠ΅ΡΡ ΠΎΡΡΠ°Π»ΠΎΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π²ΡΡ Π²ΠΌΠ΅ΡΡΠ΅.
ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΠ°Π½Π΅Π΅ ΡΠ°ΠΉΠ» main.py. ΠΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΊΠΎΡΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΡΠ΄ΠΎΠΌ Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ .env.
Π Π½ΡΠΌ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ start.
Π ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ dp ΠΎΠ±ΡΡΠ²ΠΈΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Dispatcher.
ΠΠ°Π»Π΅Π΅ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ middleware ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° dp.business_message.register. Π Π΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° business_message, Π° Π½Π΅ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ message.
ΠΠ°Π»Π΅Π΅ Π² Π±Π»ΠΎΠΊΠ΅ try Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΎΡΠΈΡΡΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ , ΠΊΠΎΠ³Π΄Π° Π±ΠΎΡ Π±ΡΠ» ΠΎΡΠ»Π°ΠΉΠ½, ΠΈ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠ»Π»ΠΈΠ½Π³Π°, Π° Π² Π±Π»ΠΎΠΊΠ΅ finally Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±ΠΎΡΠ°.
ΠΠ½Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Π±Π»ΠΎΠΊΠ΅ if __name__ "__main__" Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠ°ΡΡ.
ΠΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ΄
ΠΠ°ΠΏΡΡΠΊ Π±ΠΎΡΠ°
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π±ΠΎΡΠ° ΠΈ Redis Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Docker compose.
Π‘ΠΏΠ΅ΡΠ²Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ°Π· Ρ Π±ΠΎΡΠΎΠΌ, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» Dockerfile ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ:
Π Π½ΡΠΌ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Docker-ΠΎΠ±ΡΠ°Π·, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΠ· ΡΠ°ΠΉΠ»Π° requirements.txt. ΠΠ°ΡΠ΅ΠΌ ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°ΠΏΡΡΠΊΠ° Π±ΠΎΡΠ°.
ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» docker-compose.yaml ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ:
Π Π½ΡΠΌ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π΄Π²Π° ΡΠ΅ΡΠ²ΠΈΡΠ°:
ΠΠ΅ΡΠ²ΡΠΉ bot. Π£ΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ°Π· ΠΈΠ· Dockerfile, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² Π½Π΅Π³ΠΎ .env-ΡΠ°ΠΉΠ» ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΡΡ ΠΏΠ°ΠΏΠΊΡ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
ΠΡΠΎΡΠΎΠΉ redis. Π£ΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ°Π· redis ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ, ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠ°ΠΏΠΊΡ redis_data Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΠΎΡΠ΅ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅.
ΠΠΎΡΠΎΠ²ΠΎ.
ΠΠ°ΠΏΡΡΡΠΈΡΡ Π±ΠΎΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
ΠΠΎΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ Π΄Π»Ρ Telegram-ΠΊΠ°Π½Π°Π»Π° ΠΠΎΠ΄ Π½Π° ΡΠ°Π»ΡΠ΅ΡΠΊΠ΅. Π£ Π½Π°Ρ ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΡΠ°ΠΉΡ.