Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions components/bounty-timer/timer_logic.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#!/usr/bin/env python3
"""
SolFoundry Bounty: Countdown Timer Component (Python Implementation)
Objective: Calculate and format time remaining for bounties with urgency logic.
"""

from datetime import datetime, timezone
import json

class BountyCountdown:
def __init__(self, deadline_iso):
self.deadline = datetime.fromisoformat(deadline_iso.replace("Z", "+00:00"))

def get_status(self):
now = datetime.now(timezone.utc)
diff = self.deadline - now

seconds = int(diff.total_seconds())

if seconds <= 0:
return {
"label": "Expired",
"urgency": "critical",
"time_string": "00d 00h 00m",
"expired": True
}

days = seconds // 86400
hours = (seconds % 86400) // 3600
minutes = (seconds % 3600) // 60

urgency = "normal"
if seconds < 3600: # < 1 hour
urgency = "urgent"
elif seconds < 86400: # < 24 hours
urgency = "warning"

return {
"label": "Active",
"urgency": urgency,
"time_string": f"{days:02d}d {hours:02d}h {minutes:02d}m",
"expired": False,
"total_seconds": seconds
}

if __name__ == "__main__":
# Test with a 25-hour deadline
import time
test_deadline = datetime.fromtimestamp(time.time() + 90000, tz=timezone.utc).isoformat()
timer = BountyCountdown(test_deadline)
print(json.dumps(timer.get_status(), indent=2))
39 changes: 39 additions & 0 deletions integrations/discord/bot.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/usr/bin/env python3
"""
Michael Sovereign V9.10.0 — SolFoundry Discord Bot
Objective: Notify Discord channels about new bounties and show leaderboard.
"""

import discord
import os
import json
import asyncio

class BountyBot(discord.Client):
async def on_ready(self):
print(f'[DISCORD] Logged in as {self.user}')
# Logic to start polling SolFoundry API
self.loop.create_task(self.poll_bounties())

async def poll_bounties(self):
while True:
# Logic to fetch from SolFoundry API
# For now, we simulate finding a new bounty
new_bounty = {
"title": "🏭 Bounty T2: Deep Security Audit",
"reward": "500,000 $FNDRY",
"url": "https://foundry.solana/bounties/882"
}

# Send to target channel
channel = self.get_channel(int(os.getenv("DISCORD_CHANNEL_ID", 0)))
if channel:
embed = discord.Embed(title=new_bounty['title'], url=new_bounty['url'], color=0x00ff00)
embed.add_field(name="Reward", value=new_bounty['reward'])
await channel.send(embed=embed)

await asyncio.sleep(3600) # Poll every hour

if __name__ == "__main__":
# In a real environment, we would run with a TOKEN
print("[DISCORD] Bot Logic Ready. Awaiting deployment.")