Dask_bot/task_bot.py
2026-03-11 17:07:25 +01:00

67 lines
2.2 KiB
Python

import os
import discord
from discord.ext import commands
from weather import OpenWeatherMapAPIClient
DISCORD_TOKEN = os.getenv("DISCORD_TOKEN")
WEATHER_TOKEN = os.getenv("WEATHER_TOKEN")
weather_client = OpenWeatherMapAPIClient(WEATHER_TOKEN, "MyDiscordWeatherBot")
intents = discord.Intents(messages=True, guilds=True)
intents.message_content = True
bot = commands.Bot(command_prefix='!', intents=intents)
@bot.tree.command(name="weather")
async def current_weather(interaction: discord.Interaction, location: str):
print(f"Received weather command from {interaction.user.display_name}") # Log intéraction
current_weather = weather_client.get_current_weather(location)
print(f"JSON API {current_weather}")
# Check that current_weather is a dictionary and contains necessary keys
if not isinstance(current_weather, dict) or 'main' not in current_weather or 'weather' not in current_weather:
await interaction.response.send_message("Could not retrieve weather data. Please check the location.")
return
weather_list = current_weather['weather']
if len(weather_list) == 0:
await interaction.response.send_message("Weather information is not available.")
return
weather_condition = weather_list[0]['main']
temp = current_weather['main']['temp']
icon = current_weather['weather'][0]['icon']
embed = discord.Embed(
title=f"Current weather in {location}",
description=f"Temperature: {temp}°C\nSky: {weather_condition}",
)
embed.set_thumbnail(url=f"https://openweathermap.org/img/wn/{icon}.png")
await interaction.response.send_message(embed=embed)
@bot.tree.command(name='hello')
async def hello_command(interaction: discord.Interaction):
print(f"Received hello command from {interaction.user.display_name}") # Log intéraction
user_nick = interaction.user.display_name
await interaction.response.send_message(f'Hello {user_nick}!')
@bot.event
async def on_ready():
print(f'Logged in as {bot.user}')
await bot.tree.sync()
#Liste commandes enregistré
commands = await bot.tree.fetch_commands()
print("Registered Commands:")
for command in commands:
print(f"- {command.name}")
bot.run(DISCORD_TOKEN)