A modern, easy to use, feature-rich, and async ready API wrapper for Twitter's user API written in Python.
NEW! ΠΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Π°ΠΊΠΊΠ°ΡΠ½ΡΠΎΠ² Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ :
More libraries of the family:
ΠΡΠ΄Π΅Π»ΡΠ½ΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ ΠΡΠ·Π½ΠΈΡΠ΅ ΠΠΎΡΠΎΠ² Π·Π° ΠΊΠΎΠ΄ Π΄Π»Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΡΠ°Π·ΠΌΠΎΡΠΎΠ·ΠΊΠΈ! ΠΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΠΉΡΠ΅ΡΡ Π½Π° ΠΈΡ Telegram :)
ΠΠΎΡ ΠΎΠΆΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
- Modern Pythonic API using async and await.
- Prevents user account automation detection.
pip install tweepy-self
import asyncio
import twitter
twitter_account = twitter.Account(auth_token="auth_token")
async def main():
async with twitter.Client(twitter_account) as twitter_client:
print(f"Logged in as @{twitter_account.username} (id={twitter_account.id})")
tweet = await twitter_client.tweet("Hello tweepy-self! <3")
print(tweet)
if __name__ == "__main__":
asyncio.run(main())
ΠΠΌΠ΅Π½Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΠΠ Π·Π½Π°ΠΊΠ° @
.
Π§ΡΠΎΠ±Ρ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° ΡΠ±ΡΠ°ΡΡ ΡΡΠΎΡ Π·Π½Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΡΡΠ½ΠΊΡΠΈΡ twitter.utils.remove_at_sign()
Automating user accounts is against the Twitter ToS. This library is a proof of concept and I cannot recommend using it. Do so at your own risk
import sys
from loguru import logger
logger.remove()
logger.add(sys.stdout, level="INFO")
logger.enable("twitter")
level="DEBUG"
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ
Π·Π°ΠΏΡΠΎΡΠ°Ρ
.
twitter.Account
UNKNOWN
- Π‘ΡΠ°ΡΡΡ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ° Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½. ΠΡΠΎ ΡΡΠ°ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.BAD_TOKEN
- ΠΠ΅Π²Π΅ΡΠ½ΡΠΉ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΡΠ²ΡΠΉ ΡΠΎΠΊΠ΅Π½.SUSPENDED
- ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π·Π°ΠΏΡΠΎΡ Π΄Π°Π½Π½ΡΡ , Π° ΡΠ°ΠΊΠΆΠ΅ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· OAuth ΠΈ OAuth2.LOCKED
- Π£ΡΠ΅ΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ Π·Π°ΠΌΠΎΡΠΎΠΆΠ΅Π½Π° (Π»ΠΎΠΊ). ΠΠ»Ρ ΡΠ°Π·ΠΌΠΎΡΠΎΠ·ΠΊΠΈ (Π°Π½Π»ΠΎΠΊ) ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ (funcaptcha).CONSENT_LOCKED
- Π£ΡΠ΅ΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ Π·Π°ΠΌΠΎΡΠΎΠΆΠ΅Π½Π° (Π»ΠΎΠΊ). Π£ΡΠ»ΠΎΠ²ΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΠΌΠΎΡΠΎΠ·ΠΊΠΈ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½Ρ.GOOD
- ΠΠΊΠΊΠ°ΡΠ½Ρ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
ΠΠ΅ΡΠΎΠ΄ Client.establish_status()
ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΡΠ°ΡΡΡ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°.
Π’Π°ΠΊΠΆΠ΅ ΡΡΠ°ΡΡΡ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π»ΡΠ±ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Twitter.
ΠΠΎΡΡΠΎΠΌΡ, Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠΆΠ΅Ρ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° twitter.errors.BadAccount
.
ΠΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Twitter Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠ°ΡΡΡ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΡΡΠΎΠΉ Π·Π°ΠΏΡΠΎΡ Π΄Π°Π½Π½ΡΡ
ΠΎΠ± Π°ΠΊΠΊΠ°ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΠ½ΠΎ Π²Π΅ΡΠ½Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ ΡΡΠ°ΡΡΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π²Π°ΡΠ΅ΠΉ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ (SUSPENDED
).
twitter.Client
ΠΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ°Π±ΠΎΡΠΎΠΉ. ΠΠ½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
wait_on_rate_limit
ΠΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ, ΡΠΎ ΠΏΡΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ Rate Limit Π±ΡΠ΄Π΅Ρ ΠΆΠ΄Π°ΡΡ, Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. ΠΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.capsolver_api_key
API ΠΊΠ»ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ° CapSolver. ΠΡΠΆΠ΅Π½ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ°Π·ΠΌΠΎΡΠΎΠ·ΠΊΠΈ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°.max_unlock_attempts
ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠΏΡΡΠΎΠΊ ΡΠ°Π·ΠΌΠΎΡΠΎΠ·ΠΊΠΈ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: 5.auto_relogin
ΠΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ, ΡΠΎ ΠΏΡΠΈ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΠΎΠΌ ΡΠΎΠΊΠ΅Π½Π΅ (BAD_TOKEN
) ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ (ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΏΠ°ΡΠΎΠ»Ρ ΠΈ totp_secret) Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅Π»ΠΎΠ³ΠΈΠ½ (Π·Π°ΠΌΠ΅Π½Π° ΡΠΎΠΊΠ΅Π½Π°). ΠΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.update_account_info_on_startup
ΠΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ, ΡΠΎ Π½Π° ΡΡΠ°ΡΡΠ΅ Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± Π°ΠΊΠΊΠ°ΡΠ½ΡΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π΅Π³ΠΎ ΡΡΠ°ΡΡΡ. ΠΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.**session_kwargs
ΠΡΠ±ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ΅ΡΡΠΈΡcurl_cffi.requests.AsyncSession
. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡproxy
.
ΠΡΠΈΠΌΠ΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°:
async with twitter.Client(
twitter_account,
capsolver_api_key="CAP-00000000000000000000000000000000",
proxy="http://login:password@ip:port", # ΠΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° better_proxy
) as twitter_client:
...
Π‘ΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
twitter_client.update_account_info()
print(twitter_client.account)
bro = twitter_client.request_user_by_username(bro_username)
bro = twitter_client.request_user_by_id(bro_id)
bros = twitter_client.request_users_by_ids([bro1_id, bro2_id, ...])
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ, ΡΠΌΠ΅Π½Π° Π°Π²Π°ΡΠ°ΡΠΊΠΈ ΠΈ Π±Π°Π½Π½Π΅ΡΠ°
image = open("image.png", "rb").read()
media = await twitter_client.upload_image(image)
avatar_image_url = await twitter_client.update_profile_avatar(media.id)
banner_image_url = await twitter_client.update_profile_banner(media.id)
await twitter_client.update_birthdate(day=1, month=12, year=2000)
await twitter_client.update_profile( # Locks account!
name="New Name",
description="New description",
location="New York",
website="https://github.com/alenkimov/tweepy-self",
)
if await twitter_client.totp_is_enabled():
print(f"TOTP ΡΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½.")
return
await twitter_client.enable_totp()
import twitter
twitter_account = twitter.Account(auth_token="...", username="...", password="...", totp_secret="...")
await twitter_client.login()
print(f"Logged in! New auth_token: {twitter_account.auth_token}")
twitter_account = twitter.Account("auth_token", password="password")
...
await twitter_client.change_username("new_username")
await twitter_client.request_user()
print(f"New username: {twitter_account.username}")
await twitter_client.change_password("new_password")
print(f"New password: {twitter_account.password}")
print(f"New auth_token: {twitter_account.auth_token}")
auth_code = await twitter_client.oauth(oauth_token, **oauth_params)
# ΠΠ·ΡΡΠΈΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΈ Π½Π°ΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ (ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ):
oauth2_data = {
'response_type': 'code',
'client_id': 'TjFVQm52ZDFGWEtNT0tKaktaSWU6MTpjaQ',
'redirect_uri': 'https://waitlist.lens.xyz/tw/',
'scope': 'users.read tweet.read offline.access',
'state': 'state', # ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠ°ΠΊ ΡΡΠ°ΡΠΈΡΠ½ΡΠΌ, ΡΠ°ΠΊ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ.
'code_challenge': 'challenge',
'code_challenge_method': 'plain'
}
auth_code = await twitter_client.oauth2(**oauth2_data)
# ΠΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ ΠΊΠΎΠ΄ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ (ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ) ΡΠ΅ΡΠ²ΠΈΡΡ.
# Π‘Π΅ΡΠ²ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ state, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ.
bro = await twitter_client.request_user("bro_username")
await twitter_client.send_message(bro.id, "I love you!")
messages = await twitter_client.request_messages()
for message in messages:
message_data = message["message_data"]
recipient_id = message_data["recipient_id"]
sender_id = message_data["sender_id"]
text = message_data["text"]
print(f"[id {sender_id}] -> [id {recipient_id}]: {text}")
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ½Π΅ ΠΏΠΎΡΡΠΈ Π½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ, Ρ Π΅ΡΠ΅ Π½Π΅ ΡΠ΄Π΅Π»Π°Π» Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΌ.
tweet = await twitter_client.tweet("I love you tweepy-self! <3")
print(f"ΠΡΠ±ΠΎΠ²Ρ Π²ΡΡΠ°ΠΆΠ΅Π½Π°! Tweet id: {tweet.id}")
# ΠΠ°ΠΉΠΊ
print(f"Tweet {tweet_id} is liked: {await twitter_client.like(tweet_id)}")
# Π Π΅ΠΏΠΎΡΡ (ΡΠ΅ΡΠ²ΠΈΡ)
print(f"Tweet {tweet_id} is retweeted. Tweet id: {await twitter_client.repost(tweet_id)}")
# ΠΠΎΠΌΠΌΠ΅Π½Ρ (ΡΠ΅ΠΏΠ»Π°ΠΉ)
print(f"Tweet {tweet_id} is replied. Reply id: {await twitter_client.reply(tweet_id, 'tem razΓ£o')}")
tweet_url = 'https://twitter.com/CreamIce_Cone/status/1691735090529976489'
# Π¦ΠΈΡΠ°ΡΠ° (Quote tweet)
quote_tweet_id = await twitter_client.quote(tweet_url, 'oh....')
print(f"Quoted! Tweet id: {quote_tweet_id}")
# ΠΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π΅ΠΌΡΡ Π½Π° ΠΠ»ΠΎΠ½Π° ΠΠ°ΡΠΊΠ°
print(f"@{elonmusk.username} is followed: {await twitter_client.follow(elonmusk.id)}")
# ΠΡΠΏΠΈΡΡΠ²Π°Π΅ΠΌΡΡ ΠΎΡ ΠΠ»ΠΎΠ½Π° ΠΠ°ΡΠΊΠ°
print(f"@{elonmusk.username} is unfollowed: {await twitter_client.unfollow(elonmusk.id)}")
pinned = await twitter_client.pin_tweet(tweet_id)
print(f"Tweet is pined: {pinned}")
followers = await twitter_client.request_followers()
print("Π’Π²ΠΎΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΈ:")
for user in followers:
print(user)
followings = await twitter_client.request_followings()
print(f"Π’Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ Π½Π°:")
for user in followings:
print(user)
bro_followers = await twitter_client.request_followers(bro_id)
print(f"ΠΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ Π±ΡΠΎ (id={bro_id}):")
for user in bro_followers:
print(user)
bro_followings = await twitter_client.request_followings(bro_id)
print(f"ΠΠ° ΡΠ²ΠΎΠ΅Π³ΠΎ Π±ΡΠΎ (id={bro_id}) ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Ρ:")
for user in bro_followings:
print(user)
vote_data = await twitter_client.vote(tweet_id, card_id, choice_number)
votes_count = vote_data["card"]["binding_values"]["choice1_count"]["string_value"]
print(f"Votes: {votes_count}")
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ½Π΅ ΠΏΠΎΡΡΠΈ Π½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π³ΠΎΠ»ΠΎΡΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ, Ρ Π΅ΡΠ΅ Π½Π΅ ΡΠ΄Π΅Π»Π°Π» Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΌ.