File size: 5,443 Bytes
1cbf27e efa3448 1cbf27e efa3448 1cbf27e 0d46421 1cbf27e 0d46421 1cbf27e 0d46421 1cbf27e 0d46421 1cbf27e 0d46421 1cbf27e 0d46421 1cbf27e 83e0a7f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
import requests
import time
import json
import random
import os
from discord_webhook import DiscordWebhook, DiscordEmbed
api_url = "https://fcclub.deno.dev/"
keepthescore_api = "https://keepthescore.com/api/yrnfhgqvjhcyp/score/"
motm_webhook_url = os.environ.get('motm_webhook_url')
tracker_webhook_url = os.environ.get('tracker_webhook_url')
headers = {
"User-Agent": "Mozilla/5.0",
"Accept": "application/json"
}
with open("stinkies.json", "r") as f:
custom_names = json.load(f)
with open("playersdiscord.json", "r") as f:
players_discord = json.load(f)
with open("motivationalquotes.json", "r") as f:
motivational_quotes = json.load(f)
with open("manofthematch.json", "r") as f:
motm_hall = json.load(f)
player_ids = {
"FrostedSnows": 49238511,
"daboss888": 49238506,
"Kimo_10x10": 49238510,
"jbb_jbz": 49290659,
"1M_ohW": 49238507,
"corysfatnyash": 49238508,
"Aventic5618": 49238509,
"FredzPlayz": 49290660
}
def fetch_match_data():
response = requests.get(api_url, headers=headers, timeout=10)
response.raise_for_status()
return response.json()[0]
def increment_score(player_id, increment=1):
data = {
"player_id": player_id,
"score": increment,
"operation": "increment"
}
response = requests.post(keepthescore_api, json=data)
response.raise_for_status()
print(f"Incremented score by {increment} for player ID {player_id}")
def send_discord_message(match_data):
clubs = match_data["clubs"]
rejection_fc = clubs["481259"]
opponent_id = next(club_id for club_id in clubs if club_id != "481259")
opponent_team = clubs[opponent_id]["details"]["name"]
rejection_score = rejection_fc["score"]
opponent_score = clubs[opponent_id]["score"]
match_score = f"{rejection_score} - {opponent_score}"
embed_color = 0
if rejection_fc["losses"] == "1":
embed_color = 16711680
elif rejection_fc["ties"] == "1":
embed_color = 2697513
elif rejection_fc["wins"] == "1":
embed_color = 65300
player_data_all_teams = match_data["players"]
man_of_match = next((p["playername"] for team in player_data_all_teams.values() for p in team.values() if p["mom"] == "1"), "none or probably an opponent in case this doesnt work")
match_timestamp = match_data["timestamp"]
formatted_timestamp = f"<t:{match_timestamp}:R>"
embed = DiscordEmbed(
title=match_score,
description=f"**Opponent:** {opponent_team}\n**Man of the Match:** {man_of_match}\n**Played:** {formatted_timestamp}\n\nPlayers:",
color=embed_color
)
embed.set_thumbnail(url=f"https://eafc24.content.easports.com/fifa/fltOnlineAssets/24B23FDE-7835-41C2-87A2-F453DFDB2E82/2024/fcweb/crests/256x256/l{clubs[opponent_id]['TEAM']}.png")
player_data_rejection_fc = player_data_all_teams["481259"]
sorted_players = sorted(player_data_rejection_fc.values(), key=lambda x: float(x["rating"]), reverse=True)
for player in sorted_players:
player_name = player["playername"]
custom_name = custom_names.get(player_name, player_name)
position = player["pos"]
rating = player["rating"]
goals = int(player["goals"])
assists = player["assists"]
increment = goals // 3
if increment > 0:
player_id = player_ids.get(player_name)
if player_id:
increment_score(player_id, increment)
red_card_icon = "π₯ " if player["redcards"] == "1" else ""
player_display_name = f"{red_card_icon}{custom_name} ({position})"
embed.add_embed_field(
name=player_display_name,
value=f"__Rating: {rating}__\n{goals} goals\n{assists} assists",
inline=True
)
if player["mom"] == "1":
send_motm_message(player_name)
webhook = DiscordWebhook(url=tracker_webhook_url)
webhook.add_embed(embed)
webhook.execute()
print(f"posted match {match_data['matchId']} with the score {match_score}")
if rejection_fc["losses"] == "1":
send_motivational_message()
def send_motivational_message():
message = random.choice(motivational_quotes)
webhook = DiscordWebhook(url=tracker_webhook_url, content=message)
webhook.execute()
def send_motm_message(player_name):
discord_tag = players_discord.get(player_name, "player")
msg_gif = random.choice(motm_hall)
main_message = f"{discord_tag} is the MAN OF THE MATCH! π"
motm_webhook = DiscordWebhook(url=motm_webhook_url, content=main_message)
motm_webhook.execute()
gif_message = DiscordWebhook(url=motm_webhook_url, content=msg_gif)
gif_message.execute()
def monitor_matches():
last_match_id = None
while True:
try:
match_data = fetch_match_data()
match_id = match_data["matchId"]
if match_id != last_match_id:
send_discord_message(match_data)
last_match_id = match_id
except requests.exceptions.RequestException as e:
print(f"oh noes an error {e} retrying in 10 seconds")
time.sleep(10)
except Exception as e:
print(f"my god not another error {e} oh well retrying in 10 seconds")
time.sleep(10)
time.sleep(60)
monitor_matches() |