Upload files to "/"
This commit is contained in:
		
							parent
							
								
									0ae19e4d28
								
							
						
					
					
						commit
						d23494777b
					
				
							
								
								
									
										19
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| # Use the official Python image | ||||
| FROM python:3.10-slim | ||||
| 
 | ||||
| # Set the working directory | ||||
| WORKDIR /app | ||||
| 
 | ||||
| # Copy the bot script and requirements file to the working directory | ||||
| COPY bot.py ./ | ||||
| COPY requirements.txt ./ | ||||
| 
 | ||||
| 
 | ||||
| # Install dependencies | ||||
| RUN pip install --no-cache-dir -r requirements.txt | ||||
| 
 | ||||
| # Expose no ports, but needed for convention | ||||
| EXPOSE 8000 | ||||
| 
 | ||||
| # Command to run the bot | ||||
| CMD ["python", "bot.py"] | ||||
							
								
								
									
										122
									
								
								bot.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								bot.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,122 @@ | ||||
| import discord | ||||
| from discord import app_commands | ||||
| import requests | ||||
| import random | ||||
| from datetime import datetime | ||||
| from dotenv import load_dotenv | ||||
| import os | ||||
| 
 | ||||
| # Load environment variables from .env | ||||
| load_dotenv() | ||||
| 
 | ||||
| # Fetch token and URL from .env | ||||
| DISCORD_TOKEN = os.getenv('DISCORD_TOKEN') | ||||
| QUOTES_URL = os.getenv('QUOTES_URL') | ||||
| 
 | ||||
| # Function to fetch quotes from the URL | ||||
| def fetch_quotes(): | ||||
|     response = requests.get(QUOTES_URL) | ||||
|     if response.status_code == 200: | ||||
|         return response.json() | ||||
|     return None | ||||
| 
 | ||||
| # Function to get all quotes from the fetched data | ||||
| def get_all_quotes(data): | ||||
|     all_quotes = []  # List to hold all quotes | ||||
|     for entry in data['cytaty']: | ||||
|         for quote in entry['quotes']: | ||||
|             all_quotes.append({ | ||||
|                 'quote': quote['quote'], | ||||
|                 'user': quote['user'], | ||||
|                 'author': quote.get('author', "Unknown"), | ||||
|                 'date': entry['date'] | ||||
|             }) | ||||
|     return all_quotes | ||||
| 
 | ||||
| # Bot setup | ||||
| intents = discord.Intents.default() | ||||
| client = discord.Client(intents=intents) | ||||
| tree = app_commands.CommandTree(client) | ||||
| 
 | ||||
| # Load quotes when the bot starts | ||||
| all_quotes = [] | ||||
| 
 | ||||
| # Event when bot is ready | ||||
| @client.event | ||||
| async def on_ready(): | ||||
|     global all_quotes | ||||
| 
 | ||||
| 
 | ||||
|     # Sync commands again | ||||
|     await tree.sync()  # Sync global commands | ||||
|     for guild in client.guilds: | ||||
|         await tree.sync(guild=discord.Object(id=guild.id))  # Sync guild-specific commands if any | ||||
| 
 | ||||
|     data = fetch_quotes() | ||||
|     if data: | ||||
|         all_quotes = get_all_quotes(data) | ||||
|         print(f'Logged in as {client.user}') | ||||
|         print("Commands synced") | ||||
|     else: | ||||
|         print("Failed to fetch quotes on startup") | ||||
| 
 | ||||
| # Slash command for fetching the quote of the day | ||||
| @tree.command(name="quote", description="Get the quote of the day based on the current date") | ||||
| async def fetch_quote(interaction: discord.Interaction): | ||||
|     global all_quotes | ||||
| 
 | ||||
|     # Acknowledge the interaction immediately | ||||
|     await interaction.response.defer(thinking=True) | ||||
| 
 | ||||
|     if all_quotes: | ||||
|         total_quotes = len(all_quotes) | ||||
|          | ||||
|         # Calculate the index based on the current date | ||||
|         current_date = datetime.now() | ||||
|         epoch_start = datetime(1970, 1, 1)  # Unix epoch start date | ||||
|         days_since_epoch = (current_date - epoch_start).days | ||||
|          | ||||
|         # Calculate the quote index | ||||
|         quote_index = days_since_epoch % total_quotes | ||||
| 
 | ||||
|         quote_data = all_quotes[quote_index] | ||||
|         user = quote_data['user'] | ||||
|         quote = quote_data['quote'].replace("<br>", "\n")  # Replace <br> with new lines | ||||
|         author = quote_data['author'] | ||||
|         date = quote_data['date'] | ||||
| 
 | ||||
|         # Format response message | ||||
|         response_message = ( | ||||
|             f"**Quote of the Day**:\n> {quote}\n- Autor tego cuda: {author} (Wysłane przez: {user})\n*Data: {date}*" | ||||
|         ) | ||||
| 
 | ||||
|         await interaction.followup.send(response_message) | ||||
|     else: | ||||
|         await interaction.followup.send("No quotes available.") | ||||
| 
 | ||||
| # Slash command for fetching a random quote | ||||
| @tree.command(name="random_quote", description="Get a random quote") | ||||
| async def random_quote(interaction: discord.Interaction): | ||||
|     global all_quotes | ||||
| 
 | ||||
|     # Acknowledge the interaction immediately | ||||
|     await interaction.response.defer(thinking=True) | ||||
| 
 | ||||
|     if all_quotes: | ||||
|         quote_data = random.choice(all_quotes)  # Select a random quote | ||||
|         user = quote_data['user'] | ||||
|         quote = quote_data['quote'].replace("<br>", "\n")  # Replace <br> with new lines | ||||
|         author = quote_data['author'] | ||||
|         date = quote_data['date'] | ||||
| 
 | ||||
|         # Format response message | ||||
|         response_message = ( | ||||
|             f"**Random Quote**:\n> {quote}\n- Autor tego cuda: {author} (Wysłane przez: {user})\n*Data: {date}*" | ||||
|         ) | ||||
| 
 | ||||
|         await interaction.followup.send(response_message) | ||||
|     else: | ||||
|         await interaction.followup.send("No quotes available.") | ||||
| 
 | ||||
| # Run the bot with the token from the .env file | ||||
| client.run(DISCORD_TOKEN) | ||||
							
								
								
									
										3
									
								
								requirements.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								requirements.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | ||||
| discord.py | ||||
| python-dotenv | ||||
| requests | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user