Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΡ€Π·ΠΈΠ½ΡƒΠŸΠΎΠ·Π²ΠΎΠ½ΠΈΡ‚ΡŒ
Найти Π² Π”Π·Π΅Π½Π΅
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста

πŸπŸ€–πŸ’¬ Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π±ΠΎΡ‚Π°-Π°Π²Ρ‚ΠΎΠΎΡ‚Π²Π΅Ρ‚Ρ‡ΠΈΠΊΠ° для Telegram Π½Π° ChatGPT ΠΈ Aiogram 3: пошаговоС руководство

НС Ρ‚Π°ΠΊ Π΄Π°Π²Π½ΠΎ Π² Telegram Π²Ρ‹ΡˆΠ»ΠΎ большоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ – Β«Telegram для бизнСса». Π’ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠ½ΠΎ доступно для Premium-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π° Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, вСроятно, станСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ напишСм Π±ΠΎΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° Π»ΠΈΡ‡Π½Ρ‹Π΅ сообщСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ChatGPT. НС Ρ‚Π°ΠΊ Π΄Π°Π²Π½ΠΎ Π² Telegram Π²Ρ‹ΡˆΠ»ΠΎ большоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ – Β«Telegram для бизнСса». Π’ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠ½ΠΎ доступно для Premium-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π° Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, вСроятно, станСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ. Β«Telegram для бизнСса» прСдоставляСт собой Π½ΠΎΠ²Ρ‹ΠΉ способ взаимодСйствия с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· Telegram, вводя для этого Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: Из всСго этого Π½Π°Π±ΠΎΡ€Π° нас интСрСсуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° ΠΏΡƒΠ½ΠΊΡ‚Π°: Π§Π°Ρ‚-Π±ΠΎΡ‚Ρ‹ ΠΈ Часы Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π§Ρ‚ΠΎ ΠΌΡ‹ с Π²Π°ΠΌΠΈ сдСлаСм? Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ создадим Telegram-Π±ΠΎΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π»ΠΈΡ‡Π½Ρ‹Π΅ сообщСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½Π΅Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ врСмя ΠΈ для ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ChatGPT ΠΎΡ‚ OpenAI. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ OpenAI нСдоступСн Π½Π° Ρ‚Π΅Ρ€Ρ€ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π Π€, вмСсто Π½Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сСрвис NeuroAPI. Он прСдоставляСт доступ ΠΊ OpenAI ΠΈΠ· России ΠΈ БНГ ΠΏΠΎ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠΌ Ρ†Π΅Π½
ОглавлСниС

НС Ρ‚Π°ΠΊ Π΄Π°Π²Π½ΠΎ Π² Telegram Π²Ρ‹ΡˆΠ»ΠΎ большоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ – Β«Telegram для бизнСса». Π’ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠ½ΠΎ доступно для Premium-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π° Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, вСроятно, станСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ напишСм Π±ΠΎΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° Π»ΠΈΡ‡Π½Ρ‹Π΅ сообщСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ChatGPT.

НС Ρ‚Π°ΠΊ Π΄Π°Π²Π½ΠΎ Π² Telegram Π²Ρ‹ΡˆΠ»ΠΎ большоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ – Β«Telegram для бизнСса». Π’ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠ½ΠΎ доступно для Premium-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π° Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, вСроятно, станСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ.

Β«Telegram для бизнСса» прСдоставляСт собой Π½ΠΎΠ²Ρ‹ΠΉ способ взаимодСйствия с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· Telegram, вводя для этого Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  1. АдрСс – позволяСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ адрСс ΠΈ Π³Π΅ΠΎΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π² ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅.
  2. Часы Ρ€Π°Π±ΠΎΡ‚Ρ‹ – позволяСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊ Ρ€Π°Π±ΠΎΡ‚Ρ‹ бизнСса.
  3. БыстрыС ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ – позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ Β«ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹Ρ…Β» ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ².
  4. ΠŸΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΠΈΡ – позволяСт ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ автоматичСскоС привСтствиС для Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ².
  5. «НСт Π½Π° мСстС» – позволяСт ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ автоматичСскиС ΠΎΡ‚Π²Π΅Ρ‚Ρ‹, Π² Π½Π΅Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ врСмя.
  6. Бсылки Π½Π° Ρ‡Π°Ρ‚ – позволяСт ΠΊΠ°ΡΡ‚ΠΎΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ссылки Π½Π° Ρ‡Π°Ρ‚ с Π²Π°ΠΌΠΈ.
  7. Π’ΠΈΠ΄ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‡Π°Ρ‚Π° – позволяСт ΠΊΠ°ΡΡ‚ΠΎΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄ Ρ‡Π°Ρ‚Π° для ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Π» Ρ‡Π°Ρ‚ с Π²Π°ΠΌΠΈ, Π½ΠΎ Π΅Ρ‰Ρ‘ Π½Π΅ написал сообщСниС.
  8. Π§Π°Ρ‚-Π±ΠΎΡ‚Ρ‹ – позволяСт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊ ΡƒΡ‡Ρ‘Ρ‚Π½ΠΎΠΉ записи Π±ΠΎΡ‚Π° для взаимодСйствия с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ Π² Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‡Π°Ρ‚Π°Ρ….
   Telegram для бизнСса
Telegram для бизнСса

Из всСго этого Π½Π°Π±ΠΎΡ€Π° нас интСрСсуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° ΠΏΡƒΠ½ΠΊΡ‚Π°: Π§Π°Ρ‚-Π±ΠΎΡ‚Ρ‹ ΠΈ Часы Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π§Ρ‚ΠΎ ΠΌΡ‹ с Π²Π°ΠΌΠΈ сдСлаСм?

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ создадим Telegram-Π±ΠΎΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π»ΠΈΡ‡Π½Ρ‹Π΅ сообщСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½Π΅Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ врСмя ΠΈ для ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ChatGPT ΠΎΡ‚ OpenAI.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ OpenAI нСдоступСн Π½Π° Ρ‚Π΅Ρ€Ρ€ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π Π€, вмСсто Π½Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сСрвис NeuroAPI. Он прСдоставляСт доступ ΠΊ OpenAI ΠΈΠ· России ΠΈ БНГ ΠΏΠΎ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠΌ Ρ†Π΅Π½Π°ΠΌ.

Как это ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±ΠΎΡ‚ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ частному Π»ΠΈΡ†Ρƒ, сдСлав Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ассистСнта Π½Π° врСмя отсутствия Π² сСти, Ρ‚Π°ΠΊ ΠΈ бизнСсу для взаимодСйствия с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ Π² Π½Π΅Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ врСмя.

Главная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² составлСнии Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΠ³ΠΎ «систСмного ΠΏΡ€ΠΎΠΌΡ‚Π°Β», ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ваши потрСбности.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±ΠΎΡ‚Π° Π² ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅

Для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π±ΠΎΡ‚. Как Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ рассказано Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ AIOgram3 1.5. РСгистрация Π±ΠΎΡ‚Π°

ПослС создания Π±ΠΎΡ‚Π° ΠΈ получСния Ρ‚ΠΎΠΊΠ΅Π½Π°, Π² интСрфСйсС BotFather, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ /mybots для Π²Ρ‹Π²ΠΎΠ΄Π° списка всСх Π±ΠΎΡ‚ΠΎΠ².Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Π±ΠΎΡ‚Π°.

Π—Π°Ρ‚Π΅ΠΌ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ мСню Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ Bot Settings.

   Bot Settings
Bot Settings

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ мСню Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ Business Mode.

   Business Mode
Business Mode

Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ бизнСс Ρ€Π΅ΠΆΠΈΠΌ.

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ бизнСс Ρ€Π΅ΠΆΠΈΠΌ для Π±ΠΎΡ‚Π°, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ настройки Telegram ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ Telegram для бизнСса, Π° Π² Π½Ρ‘ΠΌ ΠΏΡƒΠ½ΠΊΡ‚ Π§Π°Ρ‚-Π±ΠΎΡ‚Ρ‹.

Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Π² ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΏΡ€ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ ссылку Π½Π° Π±ΠΎΡ‚Π° t.me/mybot ΠΈΠ»ΠΈ Π΅Π³ΠΎ имя @mybot.

   Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΠΎΡ‚Π° ΠΊ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŽ
Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΠΎΡ‚Π° ΠΊ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŽ

Π“ΠΎΡ‚ΠΎΠ²ΠΎ.

🐍 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° питониста

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° питониста»

πŸπŸŽ“ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° собСса ΠΏΠΎ Python

ΠŸΠΎΠ΄Ρ‚ΡΠ½ΡƒΡ‚ΡŒ свои знания ΠΏΠΎ Python Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° собСса ΠΏΠΎ PythonΒ»

🐍🧩 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ Python

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ Python для ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ PythonΒ»

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ для вас IDE ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅.

Если Π²Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ PyCharm, Ρ‚ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ создаст IDE для Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Если Π²Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ VSCode, Ρ‚ΠΎ Π΅Π³ΠΎ придётся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ:

  1. aiogram – Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для Π±ΠΎΡ‚Π°.
  2. pydantic-settings – Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для создания классов ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ.
  3. openai – ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° OpenAI для Python.
  4. pytz – Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с часовыми поясами.
  5. httpx – БоврСмСнная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для создания синхронных/асинхронных запросов.
  6. redis – Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Redis.

УстановитС ΠΈΡ…, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» requirements.txt ΠΈ внСситС Π² Π½Π΅Π³ΠΎ установлСнныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ:

Π”Π°Π»Π΅Π΅ создайтС Ρ„Π°ΠΉΠ» .env для хранСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния.НСобходимы ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

  1. token – Π’ΠΎΠΊΠ΅Π½ Π±ΠΎΡ‚Π°, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚ BotFather.
  2. admin_id – Telegram-id администратора.
  3. openai_key – API-ΠΊΠ»ΡŽΡ‡ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π½Π° сайтС NeuroAPI ΠΈΠ»ΠΈ OpenAI.
  4. openai_base_url – АдрСс прокси-сСрвСра для OpenAI.
  5. redis_host – Π₯ост для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Redis. Π’ нашСм случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Docker compose, поэтому прописываСм имя сСрвиса – redis.
  6. 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-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.

ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ„Π°ΠΉΠ»Π°

Π‘Ρ‚Π°Ρ‚ΡŒΡ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

πŸ€–πŸ‘¨β€πŸ’» ПишСм Telegram-Π±ΠΎΡ‚Π° для ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΊ собСсСдованию Π½Π° Frontend-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ строк

Для хранСния тСкстовых строк Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ app создайтС Ρ„Π°ΠΉΠ» views.py.

Π­Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ с функциями ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ тСкста ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ способ.

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ‚Ρ€ΠΈ простыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Ρ‚Π΅ΠΊΡΡ‚Ρ€ΠΎΠ²ΡƒΡŽ строку:

  1. start_bot_message – Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎ запускС Π±ΠΎΡ‚Π° для администратора.
  2. stop_bot_message – Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± остановкС Π±ΠΎΡ‚Π° для администратора.
  3. system_prompt – БистСмный ΠΏΡ€ΠΎΠΌΡ‚, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ChatGPT.

Код

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

Π’ Telegram часы Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ дням с понСдСльника ΠΏΠΎ Π²ΠΎΡΠΊΡ€Π΅ΡΠ΅Π½ΡŒΠ΅. Π’ ΠΊΠΎΠ΄Π΅ ΠΆΠ΅ это выглядит ΠΊΠ°ΠΊ список ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса BusinessOpeningHoursInterval.

Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ класса BusinessOpeningHoursInterval Π΅ΡΡ‚ΡŒ Π΄Π²Π° поля: opening_minute ΠΈ closing_minute, прСдставлСнныС Π² Π²ΠΈΠ΄Π΅ количСства ΠΌΠΈΠ½ΡƒΡ‚ ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… с 00:00 блиТайшСго понСдСльника, с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·ΠΎΠ½Ρ‹.

НСобходимо ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ количСство ΠΌΠΈΠ½ΡƒΡ‚, ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… с понСдСльника, ΠΈ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΏΠΎ списку, провСряя, Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ число Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ². Если Π²Ρ…ΠΎΠ΄ΠΈΡ‚, Ρ‚ΠΎ Π±ΠΎΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сообщСния. Если Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚, Π±ΠΎΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° сообщСния.

Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ app, создайтС Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ utils. Π’ этом ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ создайтС Ρ„Π°ΠΉΠ» opening_hours.py.

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ check_opening_hours, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΡƒΡŽ opening_hours – ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса BusinessOpeningHours.

Класс BusinessOpeningHours содСрТит Π΄Π²Π° поля:

  1. time_zone_name – НазваниС Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·ΠΎΠ½Ρ‹. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ Telegram ΠΏΡ€ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹.
  2. opening_hours – Упомянутый Π²Ρ‹ΡˆΠ΅ список с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ класса BusinessOpeningHoursInterval.

Π”Π°Π»Π΅Π΅ создайтС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

  1. tz – Π’ Π½Π΅ΠΉ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ pytz ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·ΠΎΠ½Π΅.
  2. now – Π’ Π½Π΅ΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ врСмя с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·ΠΎΠ½Ρ‹.
  3. monday_start – Π’ Π½Π΅ΠΉ высчитываСм врСмя Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° понСдСльника.
  4. 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 создайтС запрос, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π² Π½Π΅Π³ΠΎ:

  1. model – Выбранная модСль ChatGPT, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, gpt-3.5-turbo, gpt-4-turbo, gpt-4o ΠΈΠ»ΠΈ Π»ΡŽΠ±ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡƒΡŽ OpenAI.
  2. messages – Бписок словарСй с сообщСниями.
  3. max_tokens – ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° максимальноС количСство Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅.
  4. 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-ΠΊΠ°Π½Π°Π»Π° Код Π½Π° салфСткС. Π£ нас Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ сайт.

Telegram
33,2 тыс ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ΡΡ