From c330f4bd769db361c6f402febddd87414d951025 Mon Sep 17 00:00:00 2001 From: Ang Weoy Yang Date: Fri, 9 May 2025 11:00:57 +0800 Subject: [PATCH 1/4] refactor: remove unnecessary bearerToken and also rename apiSecretKey to apiKeySecret, abstract imports to virtuals tweepy --- .../twitter_plugin_gamesdk/twitter_plugin.py | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/plugins/twitter/twitter_plugin_gamesdk/twitter_plugin.py b/plugins/twitter/twitter_plugin_gamesdk/twitter_plugin.py index dbeed65c..dd9ee357 100644 --- a/plugins/twitter/twitter_plugin_gamesdk/twitter_plugin.py +++ b/plugins/twitter/twitter_plugin_gamesdk/twitter_plugin.py @@ -26,9 +26,9 @@ ``` """ -import virtuals_tweepy import logging from typing import Dict, Any +from virtuals_tweepy import Client, TweepyException class TwitterPlugin: """ @@ -48,7 +48,7 @@ class TwitterPlugin: id (str): Plugin identifier name (str): Plugin name description (str): Plugin description - twitter_client (tweepy.Client): Authenticated Twitter API client + twitter_client (virtuals_tweepy.Client): Authenticated Twitter API client logger (logging.Logger): Plugin logger Raises: @@ -63,27 +63,26 @@ def __init__(self, options: Dict[str, Any]) -> None: raise ValueError("Twitter API credentials are required.") # Capture token for internal use - self.game_twitter_access_token = credentials.get("gameTwitterAccessToken") + self.game_twitter_access_token = credentials.get("game_twitter_access_token") # Auth gate: require EITHER gameTwitterAccessToken OR full credential set has_api_credentials = all( - credentials.get(key) for key in ["bearerToken", "apiKey", "apiSecretKey", "accessToken", "accessTokenSecret"] + credentials.get(key) for key in ["api_key", "api_key_secret", "access_token", "access_token_secret"] ) if not self.game_twitter_access_token and not has_api_credentials: raise ValueError( - "Missing valid authentication. Provide either a 'gameTwitterAccessToken' or all required Twitter API credentials." + "Missing valid authentication. Provide either a 'game_twitter_access_token' or all required Twitter API credentials." ) # Init Tweepy client - self.twitter_client: virtuals_tweepy.Client = virtuals_tweepy.Client( - bearer_token = credentials.get("bearerToken"), - consumer_key = credentials.get("apiKey"), - consumer_secret = credentials.get("apiSecretKey"), - access_token = credentials.get("accessToken"), - access_token_secret=credentials.get("accessTokenSecret"), + self.twitter_client: Client = Client( + consumer_key = credentials.get("api_key"), + consumer_secret = credentials.get("api_key_secret"), + access_token = credentials.get("access_token"), + access_token_secret=credentials.get("access_token_secret"), return_type = dict, - game_twitter_access_token = credentials.get("gameTwitterAccessToken"), + game_twitter_access_token = credentials.get("game_twitter_access_token"), ) # Configure logging logging.basicConfig(level=logging.INFO) @@ -98,6 +97,6 @@ def _check_authentication(self) -> None: try: user = self.twitter_client.get_me(user_fields=["public_metrics"]).get('data') self.logger.info(f"Authenticated as: {user.get('name')} (@{user.get('username')})") - except virtuals_tweepy.TweepyException as e: + except TweepyException as e: self.logger.error(f"Authentication failed: {e}") raise ValueError("Invalid Twitter credentials or failed authentication.") From ae1b5e77ce3f9231746e141d55e2b19980bed14a Mon Sep 17 00:00:00 2001 From: Ang Weoy Yang Date: Fri, 9 May 2025 14:32:20 +0800 Subject: [PATCH 2/4] chore(git): ignore .venv/ --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index efe5175b..0365dcc7 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,5 @@ dist/ # JetBrains IDEs .idea/ + +.venv/ From 642b268e746f92723c9d0c1ac21ff30362c0cc80 Mon Sep 17 00:00:00 2001 From: Ang Weoy Yang Date: Fri, 9 May 2025 14:33:39 +0800 Subject: [PATCH 3/4] feat: improve test twitter examples according to virtuals_tweepy --- .../examples/sample_media/media_file.png | Bin 14949 -> 0 bytes .../examples/sample_media/virtuals-logo.png | Bin 0 -> 97716 bytes plugins/twitter/examples/test_twitter.py | 215 +++++++++++------- 3 files changed, 135 insertions(+), 80 deletions(-) delete mode 100644 plugins/twitter/examples/sample_media/media_file.png create mode 100644 plugins/twitter/examples/sample_media/virtuals-logo.png diff --git a/plugins/twitter/examples/sample_media/media_file.png b/plugins/twitter/examples/sample_media/media_file.png deleted file mode 100644 index 45a4a22cec3fbcc5a575cca02fd26de030a00753..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14949 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 Q-#+ODlwIq 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

)O&jJn{ZYc{Lt6MZw5OSocdoc* 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 Date: Fri, 9 May 2025 14:34:50 +0800 Subject: [PATCH 4/4] docs: update documentation according to latest virtuals_tweepy --- plugins/twitter/README.md | 190 +++++++++++++++-------- plugins/twitter/examples/test_twitter.py | 2 +- 2 files changed, 123 insertions(+), 69 deletions(-) diff --git a/plugins/twitter/README.md b/plugins/twitter/README.md index c6de3689..e81182a0 100644 --- a/plugins/twitter/README.md +++ b/plugins/twitter/README.md @@ -1,99 +1,153 @@ # Twitter Plugin for GAME SDK -The Twitter plugin is a lightweight wrapper over commonly-used twitter API calls. It can be used as a executable on its own or by combining multiple of these into an executable. +The **Twitter Plugin** provides a lightweight interface for integrating Twitter (X) functionality into your GAME SDK agents. Built on top of [`virtuals_tweepy`](https://pypi.org/project/virtuals-tweepy/) by the Virtuals team — a maintained fork of [`Tweepy`](https://pypi.org/project/tweepy/)) — this plugin lets you easily post tweets, fetch data, and execute workflows through agent logic. + +Use it standalone or compose multiple Twitter actions as part of a larger agent job. + +--- ## Installation -From this directory (`twitter`), run the installation: +You can install the plugin using either `poetry` or `pip`: ```bash +# Using Poetry (from the plugin directory) poetry install ``` +or +```bash +# Using pip (recommended for integration projects) +pip install twitter_plugin_gamesdk +``` + +--- -## Usage +## Authentication Methods -The Twitter plugin can be initialized in one of two ways: +We support two primary ways to authenticate: -1. Using GAME's X enterprise API credentials (higher rate limits) +### 1. GAME's Sponsored X Enterprise Access Token (Recommended) - - To get the access token for this option, run the following command: +Virtuals sponsors the community with a **Twitter Enterprise API access plan**, using OAuth 2.0 with PKCE. This provides: - ```bash - poetry run twitter-plugin-gamesdk auth -k - ``` +- Higher rate limits: **35 calls / 5 minutes** +- Smoother onboarding +- Free usage via your `GAME_API_KEY` - You will see the following output: +#### a. Get Your Access Token - ```bash - Waiting for authentication... +Run the following command to authenticate using your `GAME_API_KEY`: - Visit the following URL to authenticate: - https://x.com/i/oauth2/authorize?response_type=code&client_id=VVdyZ0t4WFFRMjBlMzVaczZyMzU6MTpjaQ&redirect_uri=http%3A%2F%2Flocalhost%3A8714%2Fcallback&state=866c82c0-e3f6-444e-a2de-e58bcc95f08b&code_challenge=K47t-0Mcl8B99ufyqmwJYZFB56fiXiZf7f3euQ4H2_0&code_challenge_method=s256&scope=tweet.read%20tweet.write%20users.read%20offline.access - ``` +```bash +poetry run twitter-plugin-gamesdk auth -k +``` + +This will prompt: + +```bash +Waiting for authentication... + +Visit the following URL to authenticate: +https://x.com/i/oauth2/authorize?... + +Authenticated! Here's your access token: +apx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +``` + +#### b. Store Your Access Token + +We recommend storing environment variables in a `.env` file: + +``` +# .env + +GAME_TWITTER_ACCESS_TOKEN=apx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +``` - After authenticating, you will receive the following message: +Then, use `load_dotenv()` to load them: - ```bash - Authenticated! Here's your access token: - apx- - ``` +```python +import os +from dotenv import load_dotenv +from twitter_plugin_gamesdk.twitter_plugin import TwitterPlugin - - Set the access token as an environment variable called `GAME_TWITTER_ACCESS_TOKEN` (e.g. using a `.bashrc` or a `.zshrc` file). - - Import and initialize the plugin to use in your worker: +load_dotenv() - ```python - import os - from twitter_plugin_gamesdk.twitter_plugin import TwitterPlugin +options = { + "credentials": { + "game_twitter_access_token": os.environ.get("GAME_TWITTER_ACCESS_TOKEN") + } +} - # Define your options with the necessary credentials - options = { - "credentials": { - "gameTwitterAccessToken": os.environ.get("GAME_TWITTER_ACCESS_TOKEN") - }, - } - # Initialize the TwitterPlugin with your options - twitter_plugin = TwitterPlugin(options) +twitter_plugin = TwitterPlugin(options) +client = twitter_plugin.twitter_client - # Post a tweet - post_tweet_fn = twitter_plugin.get_function('post_tweet') - post_tweet_fn("Hello world!") - ``` +client.create_tweet(text="Tweeting with GAME Access Token!") +``` + +--- + +### 2. Use Your Own Twitter Developer Credentials + +Use this option if you need access to Twitter endpoints requiring a different auth level (e.g., **OAuth 1.0a User Context** or **OAuth 2.0 App Only**). + +> See [X API Auth Mapping](https://docs.x.com/resources/fundamentals/authentication/guides/v2-authentication-mapping) to determine which auth level is required for specific endpoints. + +#### a. Get Your Developer Credentials + +1. Sign in to the [Twitter Developer Portal](https://developer.x.com/en/portal/dashboard). +2. Create a project and app. +3. Generate the following keys and store them in your `.env` file: + +``` +# .env + +TWITTER_API_KEY=... +TWITTER_API_SECRET_KEY=... +TWITTER_ACCESS_TOKEN=... +TWITTER_ACCESS_TOKEN_SECRET=... +``` + +#### b. Initialize the Plugin + +```python +import os +from dotenv import load_dotenv +from twitter_plugin_gamesdk.twitter_plugin import TwitterPlugin + +load_dotenv() + +options = { + "credentials": { + "api_key": os.environ.get("TWITTER_API_KEY"), + "api_key_secret": os.environ.get("TWITTER_API_SECRET_KEY"), + "access_token": os.environ.get("TWITTER_ACCESS_TOKEN"), + "access_token_secret": os.environ.get("TWITTER_ACCESS_TOKEN_SECRET"), + } +} + +twitter_plugin = TwitterPlugin(options) +client = twitter_plugin.twitter_client + +client.create_tweet(text="Tweeting with personal developer credentials!") +``` -2. Using your own X API credentials +--- - - If you don't already have one, create a X (twitter) account and navigate to the [developer portal](https://developer.x.com/en/portal/dashboard). - - Create a project app, generate the following credentials and set them as environment variables (e.g. using a `.bashrc` or a `.zshrc` file): - - `TWITTER_BEARER_TOKEN` - - `TWITTER_API_KEY` - - `TWITTER_API_SECRET_KEY` - - `TWITTER_ACCESS_TOKEN` - - `TWITTER_ACCESS_TOKEN_SECRET` - - Import and initialize the plugin to use in your worker: +## Examples - ```python - import os - from twitter_plugin_gamesdk.twitter_plugin import TwitterPlugin +Explore the [`examples/`](./examples) directory for sample scripts demonstrating how to: - # Define your options with the necessary credentials - options = { - "credentials": { - "bearerToken": os.environ.get("TWITTER_BEARER_TOKEN"), - "apiKey": os.environ.get("TWITTER_API_KEY"), - "apiSecretKey": os.environ.get("TWITTER_API_SECRET_KEY"), - "accessToken": os.environ.get("TWITTER_ACCESS_TOKEN"), - "accessTokenSecret": os.environ.get("TWITTER_ACCESS_TOKEN_SECRET"), - }, - } - # Initialize the TwitterPlugin with your options - twitter_plugin = TwitterPlugin(options) +- Post tweets +- Reply to mentions +- Quote tweets +- Fetch user timelines +- And more! - # Post a tweet - post_tweet_fn = twitter_plugin.twitter_client.create_tweet - post_tweet_fn(text="Hello world! This is a test tweet from the Twitter Plugin!") - ``` +--- -For detailed documentation on each function's parameters and usage, please refer to the [Tweepy Client Documentation](https://docs.tweepy.org/en/stable/client.html). +## API Reference -Example usage: +This plugin wraps [`virtuals_tweepy`](https://pypi.org/project/virtuals-tweepy/), which is API-compatible with [Tweepy’s client interface](https://docs.tweepy.org/en/stable/client.html). Refer to their docs for supported methods and parameters. -You can refer to the example files in the `examples` directory for more examples on how to call the twitter functions. +--- diff --git a/plugins/twitter/examples/test_twitter.py b/plugins/twitter/examples/test_twitter.py index 8e6ca303..b5d85e96 100644 --- a/plugins/twitter/examples/test_twitter.py +++ b/plugins/twitter/examples/test_twitter.py @@ -20,7 +20,7 @@ def run_twitter_actions(): # }, # } - # Option B: Using GAME Twitter API credentials + # Option B: Using GAME Twitter API Access Token (Recommended, higher rate limits: 35 calls/5 minutes) options = { "credentials": { "game_twitter_access_token": token