import os import discord from discord.ext import commands from weather import OpenWeatherMapAPIClient DISCORD_TOKEN = os.getenv('MTQ4MDkxODI5Mzk5MTc4ODYzNQ.GQ4P7l.uqYM-awr8zAp6eun9iJr0ziDhscv3XiByqSMpw') 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\n Sky: {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)