Aiogram hentai 🍓
Open in Telegram
🍪 Канал із справжнім хентаєм по aiogram. 🍓 Засновник: @wakaree
Show more343
Subscribers
No data24 hours
No data7 days
No data30 days
Posts Archive
Трошки оффтопу в каналі. Розповім коротко: у мене в планах заснувати свою екосистему в телеграмі. ❤️
Наразі в розробці VPN-сервіс, токен з'явиться трохи пізніше. Обіцяю, буде весело! @pornofnd 😁
🆙 Трохи покращив структуру проекту.
— Керування коммітами у БД винесено до UoW;
— Додано контекст сесії БД для більш зручного її використання;
— Конфігурація була розбита на декілька відповідних частин (за ідею подяка @AndrewKingEG — https://t.me/aiogram_pcr/1416416/1754526);
— Методи-фабрики бота, діспатчера та налаштувань додатку розподілені по окремим модулям;
👩💻 Повний комміт
🥱 Stollen – новий асинхронний фреймворк, мета якого – спростити створення client-side API.
👩💻 Приклад використання (повна версія) »
class XRocket(Stollen):
def __init__(self, pay_key: str, production: bool = True, **stollen_kwargs: Any) -> None:
subdomain: str = "pay" if production else "dev-pay"
super().__init__(
base_url=f"https://{subdomain}.ton-rocket.com",
api_access_nodes=[
Header(name="Rocket-Pay-Key", value=pay_key),
],
response_data_key=["data"],
error_message_key=["message"],
general_error_class=XRocketError,
error_codes={403: UnknownAPIKeyError},
**stollen_kwargs,
)
async def get_app_info(self) -> AppInfo:
from .methods import GetAppInfo
call: GetAppInfo = GetAppInfo()
return await self(call)
💟 Наразі у стані Pre-Alpha, тому готовий до критики і пропозицій)👩💻 Репозиторій
🦷 Bot API v7.0 — наразі вважається наймасштабнішим оновленням.
Трохи запізнився з постом, але краще пізно, ніж ніколи. :)❤️ Реакції • Тепер боти можуть реагувати на повідомлення методом setMessageReaction. • Боти також бачать реакції на повідомлення. (Як це обробляти в aiogram?) • Додано поле
available_reactions до об'єкту Chat.
💬 Реплаї
• Тепер, використовуючи ReplyParameters, боти можуть відповідати на повідомлення у інших чатах та топіках, а також цитувати будь яку частину повідомлення.
• Додано об'єкт ExternalReplyInfo — інформація про повідомлення, яке реплайнули з іншого чату.
• Нове поле quote у об'єкта Message дозволяє ботам розпізнавати цитати.
👀 Прев'ю посилань
• Тепер боти можуть встановлювати окрему URL-адресу для створення прев'ю посилань у вихідних повідомленнях.
• Додана можливість змінювати розмір та позицію прев'ю в повідомленні.
• Тепер для зміни параметрів прев'ю потрібно вказувати LinkPreviewOptions.
🛍 Пакетні дії
• Боти тепер можуть видалити до 100 повідомлень одночасно методом deleteMessages.
• Аналогічно з видаленням — повідомлення тепер можна пересилати та копіювати пачками використовуючи відповідні методи: forwardMessages та copyMessages.
🆙 Бусти й роздачі
• Додана підтримка Giveaway повідомлень, тепер боти бачуть їх створення та завершення.
• Також боти тепер дізнаються про бусти з відповідними подіями: ChatBoostUpdated та ChatBoostRemoved.
• Боти знають про джерело бусту — преміум підписник, подарунковий код, чи роздача.
• Методом getUserChatBoosts можна переглядати активні бусти від конкретного користувача у каналі.
🍓 Загальне
• Блоки цитат тепер підтримуються в MarkdownV2 та HTML режимах парсингу.
• Веб-аппи не закриваються під час виклику openTelegramLink.
• Веб-аппи тепер можуть перемикати видимість і поведінку кнопки налаштувань під час натискання.
• Боти тепер підтримують запит на вибір декількох користувачів (KeyboardButtonRequestUsers).
• Об'єкт Chat має нові поля, що містять кольори профілю та фону, кастомні емоджі тощо.
📋 Повний список змін
💦 Оригінальний пост
#news, #новини🙃 Startup, shutdown...
- Де закривати сесію мого апі?
- А підключення до бд?
- Де створювати фонові задачі при запуску?
🤯 2 евента, startup і shutdown!!!!
async def startup(my_api: MyAPI, something_else: SomethingElse) -> Any:
await my_api.send(text="&b&lHello, world!")
asyncio.create_task(something_else.polling())
async def shutdown(my_api: MyAPI, something_else: SomethingElse) -> Any:
await my_api.close()
await something_else.stop()
def main() -> None:
bot: Bot = Bot(token="42:ABC")
dp: Dispatcher = Dispatcher()
dp.startup.register(startup) # Да, це такі самі евенти, як і на message, callback_query тощо
dp.shutdown.register(shutdown)
dp.run_polling(bot)
» Dependency injection працює так само, як і в обробниках телеграм-апдейтів.
» Єдине, що відрізняє ці евенти від телеграм-евентів — не мають свого об'єкта. Реєструються же вони так само.🧼 Як і для чого писати чистий, ефективний та читабельний код?
Насправді "чистий код" це дуже розмите поняття, бо в багатьох розробників своя думка й уявлення щодо цього. Я вибрав основні пункти, що на мою думку дійсно можуть допомогти писати якісний код, повторюсь, якісний, а не ідеальний. Всякі тупі тези на кшталт «в функції не більше 7 аргументів» розглядатися не будуть.📝 Для цього існує чимало рекомендацій та інструментів. Конкретно для Python: — Загальноприйняті стандарти написання коду — PEP-8 (» клац «) — Лінтер коду Ruff (» клац «) (Що таке "лінтер"?) — Засіб форматування коду Black (» клац «) — Статичний аналізатор анотацій типів (type-hints) — mypy (» клац «)
Бонус. Приклад проекту з використанням зв'язки ruff-black-mypy: https://github.com/wakaree/aiogram_bot_template🖌 Окрім цього існують і загальні рекомендації, актуальні вже не тільки для пайтону: — Принципи SOLID — Українською 🇺🇦 / Англійською 🇬🇧 — Патерни (шаблони) проектування (» тик «) — Ще одна коротенька, але корисна стаття по код-стайлу (» тик «) 😐 Чому важливо дотримуватися цих рекомендацій? — Такий код набагато легше прочитати і зрозуміти. Інші розробники, що працюватимуть з вашим кодом будуть вдячні! — При правильному використанні патернів проект буде легше масштабувати. — Це знижує ризики виникнення багів, неочікуваної поведінки, й навіть того, що ви самі заплутаєтесь у своєму коді (так, таке буває). #code_style, #code_better
👋 Відкрив репозиторій зі своїм темплейтом, готовий до критики і пропозицій.
👩💻 Посилання на репозиторій
🤔 Що нового в Bot API v6.9?
— Взаємодія з правами на сторіси в методі promoteChatMember й типах ChatMemberAdministrator, ChatAdministratorRights.
— Тепер для Web App можна установити будь-який колір заголовка методом
setHeaderColor.
— Додано поле CloudStorage до класу WebApp.
— Додано методи requestWriteAccess і requestContact до класу WebApp.
— До веб-додатків додано події writeAccessRequested та contactRequested.
— До класу WriteAccessAllowed додано поля from_request та from_attachment_menu.
— До класу WebAppUser додано поля added_to_attachment_menu та allows_write_to_pm
# Джерело: https://core.telegram.org/bots/api#september-22-2023🥳 aiogram_i18n 1.3 вже тут!
📋 Список змін »
— «Додано багато чого» © Патрік
⚠️ Мінімальна версія aiogram »
3.0.0b8
⬇️ Завантажити бібліотеку можна з PyPi » pip install aiogram-i18n
#aiogram_i18n, #переклад, #утиліти, #локалізація, #localization