I am making a discord bot that one of the features is that you can use a command to make the bot embed thing into chat. This is the code:
import discord
from datetime import datetime
from discord.ext.commands import Bot
from discord.ext import commands
from discord.ext.commands import has_permissions
client = commands.Bot(command_prefix='=')
@client.command(pass_context=True)
async def embed(ctx, args):
await ctx.channel.purge(limit=1)
embed = discord.Embed(color=discord.Colour.red())
embed.set_author(name=args)
await ctx.send(embed=embed)
client.run('YOUR-TOKEN-GOES-HERE')
But when I try to embed more than one words it only embeds the last one. Why does it do that?
Advertisement
Answer
You need to add a * before the final argument to take in the full string like this:
async def embed(ctx, *, args):
So your function will look like this:
@client.command(pass_context = True)
async def embed(ctx, *, args):
await ctx.channel.purge(limit = 1)
embed = discord.Embed(color = discord.Colour.red())
embed.set_author(name = args)
await ctx.send(embed = embed)