Как создать бота для поиска мем-токенов: пошаговое руководство
Фото создано - foreck.info | создать бота для поиска мем-токенов
Категория: Crypto
Sergey Lomakin
Share

Каждый день выпускаются тысячи мем-токенов (memecoins), но лишь немногие из них добиваются реального успеха. Представьте, что у вас есть бот, который помогает отслеживать самые «горячие» токены на ранних стадиях, проверять их надежность и быстро передавать вам их контрактный адрес (Contract Address, CA). Ниже описаны основные шаги по созданию подобного бота с помощью Python и ряда проверенных метрик.

В чём преимущество бота для мем-токенов?

  • Он позволяет выявлять токены с высоким потенциалом до того, как они «взрываются» на рынке.
  • Он помогает фильтровать рискованные вложения на основе объективных показателей.
  • Он экономит ваше время, беря на себя рутинные процессы анализа.

Важно: Даже при наличии автоматизации всегда проводите собственный анализ и учитывайте риски рынка криптовалют.


Шаг 1: Подготовка бота

Первым делом вам нужно написать скрипт на Python, который будет собирать данные о мем-токенах с сайтов, отслеживающих тренды (например, GMGN и Dexscreener). Скрипт ниже демонстрирует базовый веб-скрейпер:

# Пример кода на Python для парсинга данных с сайта GMGN
import requests
from bs4 import BeautifulSoup
import pandas as pd
import time

# Адрес страницы со списком трендовых токенов (указать актуальный URL)
BASE_URL = "https://www.gmgn.com/trending-tokens"

# Заголовки для имитации запроса из браузера
HEADERS = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"
}

def fetch_html(url):
    """Загрузка HTML-содержимого по указанному URL."""
    try:
        response = requests.get(url, headers=HEADERS)
        response.raise_for_status()  # Выбросит исключение, если ответ содержит код ошибки
        return response.text
    except requests.exceptions.RequestException as e:
        print(f"Ошибка при получении данных {url}: {e}")
        return None

def parse_trending_tokens(html):
    """Извлекает данные о трендовых токенах из HTML."""
    soup = BeautifulSoup(html, 'html.parser')

    tokens = []
    table = soup.find("table", class_="trending-tokens")  # Уточните класс/теги в соответствии со структурой сайта
    if not table:
        print("Не найдена таблица с трендовыми токенами.")
        return tokens

    # Пропускаем строку заголовков (header), начинаем со второй строки
    for row in table.find_all("tr")[1:]:
        columns = row.find_all("td")
        if len(columns) >= 5:  # Например: Name, Symbol, Volume, Change, Price
            token_data = {
                "Name": columns[0].get_text(strip=True),
                "Symbol": columns[1].get_text(strip=True),
                "Volume": columns[2].get_text(strip=True),
                "Change": columns[3].get_text(strip=True),
                "Price": columns[4].get_text(strip=True),
            }
            tokens.append(token_data)

    return tokens

def save_to_csv(data, filename="trending_tokens.csv"):
    """Сохраняет полученные данные в CSV-файл."""
    df = pd.DataFrame(data)
    df.to_csv(filename, index=False)
    print(f"Данные сохранены в {filename}")

if __name__ == "__main__":
    print("Получение данных о трендовых токенах с GMGN...")
    html_content = fetch_html(BASE_URL)

    if html_content:
        trending_tokens = parse_trending_tokens(html_content)

        if trending_tokens:
            print(f"Найдено {len(trending_tokens)} трендовых токенов:")
            for token in trending_tokens:
                print(token)

            save_to_csv(trending_tokens)
        else:
            print("Трендовые токены не найдены.")
    else:
        print("Не удалось получить или разобрать страницу.")

Как использовать:

  • Замените BASE_URL реальным адресом страницы, где перечислены трендовые токены.
  • Подкорректируйте логику парсинга (методы find и find_all), если структура сайта отличается.
  • Установите необходимые библиотеки (если они ещё не установлены):
    pip install requests beautifulsoup4 pandas
  • Запустите скрипт. Результаты сохранятся в файл trending_tokens.csv.

Шаг 2: Определение метрик для фильтрации токенов

Чтобы выделить самые перспективные токены среди огромного количества вариантов, удобно задать конкретные критерии отбора:

  • Ликвидность (Liq) меньше 100 000;
  • Объём торгов (Vol) меньше 250 000;
  • Возраст токена (Age) не менее 24 часов;
  • Число держателей (Holders) не более 300.

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

# Пример кода на Python для фильтрации токенов по заданным критериям
import requests
from bs4 import BeautifulSoup
import pandas as pd
import time

BASE_URL = "https://www.gmgn.com/trending-tokens"

HEADERS = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"
}

def fetch_html(url):
    try:
        response = requests.get(url, headers=HEADERS)
        response.raise_for_status()
        return response.text
    except requests.exceptions.RequestException as e:
        print(f"Ошибка при получении данных {url}: {e}")
        return None

def parse_trending_tokens(html):
    soup = BeautifulSoup(html, 'html.parser')

    tokens = []
    table = soup.find("table", class_="trending-tokens")
    if not table:
        print("Не найдена таблица с трендовыми токенами.")
        return tokens

    for row in table.find_all("tr")[1:]:
        columns = row.find_all("td")
        # Допустим, у нас есть столбцы: Name, Symbol, Volume, Change, Price, Liquidity, Age, Holders, Contract Address
        if len(columns) >= 7:
            token_data = {
                "Name": columns[0].get_text(strip=True),
                "Symbol": columns[1].get_text(strip=True),
                "Volume": float(columns[2].get_text(strip=True).replace(",", "")),
                "Change": columns[3].get_text(strip=True),
                "Price": columns[4].get_text(strip=True),
                "Liquidity": float(columns[5].get_text(strip=True).replace(",", "")),
                "Age": columns[6].get_text(strip=True),
                "Holders": int(columns[7].get_text(strip=True).replace(",", "")),
                "Contract Address": columns[8].get_text(strip=True),
            }
            tokens.append(token_data)

    return tokens

def filter_tokens(tokens):
    """Фильтрует токены по заданным критериям."""
    filtered_tokens = []
    for token in tokens:
        # Предположим, что поле Age содержит данные в часах, например '24h'
        age_in_hours = int(token["Age"].replace("h", "")) if "h" in token["Age"] else 0

        if (
            token["Liquidity"] < 100000 and
            token["Volume"] < 250000 and
            age_in_hours >= 24 and
            token["Holders"] <= 300
        ):
            filtered_tokens.append(token)
    return filtered_tokens

def save_to_csv(data, filename="filtered_tokens.csv"):
    df = pd.DataFrame(data)
    df.to_csv(filename, index=False)
    print(f"Отфильтрованные данные сохранены в {filename}")

if __name__ == "__main__":
    print("Получение данных о трендовых токенах...")
    html_content = fetch_html(BASE_URL)

    if html_content:
        trending_tokens = parse_trending_tokens(html_content)

        if trending_tokens:
            print(f"Найдено {len(trending_tokens)} трендовых токенов. Применяем фильтрацию...")
            filtered_tokens = filter_tokens(trending_tokens)

            if filtered_tokens:
                print(f"Найдено {len(filtered_tokens)} токенов, удовлетворяющих критериям:")
                for token in filtered_tokens:
                    print(token)
                save_to_csv(filtered_tokens)
            else:
                print("Нет токенов, удовлетворяющих заданным критериям.")
        else:
            print("Трендовые токены не найдены.")
    else:
        print("Не удалось получить или разобрать страницу.")

Ключевые изменения по сравнению с предыдущим скриптом:

  • Дополнен парсинг для новых столбцов: Liquidity, Age, Holders, Contract Address.
  • Добавлена функция filter_tokens для отбора токенов по критериям (Liq, Vol, Age, Holders).
  • В поле Age делается примитивная обработка строкового формата (например, «24h» → 24).
  • Результат сохраняется в filtered_tokens.csv.

Шаг 3: Проверка безопасности токена

Даже если токен проходит формальные фильтры, полезно убедиться, что с ним не связано никаких очевидных признаков мошенничества. Для этого можно использовать сайты вроде RugCheck (или аналогичные), чтобы узнать общий рейтинг безопасности.

Ниже приводится пример, как автоматизировать отправку контрактных адресов на проверку с помощью selenium:

# Пример кода на Python для проверки токенов через RugCheck
import time
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options

CHROMEDRIVER_PATH = "./chromedriver"  # Укажите путь к драйверу
RUGCHECK_URL = "https://www.rugcheck.com"

def setup_webdriver():
    """Настраиваем Selenium WebDriver."""
    chrome_options = Options()
    chrome_options.add_argument("--headless")  # Фоновый режим
    chrome_options.add_argument("--disable-gpu")
    chrome_options.add_argument("--no-sandbox")
    service = Service(CHROMEDRIVER_PATH)
    driver = webdriver.Chrome(service=service, options=chrome_options)
    return driver

def check_contract(driver, contract_address):
    """Проверяем контрактный адрес на RugCheck и возвращаем рейтинг."""
    driver.get(RUGCHECK_URL)
    
    try:
        input_box = driver.find_element(By.ID, "contract-input")  # Измените селектор при необходимости
        input_box.clear()
        input_box.send_keys(contract_address)
        input_box.send_keys(Keys.RETURN)

        time.sleep(5)  # Дождёмся загрузки результатов

        rating = driver.find_element(By.CLASS_NAME, "rating-label").text
        details = driver.find_element(By.CLASS_NAME, "details-section").text

        return {
            "Contract Address": contract_address,
            "Rating": rating,
            "Details": details
        }

    except Exception as e:
        print(f"Ошибка при обработке {contract_address}: {e}")
        return {
            "Contract Address": contract_address,
            "Rating": "Error",
            "Details": str(e)
        }

def filter_good_tokens(token_list):
    """Отбираем токены с рейтингом не ниже 'Good'."""
    return [token for token in token_list if token["Rating"].lower() in ["good", "excellent"]]

def save_to_csv(data, filename="rugcheck_results.csv"):
    df = pd.DataFrame(data)
    df.to_csv(filename, index=False)
    print(f"Результаты сохранены в {filename}")

if __name__ == "__main__":
    contract_addresses = [
        "0x1234567890abcdef1234567890abcdef12345678",
        "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd"
    ]

    print("Запуск WebDriver...")
    driver = setup_webdriver()

    results = []
    print("Проверка контрактных адресов...")
    for ca in contract_addresses:
        result = check_contract(driver, ca)
        print(f"Контракт {ca}: рейтинг = {result['Rating']}")
        results.append(result)

    driver.quit()

    good_tokens = filter_good_tokens(results)

    if good_tokens:
        print(f"Найдено {len(good_tokens)} токенов с рейтингом 'Good' или выше:")
        for token in good_tokens:
            print(token)
        save_to_csv(good_tokens)
    else:
        print("Нет токенов с удовлетворяющим рейтингом.")

Как использовать:

  • Установите необходимые библиотеки: pip install selenium pandas
  • Скачайте ChromeDriver (или другой драйвер для вашего браузера) и укажите путь CHROMEDRIVER_PATH.
  • Проверьте селекторы (By.ID, By.CLASS_NAME) в соответствии с реальной структурой сайта RugCheck.
  • Запустите скрипт:
    python script_name.py

Шаг 4: Анализ социальных сетей

Полезно проверить активность токена в социальных сетях, например, в Twitter. Для этого можно воспользоваться сервисами типа TweetScout, которые позволяют оценить популярность и выявить влиятельных подписчиков.

# Пример кода на Python для анализа Twitter через TweetScout
import time
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options

CHROMEDRIVER_PATH = "./chromedriver"
TWEETSCOUT_URL = "https://www.tweetscout.com"

def setup_webdriver():
    chrome_options = Options()
    chrome_options.add_argument("--headless")
    chrome_options.add_argument("--disable-gpu")
    chrome_options.add_argument("--no-sandbox")
    service = Service(CHROMEDRIVER_PATH)
    driver = webdriver.Chrome(service=service, options=chrome_options)
    return driver

def check_twitter(driver, token_twitter_handle):
    """Проверяем статистику через TweetScout и возвращаем счёт и список топ-20 инфлюенсеров."""
    driver.get(TWEETSCOUT_URL)
    
    try:
        input_box = driver.find_element(By.ID, "twitter-handle-input")  # Уточните селектор
        input_box.clear()
        input_box.send_keys(token_twitter_handle)
        input_box.send_keys(Keys.RETURN)

        time.sleep(5)

        score = driver.find_element(By.CLASS_NAME, "score-label").text  # Уточните селектор
        influencers_section = driver.find_element(By.CLASS_NAME, "influencers-list")
        influencers = [
            inf.text for inf in influencers_section.find_elements(By.TAG_NAME, "li")[:20]
        ]

        return {
            "Twitter Handle": token_twitter_handle,
            "Score": score,
            "Top Influencers": influencers
        }

    except Exception as e:
        print(f"Ошибка при обработке {token_twitter_handle}: {e}")
        return {
            "Twitter Handle": token_twitter_handle,
            "Score": "Error",
            "Top Influencers": [],
            "Error Details": str(e)
        }

def save_to_csv(data, filename="tweetscout_results.csv"):
    df = pd.DataFrame(data)
    df.to_csv(filename, index=False)
    print(f"Результаты сохранены в {filename}")

if __name__ == "__main__":
    twitter_handles = [
        "@exampletoken",
        "@anotherhandle"
    ]

    print("Запуск WebDriver...")
    driver = setup_webdriver()

    results = []
    print("Проверка Twitter-аккаунтов...")
    for handle in twitter_handles:
        result = check_twitter(driver, handle)
        print(f"Аккаунт {handle}: счёт = {result['Score']}")
        results.append(result)

    driver.quit()
    save_to_csv(results)
    print("Скрипт завершён.")

Как использовать:

  • Установите необходимые библиотеки: pip install selenium pandas
  • Скачайте и настройте ChromeDriver.
  • Проверьте правильность селекторов (By.ID, By.CLASS_NAME) для сайта TweetScout.
  • Запустите скрипт для сбора данных:
    python script_name.py

Шаг 5: Автоматизация процесса покупки

Если токен прошёл все проверки, можно отправить его контрактный адрес (CA) напрямую в свой Telegram-бот или другой сервис, где у вас настроена автоматическая покупка или уведомление.

К примеру, в Telegram-бот можно отправлять CA через API, используя библиотеки вроде python-telegram-bot или через собственный скрипт, который дергает URL-адрес бота.


Шаг 6: Объединяем всё в один скрипт

В заключении можно собрать все указанные выше шаги (парсинг, фильтрация, проверки, уведомления) в один скрипт, где каждый шаг вызывается последовательно. Это сделает процесс максимально автоматизированным и удобным для запуска по расписанию (например, через планировщик задач).


Как запустить бота на своём ПК

  1. Установить Python:
    Скачайте и установите Python с официального сайта python.org (если он не установлен).
  2. Установить необходимые библиотеки:
    pip install requests beautifulsoup4 pandas python-telegram-bot selenium
  3. Подготовить драйвер (Selenium):
    Скачайте ChromeDriver (или другой драйвер) и пропишите путь к нему в скриптах.
  4. Сохранить финальный скрипт:
    Создайте файл, например, memecoin_bot.py, в котором будут объединены все шаги.
  5. Запустить скрипт:
    python memecoin_bot.py

Заключение

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

Удачи и успешной охоты за перспективными мем-токенами! 

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

Последние публикации

Crypto 1 d

Как создать бота для поиска мем-токенов: пошаговое руководство

Каждый день выпускаются тысячи мем-токенов (memecoins), но лишь немногие из них добиваются...

Crypto 4 d

Как купить DeepSeek Coin в 2025 году: Полный гид

В последнее время на рынке криптовалют наблюдается настоящий бум вокруг монеты DeepSeek. Однако...

Crypto 4 d

Как создать торгового бота с ИИ на базе DeepSeek

А что, если бы 100 $ могли превратиться в 30000 $ всего за одну ночь? Звучит как фантастика, но я...