Q: How to not spam when using a for loop I'm making a music bot and currently I'm tying to add a queue command that displays all the songs in the queue.
upcoming = list(itertools.islice(player.queue._queue, 0, 9))
counter = 1

for song in upcoming:
    counter = counter + 1
    print(f"{counter}. {song['title']}")
    embed = discord.Embed(description=f"**{counter}**. [{song['title']}]({song['url']})")
    embed.set_thumbnail(url=self.bot.user.avatar_url)
    embed.set_author(name="Playing Next:")
    await ctx.send(embed=embed)

This is what I expect it to look like:
1. Song 1
2. Song 2
3. Song 3 
4. Song 4
5. Song 5 
6. Song 6
7. Song 7
8. Song 8
9. Song 9

Instead it sends each line in a separate embed.

A: You are creating a new embed and sending it for each iteration of the loop.  Without getting into list comprehension the simplest solution is to move everything out of the for loop, except something like:
embed = discord.Embed(description='')

for song in upcoming:
    embed.description += f"**{counter}**. [{song['title']}]({song['url']})\n"

... other embed stuff
... await send embed

