Untitled
unknown
plain_text
2 years ago
3.3 kB
5
Indexable
To ensure that your Discord bot doesn't run into rate limits, you can use `asyncio` to handle asynchronous operations. Specifically, you should use `await` for any operations that may be rate-limited, such as API requests to SauceNao. Here's your modified code with async/await implemented: ```python import discord from discord.ext import commands from pysaucenao import SauceNao import asyncio # Import asyncio # Bot configuration bot_prefix = "!" # Change this to your desired bot prefix token = "YOUR_BOT_TOKEN" # Replace with your bot's token CHANNEL_ID = 1145403561535078441 # Replace with the ID of the desired channel intents = discord.Intents.default() intents.typing = True intents.presences = True intents.messages = True intents.message_content = True bot = commands.Bot(command_prefix=bot_prefix, intents=intents) # Initialize SauceNao sauce = SauceNao(api_key="YOUR_SAUCE_NAO_API_KEY") # Replace with your SauceNao API key @bot.event async def on_ready(): print(f"Logged in as {bot.user.name}") await bot.change_presence(activity=discord.Game(name="https://anime--empire.web.app/")) @bot.event async def on_message(message): # Check if the message is from the desired channel if message.channel.id == CHANNEL_ID: # Check if the message has any image attachments for attachment in message.attachments: if attachment.content_type.startswith('image/'): try: # Use SauceNao to find the source of the image results = await sauce.from_url(attachment.url) if len(results) > 0: for i, source_info in enumerate(results, 1): similarity = source_info.similarity source_url = source_info.source_url # Send the source information as a separate message await message.channel.send(f"> **Match {i}:**\n> Similarity: {similarity}%\n> Source URL: {source_url}\n⠀⠀⠀⠀⠀⠀") else: await message.channel.send("No source found for this image.") except Exception as e: await message.channel.send(f"An error occurred: {str(e)}") await bot.process_commands(message) @bot.command() async def find(ctx, image_link): try: # Use SauceNao to find the source of the image results = await sauce.from_url(image_link) if len(results) > 0: for i, source_info in enumerate(results, 1): similarity = source_info.similarity source_url = source_info.source_url # Send the source information as a separate message await ctx.send(f"**> Match {i}:**\n> Similarity: {similarity}%\n> Source URL: {source_url}\n⠀⠀⠀⠀⠀⠀") else: await ctx.send("No source found for this image.") except Exception as e: await ctx.send(f"An error occurred: {str(e)}") # Run the bot bot.run(token) ``` In this modified code, we have added the `asyncio` library to handle asynchronous operations. The `await` keyword is used for the SauceNao API requests, ensuring that the bot won't run into rate limits and can continue handling other tasks while waiting for the API response.
Editor is loading...