Compare commits

..

No commits in common. "c0b5c168a79dd3d829d5dcdab25e74c7f44384f3" and "0874d5211d25923fe0c76cec14a2c74f8f564e0e" have entirely different histories.

2 changed files with 18 additions and 24 deletions

View file

@ -16,7 +16,7 @@ N'hésitez pas à ouvrir un ticket ou faire une merge-request pour contribuer au
## Lancer le Bot
Donner la permission au minimum `Read and Write` au bot dans `Settings` puis `App permissions`.
Donner la permission `Read and Write` (ou `Read + Write + Direct Messages` mais aucun DM n'est envoyé) au bot dans `Settings` puis `App permissions`.
Les codes fourni par l'API de Twitter sont généralements disponible dans la page `Keys and tokens`.

40
main.py
View file

@ -85,7 +85,7 @@ class Listener(StreamingClient):
"users": users,
"forcelist": forcelist
}
self.victim_list = getFriends(client, users) + getIDs(client, forcelist)
self.listOfFriendsID = getFriendsID(client, users) + getIDs(client, forcelist)
def on_connect(self):
if self.accounts['forcelist'] == []:
@ -101,11 +101,9 @@ class Listener(StreamingClient):
print(f"Raison : {notice['reason']}")
def on_status(self, status):
print(status)
exit(0)
json = status._json
# Verify the author of the tweet
if json["user"]["id"] in self.victim_list and json["user"]["screen_name"] not in keys["WHITELIST"]:
if json["user"]["id"] in self.listOfFriendsID and json["user"]["screen_name"] not in keys["WHITELIST"]:
# Verify the age of the tweet
if seniority(json["created_at"]):
# Verify if the tweet isn't a retweet
@ -200,22 +198,23 @@ def repeater(word: str) -> str:
# Random format from the base answer
return createBaseAnswers(word)
def getFriends(client: Client, users: list[str]) -> list:
def getFriendsID(client: Client, users: list[str]) -> list:
"""Get all friends of choosen users"""
friends_list = []
liste = []
# Get IDs of the user's friends
for user in users:
user_id = client.get_user(username=user, user_auth=True).data.id
friends_list.extend(client.get_users_following(id=user_id, user_auth=True))
return friends_list[0]
# TODO: Update Twitter API V2
liste.extend(client.get_friend_ids(screen_name=user))
return list(set(liste))
def getIDs(client: Client, users: list[str]) -> list:
"""Get all the ID of users"""
users_list = []
liste = []
# Get IDs of the users
for user in users:
users_list.append(client.get_user(username=user, user_auth=True).data)
return users_list
# TODO: Update Twitter API V2
liste.append(client.get_user(screen_name=user)._json["id"])
return list(set(liste))
def seniority(date: str) -> bool:
"""Return True only if the given string date is less than one day old"""
@ -326,17 +325,12 @@ def start():
if __name__ == "__main__":
"""
TOKEN is the Access Token available in the Authentication Tokens section under the Access Token and Secret sub-heading
TOKEN_SECRET is the Access Token Secret available in the Authentication Tokens section under the Access Token and Secret sub-heading
CONSUMER_KEY is the API Key available in the Consumer Keys section under the API Key and Secret sub-heading
CONSUMER_SECRET is the API Secret Key available in the Consumer Keys section under the API Key and Secret sub-heading
BEARER_TOKEN is the Bearer Token available in the Authentication Tokens section under the Bearer Token sub-heading
TOKEN is the Access Token available in the Authentication Tokens section under Access Token and Secret sub-heading.
TOKEN_SECRET is the Access Token Secret available in the Authentication Tokens section under Access Token and Secret sub-heading.
CONSUMER_KEY is the API Key available in the Consumer Keys section.
CONSUMER_SECRET is the API Secret Key available in the Consumer Keys section.
--
PSEUDOS is a list of account you want to listen, all of his·er following (guys followed by PSEUDO) will be sniped
WHITELSIT is a list of account who are protected from the bot
FORCELIST is a list of account who are targeted by the bot, if user is in the whitelist, he·r will be ignored
---
VERBOSE enable some debugs log
PSEUDO is the PSEUDO of the account you want to listen to snipe.
"""
# Error message
errorMessage = "Une erreur survient !"
@ -513,7 +507,7 @@ if __name__ == "__main__":
triggerWords = generateWords(universalBase)
# Loading environment variables
keys = load(["TOKEN", "TOKEN_SECRET", "CONSUMER_KEY", "CONSUMER_SECRET", "BEARER_TOKEN", "PSEUDOS", "VERBOSE", "WHITELIST", "FORCELIST"])
keys = load(["TOKEN", "TOKEN_SECRET", "CONSUMER_KEY", "CONSUMER_SECRET", "PSEUDOS", "VERBOSE", "WHITELIST", "FORCELIST", "BEARER_TOKEN"])
# Start the bot
start()