UNPKG

@defikitdotnet/x-ai-combat

Version:

XCombatAI - Social Media Engagement Template for the Agent Framework

129 lines (93 loc) 4.08 kB
# XCombatAI XCombatAI is a social media engagement template for the Agent Framework that utilizes the **@defikitdotnet/agent-twitter-client** package for Twitter interactions without requiring the Twitter API. ## Features - **Login with X API**: A dedicated API endpoint to handle Twitter authentication for users on the web platform - **Interaction Scanner**: Scheduled job that scans posts mentioning the agent and identifies user interactions - **Bot Responder**: Monitors posts and replies to unlinked users with contextual AI-generated prompts - **Fame Points System**: Track and reward user engagement with a leaderboard ## Architecture The system consists of the following components: ### Resource Models - **User**: Stores information about users who link their Twitter accounts via the Login with X API - **Post**: Uses the `Tweet` class from **@defikitdotnet/agent-twitter-client** to store tweet data - **Interaction**: Tracks user interactions (likes, retweets, quotes, replies) with posts mentioning the agent ### API Endpoints - Full CRUD operations for User, Post, and Interaction management - Custom endpoints for: - Login with X API (Twitter OAuth flow) - Fetching posts interacted by users - Retrieving interaction statistics ### Plugins - **InteractionScanner**: Scans Twitter for posts mentioning the agent and identifies user interactions - **BotResponder**: Monitors posts and replies to unlinked users with contextual prompts ### Services - **AI Service**: Powered by Google Gemini to generate contextual reply prompts ### Frontend Components - **PostPanel**: Displays a list of posts a user has interacted with - **LeaderboardPanel**: Ranks users based on Fame Points calculated from interactions ## Setup 1. Clone the repository 2. Install dependencies: ``` npm install ``` 3. Create a `.env` file based on `.env.example` with your Twitter credentials and other configuration 4. Run the development server: ``` npm run dev ``` ## Environment Variables - `PORT`: Server port (default: 3000) - `DATABASE_URL`: Postgres database connection string - `JWT_SECRET`: Secret key for JWT tokens - `TWITTER_USERNAME`: Twitter username for the bot account - `TWITTER_PASSWORD`: Twitter password for the bot account - `TWITTER_EMAIL`: Twitter email for the bot account (optional) - `AGENT_TWITTER_HANDLE`: Twitter handle for the agent (default: @XCombatAI) - `GEMINI_API_KEY`: Google Gemini API key for AI-generated replies - `TELEGRAM_BOT_TOKEN`: Telegram bot token for notifications - `TELEGRAM_CHAT_ID`: Telegram chat ID for notifications - `WEB_PLATFORM_URL`: URL to your web platform for the "Login with X" flow ## Fame Points System Fame Points are calculated as follows: - Likes: 0.5 points - Retweets: 2 points - Quotes: 2 points - Replies: 1 point ## Authentication Options ### Regular Authentication The application supports regular username/password authentication for Twitter: ``` TWITTER_USERNAME=your_username TWITTER_PASSWORD=your_password TWITTER_EMAIL=your_email ``` ### Cookie-Based Authentication To bypass the login process entirely, you can provide Twitter cookies directly: 1. Extract cookies from a browser session where you're logged into Twitter 2. Format them as a JSON array and set in your environment: ``` TWITTER_COOKIES=[ ... cookie array ... ] ``` To get your cookies: 1. Log in to Twitter using the application once 2. Use the provided utility to export cookies: ```typescript import { TwitterService } from './services/twitter-service'; async function exportCookies() { const service = TwitterService.getInstance(); await service.initialize(); const cookieJson = await service.getCookiesForExport(); console.log('Add this to your .env file:'); console.log(`TWITTER_COOKIES='${cookieJson}'`); } ``` ### Cookie Caching with Redis For improved reliability, the app can cache cookies using Redis: ``` REDIS_URL=redis://localhost:6379 ``` When Redis is configured, successful logins will cache cookies for future use, reducing the need for frequent logins. ## License ISC