mezoAgent 0.6.5__py3-none-any.whl → 0.7.1__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- {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
|