Привет
تم الإنشاء في: ٩ ديسمبر ٢٠٢٥
تمت الإجابة باستخدام GPT-5.1 Thinking بواسطة Chat01
تم الإنشاء في: ٩ ديسمبر ٢٠٢٥
تمت الإجابة باستخدام GPT-5.1 Thinking بواسطة Chat01
Привет
Привет 🙂
Рад тебя видеть здесь.
Что хочешь — поболтать, что-нибудь посчитать, перевести текст, помочь с учебой/работой, придумать идею проекта или истории?
Мне нужен бот в телеграм который будет искать информацию по ключевым словам в твитере
{"calculator":[{"expression":"1+1","prefix":"","suffix":""}]}
Привет. Мне нужен бот в телеграм который будет искать информацию по ключевым словам в твитере
Нужен Telegram-бот, который по команде (или по расписанию) ищет свежие посты в X/Twitter по заданным ключевым словам и присылает ссылки/текст в Telegram-чат.
| Тариф | Объём чтения | Стоимость/мес | Подходит для поиска? |
|---|---|---|---|
| Free | 100 чтений в месяц | $0 | Слишком мало для реального мониторинга (developer.x.com) |
| Basic | 10 000 чтений в месяц | $200 | ✔ Для хобби-бота/одного чата (developer.x.com) |
| Pro | 1 000 000 чтений в месяц + фильтр-стрим | $5 000 | ✔ Для масштабного мониторинга (developer.x.com) |
В бесплатном тарифе поиск почти невозможен: всего 100 запросов-чтений. Поэтому минимально нужен Basic.
| Шаг | Что делаем |
|---|---|
| 2.1 Telegram | 1) Пишем @BotFather, получаем TELEGRAM_TOKEN. |
| 2.2 X API | 2) Регистрируем приложение на https://developer.x.com → выбираем тариф Basic или выше → получаем BEARER_TOKEN (OAuth 2.0). |
| 2.3 Код | 3) Пишем бота на Python (aiogram) или Node.js (Telegraf). Ниже — минимальный пример на Python. |
| 2.4 Деплой | 4) Любой VPS/Render/Railway, либо serverless (AWS Lambda + API Gateway). |
| 2.5 Webhook vs Polling | Для небольших ботов достаточно long-polling; для high-volume лучше webhook (меньше задержка, не держит процесс постоянно). |
python# requirements.txt aiogram==3.* # Telegram aiohttp==3.* # HTTP-клиент python-dotenv==1.* # bot.py import os, aiohttp, asyncio from aiogram import Bot, Dispatcher, F from aiogram.types import Message from aiogram.enums import ParseMode from dotenv import load_dotenv load_dotenv() TG_TOKEN = os.getenv("TELEGRAM_TOKEN") X_BEARER = os.getenv("X_BEARER_TOKEN") bot = Bot(TG_TOKEN, parse_mode=ParseMode.HTML) dp = Dispatcher() SEARCH_URL = "https://api.x.com/2/tweets/search/recent" TWEET_FIELDS = "author_id,created_at" @dp.message(F.text.startswith("/search")) async def cmd_search(message: Message): query = message.text.partition(' ')[2].strip() if not query: await message.answer("Использование: <code>/search ключевые_слова</code>") return params = {"query": query, "max_results": 10, "tweet.fields": TWEET_FIELDS} headers = {"Authorization": f"Bearer {X_BEARER}"} async with aiohttp.ClientSession() as s: async with s.get(SEARCH_URL, params=params, headers=headers) as r: data = await r.json() posts = data.get("data", []) if not posts: await message.answer("Ничего не найдено 👀") return # Формируем ответ chunks = [] for tw in posts: url = f"https://x.com/i/web/status/{tw['id']}" text = tw['text'].replace('<', '<')[:250] chunks.append(f"• {text}…\n<a href='{url}'>Перейти</a>") await message.answer("\n\n".join(chunks)) if __name__ == "__main__": import asyncio, logging logging.basicConfig(level=logging.INFO) asyncio.run(dp.start_polling(bot))
/search коты кофе./2/tweets/search/recent c параметром query="коты кофе"..env;| Идея | Как реализовать |
|---|---|
| Автоматический мониторинг | asyncio.create_task + while True каждые n минут → поиск → если новые id → отправка. |
| Несколько чатов | Хранить перечень чатов и их ключевых слов в БД (SQLite/Redis). |
| Фильтры | Добавлять к query: lang:ru, -is:retweet, has:links и т.д. |
| Стрим-режим (без polling) | На тарифе Pro подключить /2/tweets/search/stream — бот будет получать твиты push-потоком. |
| Анти-rate-limit | Логировать заголовки x-rate-limit-remaining, притормаживать вызовы. |
| Кэш | Сохранять id последних твитов, чтобы не дублировать отправку. |
👉 С этим скелетом можно запустить MVP за вечер. Если понадобится помощь с деплоем, подписыванием OAuth 1.0a (для старого API) или настройкой stream-фильтров — спрашивай!