mezoAgent 0.6.5__py3-none-any.whl → 0.7.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mezoAgent-0.6.5.dist-info → mezoAgent-0.7.1.dist-info}/METADATA +1 -1
- {mezoAgent-0.6.5.dist-info → mezoAgent-0.7.1.dist-info}/RECORD +7 -5
- mezo_agent/__init__.py +3 -1
- mezo_agent/twitter_client.py +80 -0
- mezo_agent/twitter_manager.py +0 -0
- {mezoAgent-0.6.5.dist-info → mezoAgent-0.7.1.dist-info}/WHEEL +0 -0
- {mezoAgent-0.6.5.dist-info → mezoAgent-0.7.1.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
mezo_agent/__init__.py,sha256=
|
1
|
+
mezo_agent/__init__.py,sha256=1UatqstSlOF8pU5-fu675ONGteB6INqyE74xMi8S1o4,752
|
2
2
|
mezo_agent/characters.py,sha256=wub7y9BrAAdAKWwcNAdgrvhRi2zHMaZNzTr2y3qtbsw,515
|
3
3
|
mezo_agent/chat.py,sha256=ZtNurUDV7UzJjbFyU96DNGy37hO3gl0osn19mRu7ER8,859
|
4
4
|
mezo_agent/config.py,sha256=6xFgk80eiBLTasKGW73Ne8hNhMtx8BbQ_Ef79YOyDlc,3233
|
@@ -8,9 +8,11 @@ mezo_agent/token_balance_tool.py,sha256=n5xkHWGhkJdQZILN0fDe-n4NHgXSHTSloEHJfkLM
|
|
8
8
|
mezo_agent/token_price_tool.py,sha256=vD-ukq0D_4zmjIy9bZ9qL44nGctf-hWzkQuTd-0wy2U,930
|
9
9
|
mezo_agent/token_utils.py,sha256=3NH_Z_vbZ0uupuuGjEbmwsbUkubluQbL-0xR9kia7nU,1118
|
10
10
|
mezo_agent/transaction.py,sha256=YpfWrkEaf0YGM_Kc4cFwlT9GmBGZkeJHWm0VGHs9Gks,4199
|
11
|
+
mezo_agent/twitter_client.py,sha256=Va8ZQaK5lZjJUq3-bhIJWnDmX4Mmt4kWRW3aKSGbLq8,3248
|
12
|
+
mezo_agent/twitter_manager.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
13
|
mezo_agent/utils.py,sha256=hsGtL_iXvUVGnY5aHPQ0v6Jejxd4P4qw0yOtS1omToU,1397
|
12
14
|
mezo_agent/data/new_router.json,sha256=A8U-NVfe1F-hDyR90_SuH8jDAxmzyyHWdJW62j9TZsc,26756
|
13
|
-
mezoAgent-0.
|
14
|
-
mezoAgent-0.
|
15
|
-
mezoAgent-0.
|
16
|
-
mezoAgent-0.
|
15
|
+
mezoAgent-0.7.1.dist-info/METADATA,sha256=0SWYjd82fIU-sYplnf6oPRUH15JeyiniDKPB6l4S9q0,273
|
16
|
+
mezoAgent-0.7.1.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
17
|
+
mezoAgent-0.7.1.dist-info/top_level.txt,sha256=rrAci_NyTR9z6w_BrQhQrAhzMW_A0NYhVa0x2USl0nQ,11
|
18
|
+
mezoAgent-0.7.1.dist-info/RECORD,,
|
mezo_agent/__init__.py
CHANGED
@@ -4,7 +4,8 @@ from .chat import mezo_character_chat
|
|
4
4
|
from .characters import get_character_prompt
|
5
5
|
from .token_balance_tool import mezo_agent_token_balance_tool
|
6
6
|
from .token_price_tool import mezo_agent_token_price_tool
|
7
|
-
from .token_utils import get_token_address_by_symbol
|
7
|
+
from .token_utils import get_token_address_by_symbol
|
8
|
+
from .twitter_manager import TwitterManager
|
8
9
|
|
9
10
|
__all__ = [
|
10
11
|
"mezo_agent_transaction_btc",
|
@@ -14,5 +15,6 @@ __all__ = [
|
|
14
15
|
"mezo_agent_token_balance_tool",
|
15
16
|
"mezo_agent_token_price_tool",
|
16
17
|
"get_token_address_by_symbol",
|
18
|
+
"TwitterManager",
|
17
19
|
"get_character_prompt"
|
18
20
|
]
|
@@ -0,0 +1,80 @@
|
|
1
|
+
import tweepy
|
2
|
+
import time
|
3
|
+
import random
|
4
|
+
from datetime import datetime, timedelta
|
5
|
+
from threading import Thread
|
6
|
+
from mezo_agent.config import load_dotenv
|
7
|
+
import os
|
8
|
+
|
9
|
+
# Load environment variables
|
10
|
+
load_dotenv()
|
11
|
+
|
12
|
+
class TwitterClient:
|
13
|
+
"""
|
14
|
+
A modular Twitter client for MezoAgent that allows characters to tweet automatically with personality.
|
15
|
+
"""
|
16
|
+
|
17
|
+
def __init__(self, character_name: str, api_key: str, api_secret: str, access_token: str, access_secret: str, personality: str):
|
18
|
+
"""
|
19
|
+
Initializes the Twitter client for a given character.
|
20
|
+
|
21
|
+
:param character_name: Name of the AI character.
|
22
|
+
:param api_key: Twitter API Key.
|
23
|
+
:param api_secret: Twitter API Secret Key.
|
24
|
+
:param access_token: Twitter Access Token.
|
25
|
+
:param access_secret: Twitter Access Token Secret.
|
26
|
+
:param personality: Custom personality description for AI-generated tweets.
|
27
|
+
"""
|
28
|
+
self.character_name = character_name
|
29
|
+
self.personality = personality # ✅ Store personality
|
30
|
+
|
31
|
+
# Authenticate with Twitter API
|
32
|
+
auth = tweepy.OAuthHandler(api_key, api_secret)
|
33
|
+
auth.set_access_token(access_token, access_secret)
|
34
|
+
self.api = tweepy.API(auth, wait_on_rate_limit=True)
|
35
|
+
|
36
|
+
# Schedule tweets
|
37
|
+
self.schedule_tweets()
|
38
|
+
|
39
|
+
def generate_tweet(self) -> str:
|
40
|
+
"""
|
41
|
+
Generates a tweet using AI for the character based on its personality.
|
42
|
+
This function can be modified to pull from AI-generated content.
|
43
|
+
|
44
|
+
:return: A string containing the tweet.
|
45
|
+
"""
|
46
|
+
tweet_templates = [
|
47
|
+
f"{self.character_name} - {self.personality}: \"Thinking about the future of DeFi... 🚀\"",
|
48
|
+
f"{self.character_name} - {self.personality}: \"GM! Stay bullish today. 🌞\"",
|
49
|
+
f"{self.character_name} - {self.personality}: \"On-chain or it didn't happen! ⛓️\"",
|
50
|
+
f"{self.character_name} - {self.personality}: \"Stacking sats and stacking wisdom. 💡\"",
|
51
|
+
f"{self.character_name} - {self.personality}: \"Wen moon? HODL tight! 🌙\""
|
52
|
+
]
|
53
|
+
return random.choice(tweet_templates)
|
54
|
+
|
55
|
+
def post_tweet(self):
|
56
|
+
"""
|
57
|
+
Posts a tweet for the character.
|
58
|
+
"""
|
59
|
+
try:
|
60
|
+
tweet_content = self.generate_tweet()
|
61
|
+
self.api.update_status(tweet_content)
|
62
|
+
print(f"✅ {self.character_name} tweeted: {tweet_content}")
|
63
|
+
except Exception as e:
|
64
|
+
print(f"❌ Failed to post tweet for {self.character_name}: {e}")
|
65
|
+
|
66
|
+
def schedule_tweets(self):
|
67
|
+
"""
|
68
|
+
Schedules tweets to be sent 5 times per 24-hour period.
|
69
|
+
Runs in a separate thread to avoid blocking the main agent process.
|
70
|
+
"""
|
71
|
+
def tweet_scheduler():
|
72
|
+
while True:
|
73
|
+
for _ in range(5): # Post 5 tweets per day
|
74
|
+
self.post_tweet()
|
75
|
+
sleep_time = (24 * 60 * 60) // 5 # Spread tweets across 24 hours
|
76
|
+
print(f"⏳ Next tweet in {sleep_time // 60} minutes...")
|
77
|
+
time.sleep(sleep_time)
|
78
|
+
|
79
|
+
thread = Thread(target=tweet_scheduler, daemon=True)
|
80
|
+
thread.start()
|
File without changes
|
File without changes
|
File without changes
|