Каждый день выпускаются тысячи мем-токенов (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: Объединяем всё в один скрипт
В заключении можно собрать все указанные выше шаги (парсинг, фильтрация, проверки, уведомления) в один скрипт, где каждый шаг вызывается последовательно. Это сделает процесс максимально автоматизированным и удобным для запуска по расписанию (например, через планировщик задач).
Как запустить бота на своём ПК
- Установить Python:
Скачайте и установите Python с официального сайта python.org (если он не установлен). - Установить необходимые библиотеки:
pip install requests beautifulsoup4 pandas python-telegram-bot selenium
- Подготовить драйвер (Selenium):
Скачайте ChromeDriver (или другой драйвер) и пропишите путь к нему в скриптах. - Сохранить финальный скрипт:
Создайте файл, например,memecoin_bot.py
, в котором будут объединены все шаги. - Запустить скрипт:
python memecoin_bot.py
Заключение
Следуя описанным шагам, вы можете создать удобного помощника для автоматического мониторинга и анализа новых мем-токенов. Скрипт возьмёт на себя рутинные операции — проверку объёмов, ликвидности, контрактных адресов, а также анализ социальных сетей — помогая быстрее принимать решения. Тем не менее, помните о рисках и всегда проводите дополнительную проверку перед тем, как инвестировать.
Удачи и успешной охоты за перспективными мем-токенами!