Бот для систематизации новых контактов с конфы
Traffic Cardinal Traffic Cardinal  написал 19.06.2026

Бот для систематизации новых контактов с конфы

Traffic Cardinal Traffic Cardinal  написал 19.06.2026
6 мин
0
25
Содержание

Отработали конфу, собрали 100500 контактов, со всеми договорились о чем-то важном и записали с каждым кружочек, а потом… ужас под названием «собрать все это воедино» — знакомая ситуация, не правда ли? Более того, кто уже на опыте знает, что собирать лучше по горячим следам в первый день-два после конф.

banner banner

Да только все мы люди, и после конфы хочется отдохнуть. А порой одна только дорога займет 3–4 дня, тут уж вовсе не до систематизации контактов. Решить эту проблему поможет наш бот — он просто всю конфу будет «записывать» новые контакты и выведет их в ваше «Избранное» по первому запросу.

О том, как такой бот создать, рассказываем ниже.

Какие задачи решает бот для систематизации новых контактов с конфы

Бот закрывает несколько прикладных задач:

  • Сбор новых контактов в одном месте — все новые диалоги фиксируются автоматически, без необходимости выписывать их ручками.

  • Снижение риска потерять переписку — если вы не сохранили контакт сразу, он все равно остается в базе.

  • Упрощение систематизации после конфы — не нужно вручную пролистывать все чаты, чтобы понять, с кем вы общались.

  • Быстрый доступ к списку — можно в любой момент вывести все новые контакты через команду.

Ну и по классике — все, что вы сами придумаете, он тоже умеет делать, если его код это позволяет :D

Принцип работы бота для систематизации новых контактов с конфы

С точки зрения логики бот максимально простой и делает следующее:

  • Слушает входящие ЛС от новых пользователей и исходящие ЛС от вас тем, с кем диалога еще нет.

  • Проверяет, был ли этот контакт уже зафиксирован ранее или был в старых диалогах.

  • Если контакт новый — добавляет его ID и Username в contacts.json.

  • Игнорирует существующие или записанные в contacts.json диалоги.

  • По команде /show выводит список новых контактов в избранное.

В общем — ничего сложного.

Пошаговая инструкция, как сделать бот для систематизации новых контактов с конфы

Как обычно, начинаем с базы — сервера. Подойдет любой Python-сервак — хоть личный ноутбук (да-да, на ноуте можно поднять сервер), хоть арендный VPS. Последний, впрочем, предпочтительнее, если вы не хотите, чтоб бот отвалился посреди конфы, потому что у вас дома выключили свет.

Также сервер нужно будет настроить, введя в консоль:

pip install telethon

После этого делаем следующее:

  1. Заходим в Telegram Web.
  2. Ищем «API development tools».
  3. Создаем приложение и получаем api_id и api_hash.
  4. Сохраняем их куда-то.

Теперь к самому боту:

1. Создаем файл bot.py и вставляем туда код:

import json

import os

from telethon import TelegramClient, events

API_ID = ваш API_ID

API_HASH = "ваш API_HASH"

SESSION = "session"

DB_FILE = "contacts.json"

client = TelegramClient(SESSION, API_ID, API_HASH)

db = {}

known_private_users = set()

await_saved_id = [None]

def load_db():

if not os.path.exists(DB_FILE):

return {}

with open(DB_FILE, "r", encoding="utf-8") as f:

return json.load(f)

def save_db(db):

with open(DB_FILE, "w", encoding="utf-8") as f:

json.dump(db, f, ensure_ascii=False, indent=2)

async def init_existing_dialogs():

async for dialog in client.iter_dialogs():

if dialog.is_user:

uid = str(dialog.entity.id)

known_private_users.add(uid)

@client.on(events.NewMessage)

async def handler(event):

if not event.is_private:

return

chat = await event.get_chat()

user_id = str(chat.id)

if user_id in known_private_users:

return

if user_id in db:

return

name = " ".join(filter(None, [chat.first_name, chat.last_name]))

db[user_id] = {

"name": name if name else "Unknown",

"username": getattr(chat, "username", None)

}

save_db(db)

print(f"[NEW CONTACT] {name} ({user_id})")

known_private_users.add(user_id)

@client.on(events.NewMessage(pattern="/show"))

async def show(event):

if event.chat_id != await_saved_id[0]:

return

if not db:

await event.reply("Пока новых контактов нет.")

return

text = "📇 Новые контакты:\n\n"

for uid, info in db.items():

line = f"• {info['name']} | ID: {uid}"

if info.get("username"):

line += f" | @{info['username']}"

text += line + "\n"

await event.reply(text)

async def main():

await client.start()

me = await client.get_me()

await_saved_id[0] = me.id

print("Загружаю существующие диалоги...")

await init_existing_dialogs()

print(f"Готово. Загружено {len(known_private_users)} старых диалогов.")

print("Userbot запущен 🚀")

await client.run_until_disconnected()

client.loop.run_until_complete(main())

2. Заменяем API_ID = ваш API_ID, API_HASH = "ваш API_HASH" на те, что получали ранее.

3. Сохраняем файл.

4. Проверяем работу бота.

Демонстрация работы

Запускаем бот, пишем на акк «нового знакомого» и видим, что бот фиксирует его как нового
Запускаем бот, пишем на акк «нового знакомого» и видим, что бот фиксирует его как нового

Отвечаем с акка «нового знакомого» и видим, что все ок — дублей нет, удаляем чат
Отвечаем с акка «нового знакомого» и видим, что все ок — дублей нет, удаляем чат

И пишем с акка «нового знакомого» себе — видим, что по-прежнему все ок и дублей нет. Открываем ЛС с акком «старого знакомого»
И пишем с акка «нового знакомого» себе — видим, что по-прежнему все ок и дублей нет. Открываем ЛС с акком «старого знакомого»

Пишем и видим, что все ок и дублей нет — так как ЛС уже существовало на момент запуска бота. Удаляем ЛС и перезапускаем бот
Пишем и видим, что все ок и дублей нет — так как ЛС уже существовало на момент запуска бота. Удаляем ЛС и перезапускаем бот

Пишем с акка «старого (но теперь уже нового) знакомого» и видим, что бот теперь фиксирует его как нового. Проверяем, нет ли реакции на другом акке, и ее нет — все как и должно быть
Пишем с акка «старого (но теперь уже нового) знакомого» и видим, что бот теперь фиксирует его как нового. Проверяем, нет ли реакции на другом акке, и ее нет — все как и должно быть

Удаляем чат и пишем еще раз — реакции нет, так как знакомый уже в базе
Удаляем чат и пишем еще раз — реакции нет, так как знакомый уже в базе

Проверяем контакты, собранные за нашу воображаемую двухминутную конфу, введя /show в ЛС. Видим, что оба акка в базе и выводятся с активной ссылкой
Проверяем контакты, собранные за нашу воображаемую двухминутную конфу, введя /show в ЛС. Видим, что оба акка в базе и выводятся с активной ссылкой

Подводя итоги

Как видите, если не хочется после конфы вручную разгребать десятки диалогов, то и не нужно — бот это делает за вас. Тем более что, как сделать бот для систематизации новых контактов с конфы, вы теперь знаете. Следите за нашей Телегой, чтобы первыми получать исходный код других ботов для арбитража трафика.

Здравствуйте! У вас включен блокировщик рекламы, часть сайта не будет работать!