FragMem | Dev Log – Telegram
FragMem | Dev Log
5.16K subscribers
24 photos
1 video
18 links
💜 With love from @katant
💎 @notmeme
Download Telegram
Помните, больше месяца назад вышло обновление, связанное с подарками от брендов (известных личностей)? Для выпуска подарков снуп дога.

Так вот, только сейчас в Bot API добавили поле, указывающее на то, кто выпустил этот подарок:

Added the field publisher_chat to the classes Gift and UniqueGift which can be used to get information about the chat that published a gift.


Вот и думайте теперь, сколько еще времени пройдет до момента появления функционала покупки премиум-подарков от лица ботов. Еще месяц? Телеграм, пошевелитесь там)
15😁34😭10🫡96
💎 Всем привет! Вчера добавил альтернативный источник для получения информации о новых подарков, чтобы добавить игнорирование премиум-подарков. Надеюсь проблем и задержек с ним не будет.
Поэтому, уже сейчас вы можете прогнать симуляцию прошлого дропа подарков и проверить, как это будет работать.

🔗 В силу того, что телега решила ботам обрубить премиум-подарки (может быть они все-таки появятся в будущем). Но так, как покупать их хочется как можно скорее, после первого сентября, я начну работу над юзерботом, функционал будет полностью интегрирован в экосистему, с оплатой по комиссии, такой же гибкой настройкой ордеров, симуляцией и всем функционалом, который на текущий момент доступен для обычных ботов.
Please open Telegram to view this post
VIEW IN TELEGRAM
5148🔥2111👍11👀1🤝1
FragMem | Dev Log
💎 Всем привет! Вчера добавил альтернативный источник для получения информации о новых подарков, чтобы добавить игнорирование премиум-подарков. Надеюсь проблем и задержек с ним не будет. Поэтому, уже сейчас вы можете прогнать симуляцию прошлого дропа подарков…
🚽 Хотелось бы юзер-ботов выкатить прораньше, но я улетаю на пару недель через несколько дней, поэтому банально не успею. Пласт работы большой, с учетом того, что это все делаю я один и надо интегрироваться с уже существующим функционалом, ничего не сломав)
😘 А, еще. Прогрейдил кластер сервачков, так как на прошлом дропе подарков были проблемы с перфомансом на стороне самого приложения, ибо все ресурсы ушли на покупку подарков. Поэтому, пришлось взять на всех серваках проц получше и побольше ОЗУ. Ну и локацию сервераков поменял, так как на прошлых у инета ширина канала была гораздо меньше.
✈️ Постараюсь быть в сети, на выход подарков 1 сентября, чтобы все проконтроллировать.
Please open Telegram to view this post
VIEW IN TELEGRAM
7835👍17🔥75👏4🎉2
Сегодня отмечаю день рождения в дороге, добрался наконец до Китая.

На днях сделал пару тестов, для проверки соответствия симуляции с реальной покупкой, дабы убедиться, что все готово к следующим подаркам. Вернусь в начале-середине сентября и в первые же выходные буду рассматривать вариант интеграции юзер ботов (для премиум подарков).
Пока что готовимся к первому сентября, тарить обычные подарки через бота)
275106👍48🎉34🍾8🤣6🕊5💘32❤‍🔥2🔥2😎2
💎 Я вышел с отпуска, разгреб дела, которые появились за это время, решил сесть и разобраться, что изменилось в процессе покупки подарков.

🔗 Пока что приостановился с идеей разработки юзер-бота. Возможно, что-то изменится в системе покупки подарков и я продолжу работу над ним. Но на текущий момент причины просты - на покупку уделяется достаточно времени, благодаря таймеру. Следовательно, премиум подарки можно спокойно купить, поставив будильник по окончанию таймера. А если выйдут не премиум подарки - их сможет купить обычный бот.
😩 Поэтому, особой надобности в авто-покупке премиум подарков пока что нет. А это значит, что, спешить некуда, тем более, у телеги все меняется каждый выход подарков, неизвестно, что придумают в следующий раз)
Please open Telegram to view this post
VIEW IN TELEGRAM
102👍6626🔥12💯5🕊4🤣4👏3
☺️ Давно еще хотел написать, напомнить о том, что в силу полного изменения системы покупки подарков авто-бай больше не работает. Поэтому бот теперь служит только для покупки звезд через фрагмент без KYC.

💎 Если кто-то, по какой-то причине, еще не вывел звезды с личного бота из-за каких либо проблем - напишите в личку (@katant), помогу разобраться и вывести. СНАЧАЛА ПРОЧИТАЙТЕ ИНФУ ТУТ - https://news.1rj.ru/str/FragMemBots/62

Всем спасибо за проявленное доверие и тем, кто успел воспользоваться ботом, я проделал большую работу по реализации этого функционала. Жаль, что телега все в моменте просто перевернула и отрезала функционал(
Please open Telegram to view this post
VIEW IN TELEGRAM
6047👍24🔥14🤝3
Channel name was changed to «FragMem | Dev Log»
🙃 Всем привет! Решил немного реформировать канал и превратить его в дев-лог.
Если кто-то не в курсе: я работаю над разработкой нескольких прикольных проектов — @clips, @sounds, @texts, @saver. В общем, всё, что вы видите в списке приложений @notmeme.

🤓 Тут буду иногда рассказывать технические детали: что, где и как у нас работает. Обеспечить миллионы пользователей стабильной работой сервиса с кучей технически сложных механик — задача не из лёгких.
Возможно, вам будет интересно узнать, как всё устроено внутри и что скрывается за, казалось бы, простой строкой - @sounds привет

📹 Начну с того, как мы создавали @clips.
Изначальная гипотеза была такая: современный "молодёжный" чат — это не только текст, а общение через стикеры, гифки и всё вот это. Мы решили расширить этот формат и привнести новую социальную механику — реакции короткими видео (что-то из разряда тиктока, но прямо в переписке).

💜 В прошлом году за несколько недель мы решили быстро протестировать идею прям перед новым годом. Продумали систему — точнее, как она должна работать:
⚡️ 1) Отправка кружков из существующей базы
1.1) Инлайн. Функционал Telegram, благодаря которому вы можете в любом чате ввести запрос и отправить контент без общения с ботом в личке.
1.2) Хранение. Все наши кружки хранятся в Telegram — оттуда мы быстро отдаём пользователю медиафайл при поиске. Поэтому результат виден почти мгновенно.
1.3) Поиск. Начинали с простого полнотекстового поиска: вычленяем слова из запроса, сравниваем с базой и собираем максимально релевантный список кружков. У каждой единицы контента есть описание и название — по ним и идёт сравнение.

⚡️ 2) Добавление контента
2.1) Источник контента. Чтобы кружки вообще появились, их нужно было где-то взять. Первую партию мы добавили так: спарсили несколько мемных площадок, преобразовали видосы в кружки, сделали описания и названия, а затем занесли всё в базу.
2.2) Но парсингом одним не живём: мы решили, что пользовательский контент важнее просто сборника видосов из интернета. Поэтому быстро собрали MVP мини-приложения, где за пару кликов можно подредактировать любой видос из вашей галереи, добавить описание и название — и он попадёт в общую выдачу.
2.3) Модерация. Как и в любом сервисе с пользовательским контентом, важно помнить, что не все пользователи милые и пушистые. Поэтому после ваших пары кликов всё уходит на модерацию: там мы проверяем опасный контент и соответствие видео и текста.

⚡️ 3) Мини-приложение и синхронизация с Telegram
Чтобы всем этим было удобно пользоваться, мы сделали так, что контент живёт сразу в двух местах:
— в Telegram (как хранилище и источник для быстрой отправки),
— и в нашем мини-приложении Telegram, где уже есть нормальный интерфейс.
В мини-приложении можно:
- посмотреть все мемы/кружки,
- искать, включать фильтрацию и быстро находить нужное,
- увидеть, какие мемы вы залили,
- проверить, на каком статусе модерации каждый мем (в обработке / одобрен / отклонён и т.д.).

И ещё важный момент: все уведомления синхронизированы с личкой Telegram. Результаты модерации и любая важная инфа для пользователя прилетают туда, где это реально заметно и привычно — прямо в чат.

⚡️ Про скорость тоже будет отдельный пост: сейчас на один запрос у нас уходит меньше 0.5 секунд, чтобы отдать результаты поиска. Но пришли мы к этому не сразу — там было много интересных (и болезненных) оптимизаций.

💻 Немного цифр в @clips на сегодня:
- Более 700.000 пользователей
- 100.000 кружков в нашей базе
- Юзеры отправили кружки более 6.000.000 раз
- Более 180.000 пользователей с нами ежемесячно

@FragMemBots | @katant
Please open Telegram to view this post
VIEW IN TELEGRAM
2065👍17🔥11🤮3
🔗 Всем привет, продолжаю рассказывать про наших ботов @sounds и @clips. Сегодня покажу, как работает технология поиска, благодаря которому мы помогаем вам найти максимально релевантные результаты по мемным звукам или кружочкам.

Когда вы пишете в боте запрос типа "гойда" или "ну давай нападай", кажется, что это просто "поиск по базе".
Но внутри это больше похоже на умный поиск Google, только заточенный под нашу базу (звуки/кружки).

👨‍💻 Из чего состоит поиск (скриншот 2)
У нас есть три слоя, которые работают вместе:
PostgreSQL — основная база, где хранятся сами звуки (название, описание, теги).
Elasticsearch — быстрый “мозг” для полнотекстового поиска (умеет искать по словам, ошибкам, похожим формулировкам).
ZomboDB — магический мост между ними: позволяет делать Elasticsearch-поиск прямо из SQL, как будто это обычный запрос в Postgres. Он также занимается формированием индексов на основе данных Postgres в ElasticSearch.
То есть: данные живут в Postgres, а ищем мы силой Elasticsearch, при этом всё выглядит как "одна база".

🐥 Что именно мы ищем
Каждый звук индексируется по трём главным полям:
• noscript (название)
• denoscription (описание)
• tags (теги)
Они собираются в "единый поисковый документ", и по нему строится индекс.
Фишка ZomboDB: когда звук меняется в Postgres — индекс в Elasticsearch обновляется автоматически. Без ручной синхронизации.

📰 Два пути поиска: в боте и через API (скриншот 2)
Поиск доступен двумя способами:
• Inline в Telegram: @bot <запрос>
• Через наш MiniApp, там происходит запрос в API: GET /api/sounds?query=...
Но самое главное: оба пути приходят в один и тот же метод — SoundDAO.get_list()
(то есть логика поиска единая и вы получите одинаковый результат, независимо от источника взаимодействия).

🙃 Как запрос превращается в результат (скриншот 1)
Когда вы вводите текст, система делает несколько попыток найти лучшее совпадение.

1) Сначала — "строгий" поиск (MUST)
Логика:
все слова из запроса должны встретиться.
Это даёт максимально точные результаты.
И да: поиск умеет "прощать" опечатки — включён режим fuzziness: AUTO, то есть:
• «превет» может найти «привет»
• «смешной звук» найдёт даже если где-то ошиблись

2) Если строго не нашло — включается "мягкий" поиск (SHOULD)
Логика:
берём только слова длиннее 3 букв, и достаточно, чтобы совпала примерно половина.
Когда полезен:
• длинный
• с лишними словами
• "криво сформулирован"

3) Если и "мягкий" не помог — включается "нечёткий" поиск (FUZZY / SIMILARITY)
Логика: мы смотрим на запрос целиком и пытаемся найти похожие варианты, даже если слова написаны по-разному, перепутан порядок или опечаток больше обычного.
Это такой режим “ну ты понял, что я имел в виду”.
Когда полезен:
• короткий и неточный (типа «ааа ну тот звук»)
• с кучей опечаток / транслитом («privet», «prvyt», «preevet»)
• с переставленными словами («звук смешной» vs «смешной звук»)
• когда помнишь только кусок фразы, а остальное “примерно”

⚡️ Почему один звук выше другого
Результаты сортируются так:
• по релевантности (насколько “попали в смысл запроса”) — это score от Elasticsearch
• по популярности (сколько раз звук использовали)
То есть идеальный вариант — и подходит по смыслу, и реально любимый людьми.

🙈 Что происходит, когда вы просто открыли inline и ничего не ввели
Если запрос пустой, мы не делаем никакого поиска — вместо этого собираем витрину:
• Промо-звуки (сейчас их нет)
• Ваша история (последние отправленные)
• Топ популярных (по количеству использований)
И всё это аккуратно склеивается в один список (до 50 штук), с дедупликацией, чтобы не было повторов.

🚀 Как считаются "использования" (скриншот 3)
Когда вы выбираете звук в inline — мы не пишем счётчик сразу в базу (это бы замедлило систему).

Вместо этого событие улетает в Redis Stream, а дальше отдельный воркер:
• читает события пачками
• обновляет счётчики
• записывает историю
В итоге бот отвечает быстро, а статистика обновляется асинхронно.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
26🔥10👍8❤‍🔥1