Статистика telegram channel - @about_aiogram

Логотип телеграм спільноти - about aiogram
2024-07-14

about aiogram

Кількість підписників:
195
Фото:
Посилання:
27 
Категорія:
Технології
Опис:
✏️ Про розробку телеграм ботів з використанням aiogram та інших бібліотек і технологій 🔍 Навігатор (inline mode) - @aiotipbot 🙃 Канал ведуть @Shaonis + @wakaree #aiogram #bots #python

👥 Кількість підписників

Середній/День: 0
Середній/Тиждень: -1
Середній/Місяць: -5
Всього:
195

📊 Кількість повідомлень на день

Останній день: 0
Середнє за тиждень: 0
Середнє за день
0

Історія зміни статуса

Офіційно не підтверджена
2024-07-14
Логотип телеграм спільноти - Сергій Притула
Посилання на канал: https://t.me/serhiyprytula Мій фейсбук - https://www.facebook.com/serhiyprytula/ Інстаграм - https://www.instagram.com/siriy_ua/ Youtube - https://www.youtube.com/prytula БАЗА МОНО - https://base.monobank.ua/89gMbvnkrTu7sR
Логотип телеграм спільноти - STERNENKO
Допомога ЗСУ https://www.sternenkofund.org/donate 🫶🏻Фонд @sternenkofund ❗️Нікому не пишу, не прошу гроші, поповнити рахунок чи щось купити. Усі збори на армію публічні. Російська мова у коментах заборонена.
Логотип телеграм спільноти - Bitcoin, інвестування, гроші - Лінивий CRYPTO інвестор
Підписуйся на канал Frontend Shinobi, щоб отримувати найсвіжіші техніки, поради та інструменти для веб-розробників. Хочеш бути в тренді? Хочеш створювати стильні сайти та веб-додатки? Тоді тобі точно сюди!
Логотип телеграм спільноти - ББС Небесна Кара
Офіційний канал Батальйону Безпілотних Систем Небесна Кара, 54 ОМБр Наше гасло: "Зло - має бути покарано! Ворог - має бути знищений!" Приєднуйтесь до нас, підримуйте нас! Більше донатів - більше контенту! Дякуємо! Зворотній зв'язок: [email protected]

Стіна каналу about aiogram - @about_aiogram

🔍 Inline Mode #цікаве👉 Інлайн режим - це інтегрована пошукова система для ботів, яка дозволяє зручно скористатися ботом з будь-якого чату знаючи тільки його юзернейм🤨 І навіщо мені цим користуватись?Інлайн режим дозволяє робити багато речей, що будуть корисні в тій чи іншій ситуації, наприклад можна:• Формувати повідомлення з кнопками• Зробити каталог предметів• Ділитися чимось від імені юзера• Реалізувати пошуковий механізм👀 Як цим користуватись?📌 Для початку необхідно увімкнути цей режим для бота. Тому помісти апдейт типу inline_query в дозволені, а далі в @BotFather > /mybots > твій бот > Bot Settings > Inline Mode і натисни Turn On⬇️ Розберемо всі нові типи і методи, які дає нам інлайн режим• InlineQuery - апдейт, що створюється при використанні пошуку• answerInlineQuery - метод, яким бот показує результати пошуку (ним відповідають на InlineQuery)• InlineQueryResultsButton - об'єкт-кнопка, що знаходиться над результатами• InlineQueryResult - загальний тип конкретного об'єкту в результаті• InputMessageContent - загальний тип конкретного об'єкту для перевантаження надсилання• ChosenInlineResult - апдейт, який доступний з увімкненим inline feedback в @BotFather для аналітики💭 Це класичний inline mode. Також є додаткові штуки для їх використання в контексті WebApp, але зараз нам вони непотрібні📌 Цікаві факти• InlineQuery немає даних про тип чату• answerInlineQuery може повертати результати з різними типами об'єктів (одночасно фото, аудіо..)• InlineQueryResult для деяких підтипів має Cached форми, тобто результатом може бути фото, що вже збережене на серверах телеграм• Якщо до повідомлення, яке надісло в інлайн режимі прикріплені кнопки, то при їх використанні бот отримає CallbackQuery без об'єкту Message🔍 Концепція пошукуУ нас є бот з інлайн режимом. У будь-якому чаті (де не заборонене медіа), як тільки ми вводимо в поле тексту його нікнейм, наприклад@bot hello то бот отримує апдейт InlineQuery з даними, в цьому випадку в запиті буде hello. Можна шукати і без слів, тоді запит буде порожнім рядком. Тепер ми змінимо запит на@bot hello world бот отримає новий апдейт з актуальним запитом hello world і поверне список результатів📌 Якщо писати швидко, телеграм не буде слати боту кожну змінену літеру в запиті, але пишучи з невеликими паузами, ми побачимо як боту поступово приходять оновлені запити Про кешуванняУявімо, що ти власник бота @gif. Він показує юзеру багато різних гіфок, але їх пошук займає деякий час. Під впливом великої кількості юзерів, бот може працювати не ефективно, бо на той же самий запит йому доведеться повертати одні й ті ж гіфки, хоча він вже відповідав на нього раніше. Для подібних ситуацій в методі answerInlineQuery є два параметра:• cache_time: int - час в секундах, скільки тримати результати запиту в кеші на серверах телеграм (за замовчуванням 5 хв)• is_personal: bool - актуальний, якщо cache_time не дорівнює 0. Корисний, якщо ми хочемо кешувати результати індивідуально для юзера, а не для всіх одразу📌 У кожного результату має бути унікальний id. Якщо запит закешовано, то бот навіть не отримає апдейт InlineQuery. Раджу кешувати запит "", якщо результати не порожні🐾 Пагінація результатівМетод answerInlineQuery показує максимум 50 об'єктів. Натомість, є можливість зробити підвантаження додаткових результатів як тільки юзер долистає до кінця поточних. Для цього є параметр next_offset: str. Оскільки він має тип рядок, ми можемо передавати самі собі що завгодноНехай перший запит від юзера порожній, тож ми повертаємо всі результати що в нас є. Але їх більше ніж 50, тому ми ставимо next_offset="2". Якщо юзер долистає до кінця списку, боту прийде новий апдейт InlineQuery, де параметр offset="2". Таким чином ми знаємо, що треба підвантажити додаткові результати🪄 Перевантаження надсиланняЗа замовчуванням, при натисканні на результат він надсилається як тип, що його представляє. Наприклад InlineQueryResultPhoto природно надішле фото. Але це можна змінити параметром input_message_content📚 Читати про це в документації🍐 Книга Груші, про Inline Mode
582
25-01-03 10:47
👩‍💻 CI/CD з Github Actions💭 Зараз зробимо CI/CD автоматизацію, яка при кожному оновленні коду в GitHub репозиторії буде переносити зміни на сервер🛠 Інструменти🔀 GitHub Actions - CI/CD платформа, що дозволяє автоматизувати твій build-test-deploy pipeline👩‍💻 Docker - відкрита платформа для розробки, доставки та запуску додатків (розбирали в пості)📁 Github Container Registry - зберігає image контейнерів в межах організації чи особистого акаунту, а також дозволяє пов'язати image із репозиторіємСама концепція CI/CD набагато ширша, але в рамках даного посту все спрощено: CI - це build контейнера, CD - його release і deploy• GitHub Actions - в ролі вебхуку на push подію для репозиторію, який буде виконувати наші інструкції • Docker - для побудови образу (але можна і без нього, наприклад запускати бота з systemd)• Github Container Registry - для збереження образів (для приватної видимості, в DockerHub на це сильніші обмеження)✏️ Пишемо конфігураціюЩоб скористатись GitHub Actions пишуть workflow файли, а вони налаштовані для запуску однієї чи декількох задач• YAML формат файлу• Мають знаходитись в .github/workflows/• Основна структура: події, змінні середовища та завдання• І workflows і actions можна публікувати та перевикористовуватиДавай розберемо готовий прикладname: Deploy to serveron: push: branches: [ "main" ]env: REGISTRY: ghcr.io IMAGE_NAME: <your-nick>/<image-name>:latestpermissions: contents: read packages: writejobs: publish: name: Publish image runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Login run: | echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin - name: Build and Push run: | docker build . -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} deploy: needs: publish name: Deploy app runs-on: ubuntu-latest steps: - name: Setup ssh keys run: | install -m 600 -D /dev/null ~/.ssh/id_rsa echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa ssh-keyscan -H ${{ secrets.SSH_HOST }} > ~/.ssh/known_hosts - name: Connect-pull-up run: | ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << EOF echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin cd ${{ secrets.WORK_DIR }} docker compose pull docker compose up -d EOF - name: Cleanup run: rm -rf ~/.ssh • Вказуємо події, при яких він буде працювати workflow (тут це push)📌 За замовчуванням події будуть застосовані до всіх гілок, тому краще вказати конкретну (наприклад main, тоді dev може бути як чорнетка)• Блок env, як не дивно, служить для вказання змінних середовища👩‍💻 Ім'я Docker образів мають бути в нижньому реєстрі. Також тут очікується, що в docker-compose.yaml ім'я образу: <registry>/<your-nick>/<image-name>• Блок permission встановлює права для GITHUB_TOKEN (також доступний через контекст github.token). Це спеціальний токен для автентифікації, що створюється для кожної job• Блок jobs містить завдання, сприймай їх як етапи. Також вони можуть мати залежності, наприклад тут deploy чекає поки завершиться publish (needs). За замовчуванням завдання виконуються паралельно!📌 Кожний job працює на окремій віртуальній машині. GitHub-hosted рішення пропонує один із трьох варіантів: Ubuntu, Mac, Windows• checkout - офіційний action, його можна розуміти як git pull, щоб задача мала доступ до твого коду (використовує GITHUB_TOKEN)🤫 Тепер про secrets. Їх можна додати в settings репозиторію, щоб використати як змінні середовища📌 Якщо не хочеш давати GitHub приватний SSH ключ, є ідея посилати серверу запит, щоб він сам завантажив і запустив оновлений Docker образ з регістру🐱 GitHub Actions | Billing📁 Publish Docker Images📝 Workflows syntax
607
24-11-04 07:05
🌱 Життєвий цикл апдейту в aiogram💭 Зазвичай люди, що починають писати ботів намагаються ловити потрібне повідомлення першим робочим способом і не задумуються над тим, які у них є можливості для організації обробки цих повідомлень • Що таке апдейт• Які є способи їх отримання • Поняття реєстрації та обробника• Ланцюг обробників • Роутер і диспетчер - опис, порівняння• Механізм Dependency Injection • Детальний розбір мідлваря• Фільтрація апдейтів• Хендлер Всі ці пункти я спробував розписати у максимально доступному форматі з поясненням різних моментів та описом елементарних помилок🇺🇦 Стаття українськоюhttps://botfather.dev/news/zhittyevij-cikl-apdejtu-v-aiogram🌍 Стаття англійськоюhttps://botfather.dev/news/lifecycle-of-an-update-in-aiogram💫 Мені здається, що представлення цих понять в одній картині спростить написання ботів. Особливо, бачу в цьому сенс для новачків. Крім того, розуміння окремих моментів може бути корисним не тільки для ботів. Приємного читання!⚡️ Дякую @Latand за його проект та можливість писати там статті
630
24-09-02 12:52