|
|
<!DOCTYPE html> |
|
|
<html lang="en"> |
|
|
<head> |
|
|
<meta charset="UTF-8"> |
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
|
<title>Footy Banter Bot</title> |
|
|
<script src="https://cdn.tailwindcss.com"></script> |
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> |
|
|
<style> |
|
|
|
|
|
@keyframes bounce { |
|
|
0%, 20%, 50%, 80%, 100% {transform: translateY(0);} |
|
|
40% {transform: translateY(-10px);} |
|
|
60% {transform: translateY(-5px);} |
|
|
} |
|
|
|
|
|
.bounce { |
|
|
animation: bounce 1s infinite; |
|
|
} |
|
|
|
|
|
.chat-container { |
|
|
height: 70vh; |
|
|
scrollbar-width: thin; |
|
|
scrollbar-color: #4f46e5 #e5e7eb; |
|
|
} |
|
|
|
|
|
.chat-container::-webkit-scrollbar { |
|
|
width: 6px; |
|
|
} |
|
|
|
|
|
.chat-container::-webkit-scrollbar-track { |
|
|
background: #e5e7eb; |
|
|
} |
|
|
|
|
|
.chat-container::-webkit-scrollbar-thumb { |
|
|
background-color: #4f46e5; |
|
|
border-radius: 3px; |
|
|
} |
|
|
|
|
|
.typing-indicator::after { |
|
|
content: "..."; |
|
|
display: inline-block; |
|
|
animation: typing-dots 1.5s infinite; |
|
|
} |
|
|
|
|
|
@keyframes typing-dots { |
|
|
0%, 20% {content: ".";} |
|
|
40% {content: "..";} |
|
|
60%, 100% {content: "...";} |
|
|
} |
|
|
</style> |
|
|
</head> |
|
|
<body class="bg-gray-100 min-h-screen"> |
|
|
<div class="container mx-auto px-4 py-8 max-w-4xl"> |
|
|
|
|
|
<header class="text-center mb-8"> |
|
|
<div class="flex items-center justify-center mb-4"> |
|
|
<i class="fas fa-futbol text-4xl text-indigo-600 mr-3"></i> |
|
|
<h1 class="text-3xl font-bold text-indigo-700">Footy Banter Bot</h1> |
|
|
</div> |
|
|
<p class="text-gray-600">Your AI companion for football banter, debates, and jokes</p> |
|
|
<div class="mt-4 flex justify-center space-x-2"> |
|
|
<span class="px-3 py-1 bg-indigo-100 text-indigo-800 rounded-full text-sm">Premier League</span> |
|
|
<span class="px-3 py-1 bg-indigo-100 text-indigo-800 rounded-full text-sm">La Liga</span> |
|
|
<span class="px-3 py-1 bg-indigo-100 text-indigo-800 rounded-full text-sm">Champions League</span> |
|
|
<span class="px-3 py-1 bg-indigo-100 text-indigo-800 rounded-full text-sm">World Cup</span> |
|
|
</div> |
|
|
</header> |
|
|
|
|
|
|
|
|
<div class="bg-white rounded-xl shadow-lg overflow-hidden"> |
|
|
|
|
|
<div class="bg-indigo-600 text-white p-4 flex items-center"> |
|
|
<div class="w-10 h-10 rounded-full bg-indigo-500 flex items-center justify-center mr-3"> |
|
|
<i class="fas fa-robot text-xl"></i> |
|
|
</div> |
|
|
<div> |
|
|
<h2 class="font-bold">Footy Bot</h2> |
|
|
<p class="text-xs text-indigo-200">Online</p> |
|
|
</div> |
|
|
<div class="ml-auto flex space-x-2"> |
|
|
<button class="w-8 h-8 rounded-full bg-indigo-500 hover:bg-indigo-400 flex items-center justify-center"> |
|
|
<i class="fas fa-ellipsis-v text-sm"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="chat-container p-4 overflow-y-auto" id="chat-messages"> |
|
|
|
|
|
<div class="flex mb-4"> |
|
|
<div class="w-8 h-8 rounded-full bg-indigo-100 flex items-center justify-center mr-3 flex-shrink-0"> |
|
|
<i class="fas fa-robot text-indigo-600"></i> |
|
|
</div> |
|
|
<div class="bg-indigo-50 rounded-lg p-3 max-w-xs md:max-w-md"> |
|
|
<p class="text-gray-800">Alright mate! Ready for some proper football banter? Who's your team and why are they better than everyone else? 😏</p> |
|
|
<p class="text-xs text-gray-500 mt-1">Just now</p> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="border-t p-4 bg-gray-50"> |
|
|
<div class="flex items-center"> |
|
|
<button class="w-10 h-10 rounded-full bg-gray-200 hover:bg-gray-300 flex items-center justify-center mr-2"> |
|
|
<i class="fas fa-plus text-gray-600"></i> |
|
|
</button> |
|
|
<input type="text" id="user-input" placeholder="Type your banter here..." |
|
|
class="flex-1 border border-gray-300 rounded-full py-2 px-4 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-transparent"> |
|
|
<button id="send-btn" class="w-10 h-10 rounded-full bg-indigo-600 hover:bg-indigo-700 flex items-center justify-center ml-2 text-white"> |
|
|
<i class="fas fa-paper-plane"></i> |
|
|
</button> |
|
|
</div> |
|
|
<div class="mt-2 flex space-x-2 overflow-x-auto"> |
|
|
<button class="quick-btn px-3 py-1 bg-gray-200 hover:bg-gray-300 rounded-full text-sm whitespace-nowrap">Messi vs Ronaldo</button> |
|
|
<button class="quick-btn px-3 py-1 bg-gray-200 hover:bg-gray-300 rounded-full text-sm whitespace-nowrap">VAR jokes</button> |
|
|
<button class="quick-btn px-3 py-1 bg-gray-200 hover:bg-gray-300 rounded-full text-sm whitespace-nowrap">Premier League banter</button> |
|
|
<button class="quick-btn px-3 py-1 bg-gray-200 hover:bg-gray-300 rounded-full text-sm whitespace-nowrap">Who's winning the league?</button> |
|
|
<button class="quick-btn px-3 py-1 bg-gray-200 hover:bg-gray-300 rounded-full text-sm whitespace-nowrap">Worst transfer ever</button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<footer class="mt-6 text-center text-sm text-gray-500"> |
|
|
<p>Footy Banter Bot v1.0 • Not affiliated with any league or club • Just for fun</p> |
|
|
</footer> |
|
|
</div> |
|
|
|
|
|
<script> |
|
|
document.addEventListener('DOMContentLoaded', function() { |
|
|
const chatMessages = document.getElementById('chat-messages'); |
|
|
const userInput = document.getElementById('user-input'); |
|
|
const sendBtn = document.getElementById('send-btn'); |
|
|
const quickBtns = document.querySelectorAll('.quick-btn'); |
|
|
|
|
|
|
|
|
const banterResponses = [ |
|
|
"Oh please, your team's trophy cabinet has more dust than silverware!", |
|
|
"That's rich coming from a fan whose club's biggest achievement is a participation award!", |
|
|
"I've seen more attacking threat from a parked bus than your team's frontline!", |
|
|
"Your goalkeeper has hands like a frying pan - everything slips through!", |
|
|
"Your star player? More like a flat-track bully who disappears in big games!", |
|
|
"Your manager's tactics are so outdated, he probably still uses a flip phone!", |
|
|
"Your club's transfer policy: buy high, sell low, and pay the wages in between!", |
|
|
"Your stadium atmosphere is so quiet, I've heard louder libraries!", |
|
|
"Your team's defense has more holes than a slice of Swiss cheese!", |
|
|
"Your club's so broke, the tea lady had to bring her own biscuits!", |
|
|
"Your team's so slow, they make tectonic plates look quick!", |
|
|
"Your club's youth academy? More like a retirement home for has-beens!", |
|
|
"Your team's set pieces are so bad, IKEA instructions are more organized!", |
|
|
"Your striker's first touch is so heavy, he could mine for coal with it!", |
|
|
"Your club's so irrelevant, even your own fans support another team in Europe!" |
|
|
]; |
|
|
|
|
|
|
|
|
const clubBanter = { |
|
|
'manchester united': "Still living off past glories I see? The only thing red about United these days is their balance sheet!", |
|
|
'manchester city': "Oil money can buy trophies, but it can't buy class or history!", |
|
|
'liverpool': "Always the nearly men! Even your 'This Is Anfield' sign is looking a bit rusty these days!", |
|
|
'chelsea': "Another season, another manager. At this rate, your club's more unstable than the Tory government!", |
|
|
'arsenal': "Fourth place is basically a trophy for you lot, isn't it?", |
|
|
'tottenham': "The only thing Spurs have won recently is the Netflix documentary award!", |
|
|
'real madrid': "Galácticos? More like Galácti-couldn't-be-bothered this season!", |
|
|
'barcelona': "Financial levers FC! Can't even register players without selling the Camp Nou toilets!", |
|
|
'psg': "Farmers league merchants! The only thing you're winning is the fashion show!", |
|
|
'bayern munich': "Bundesliga is so competitive, even my nan could manage Bayern to the title!", |
|
|
'juventus': "From Calciopoli to Calcio-poorly! When's the next scandal coming?", |
|
|
'ac milan': "Back from the dead like a zombie, but still not quite the force you used to be!", |
|
|
'inter milan': "The other Milan club - always in the shadow, even when you win something!" |
|
|
}; |
|
|
|
|
|
|
|
|
const playerBanter = { |
|
|
'ronaldo': "Ronaldo? More like Ro-NALDO when he doesn't get his way!", |
|
|
'messi': "The GOAT? More like the GOAT of walking around when his team doesn't have the ball!", |
|
|
'haaland': "Robo-striker! Does he even have a personality or just a goal-scoring algorithm?", |
|
|
'mbappe': "Speed merchant with the ego to match! Real Madrid's problem now!", |
|
|
'neymar': "More time on the floor than a mop! When's the next birthday party?", |
|
|
'kane': "Serial winner... of golden boots in meaningless games!", |
|
|
'pogba': "More hairstyles than match-winning performances!", |
|
|
'sterling': "Faster than my internet connection but just as unreliable in front of goal!", |
|
|
'lukaku': "First touch of a trampoline! Inter's problem again now!" |
|
|
}; |
|
|
|
|
|
|
|
|
function sendMessage() { |
|
|
const message = userInput.value.trim(); |
|
|
if (message === '') return; |
|
|
|
|
|
|
|
|
addMessage(message, 'user'); |
|
|
userInput.value = ''; |
|
|
|
|
|
|
|
|
const typingIndicator = document.createElement('div'); |
|
|
typingIndicator.className = 'flex mb-4'; |
|
|
typingIndicator.innerHTML = ` |
|
|
<div class="w-8 h-8 rounded-full bg-indigo-100 flex items-center justify-center mr-3 flex-shrink-0"> |
|
|
<i class="fas fa-robot text-indigo-600"></i> |
|
|
</div> |
|
|
<div class="bg-indigo-50 rounded-lg p-3 max-w-xs md:max-w-md"> |
|
|
<p class="text-gray-800 typing-indicator">Footy Bot is typing</p> |
|
|
</div> |
|
|
`; |
|
|
chatMessages.appendChild(typingIndicator); |
|
|
chatMessages.scrollTop = chatMessages.scrollHeight; |
|
|
|
|
|
|
|
|
setTimeout(() => { |
|
|
|
|
|
chatMessages.removeChild(typingIndicator); |
|
|
|
|
|
|
|
|
const response = generateResponse(message.toLowerCase()); |
|
|
addMessage(response, 'bot'); |
|
|
}, 1500 + Math.random() * 2000); |
|
|
} |
|
|
|
|
|
|
|
|
function addMessage(message, sender) { |
|
|
const messageDiv = document.createElement('div'); |
|
|
messageDiv.className = `flex mb-4 ${sender === 'user' ? 'justify-end' : ''}`; |
|
|
|
|
|
if (sender === 'user') { |
|
|
messageDiv.innerHTML = ` |
|
|
<div class="bg-indigo-100 rounded-lg p-3 max-w-xs md:max-w-md"> |
|
|
<p class="text-gray-800">${message}</p> |
|
|
<p class="text-xs text-gray-500 mt-1 text-right">Just now</p> |
|
|
</div> |
|
|
<div class="w-8 h-8 rounded-full bg-indigo-600 flex items-center justify-center ml-3 flex-shrink-0 text-white"> |
|
|
<i class="fas fa-user"></i> |
|
|
</div> |
|
|
`; |
|
|
} else { |
|
|
messageDiv.innerHTML = ` |
|
|
<div class="w-8 h-8 rounded-full bg-indigo-100 flex items-center justify-center mr-3 flex-shrink-0"> |
|
|
<i class="fas fa-robot text-indigo-600"></i> |
|
|
</div> |
|
|
<div class="bg-indigo-50 rounded-lg p-3 max-w-xs md:max-w-md"> |
|
|
<p class="text-gray-800">${message}</p> |
|
|
<p class="text-xs text-gray-500 mt-1">Just now</p> |
|
|
</div> |
|
|
`; |
|
|
} |
|
|
|
|
|
chatMessages.appendChild(messageDiv); |
|
|
chatMessages.scrollTop = chatMessages.scrollHeight; |
|
|
} |
|
|
|
|
|
|
|
|
function generateResponse(message) { |
|
|
|
|
|
for (const club in clubBanter) { |
|
|
if (message.includes(club)) { |
|
|
return clubBanter[club]; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
for (const player in playerBanter) { |
|
|
if (message.includes(player)) { |
|
|
return playerBanter[player]; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (message.includes('var') || message.includes('video assistant')) { |
|
|
return "VAR is like my ex - inconsistent, confusing, and ruins the fun!"; |
|
|
} |
|
|
|
|
|
if (message.includes('premier league') || message.includes('pl')) { |
|
|
return "The Premier League - where every team thinks they're title contenders in August and are fighting relegation by October!"; |
|
|
} |
|
|
|
|
|
if (message.includes('champions league') || message.includes('ucl')) { |
|
|
return "Ah the Champions League, where English clubs spend billions to lose to Spanish teams who spend less than your local Sunday league!"; |
|
|
} |
|
|
|
|
|
if (message.includes('world cup')) { |
|
|
return "World Cup? The only thing coming home is another round of excuses!"; |
|
|
} |
|
|
|
|
|
if (message.includes('messi') && message.includes('ronaldo')) { |
|
|
return "The eternal debate! Messi makes it look easy, Ronaldo makes it look hard. Both make the rest look average!"; |
|
|
} |
|
|
|
|
|
if (message.includes('transfer') || message.includes('signing')) { |
|
|
const badTransfers = [ |
|
|
"Maguire for £80m - they paid extra for the slabhead!", |
|
|
"Coutinho to Barca - the gift that keeps on giving... to Liverpool!", |
|
|
"Lukaku to Chelsea - twice the price, half the player!", |
|
|
"Pepe to Arsenal - £72m for a winger who can't beat a man!", |
|
|
"Kepa - most expensive goalkeeper to sit on the bench!" |
|
|
]; |
|
|
return badTransfers[Math.floor(Math.random() * badTransfers.length)]; |
|
|
} |
|
|
|
|
|
if (message.includes('manager') || message.includes('coach')) { |
|
|
const managerJokes = [ |
|
|
"Pep spends more on fullbacks than some countries spend on healthcare!", |
|
|
"Klopp's teeth are whiter than his team's defending!", |
|
|
"Arteta's hair gel budget is bigger than some clubs' transfer budgets!", |
|
|
"Ten Hag looks like he's permanently smelling something bad - probably United's defending!", |
|
|
"Conte's passion is only matched by his hair transplants!" |
|
|
]; |
|
|
return managerJokes[Math.floor(Math.random() * managerJokes.length)]; |
|
|
} |
|
|
|
|
|
|
|
|
return banterResponses[Math.floor(Math.random() * banterResponses.length)]; |
|
|
} |
|
|
|
|
|
|
|
|
sendBtn.addEventListener('click', sendMessage); |
|
|
|
|
|
userInput.addEventListener('keypress', function(e) { |
|
|
if (e.key === 'Enter') { |
|
|
sendMessage(); |
|
|
} |
|
|
}); |
|
|
|
|
|
quickBtns.forEach(btn => { |
|
|
btn.addEventListener('click', function() { |
|
|
userInput.value = this.textContent; |
|
|
sendMessage(); |
|
|
}); |
|
|
}); |
|
|
}); |
|
|
</script> |
|
|
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=EbukaGaus/test" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
|
|
</html> |