> ## Documentation Index
> Fetch the complete documentation index at: https://docs.discord.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Discord Bot Development Guides

> Guides for developing bots on Discord.

export const CompassIcon = props => <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none"><path fill="currentColor" d="M12 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z" /><path fill="currentColor" fill-rule="evenodd" d="M23 12a11 11 0 1 1-22 0 11 11 0 0 1 22 0ZM7.74 9.3A2 2 0 0 1 9.3 7.75l7.22-1.45a1 1 0 0 1 1.18 1.18l-1.45 7.22a2 2 0 0 1-1.57 1.57l-7.22 1.45a1 1 0 0 1-1.18-1.18L7.74 9.3Z" clip-rule="evenodd" /></svg>;

export const BookCheckIcon = props => <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none"><path fill="currentColor" fill-rule="evenodd" d="M15 2a3 3 0 0 1 3 3v12H5.5a1.5 1.5 0 0 0 0 3h14a.5.5 0 0 0 .5-.5V5h1a1 1 0 0 1 1 1v15a1 1 0 0 1-1 1H5a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3h10Zm-.3 5.7a1 1 0 0 0-1.4-1.4L9 10.58l-2.3-2.3a1 1 0 0 0-1.4 1.42l3 3a1 1 0 0 0 1.4 0l5-5Z" clip-rule="evenodd" /></svg>;

export const RobotIcon = props => <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none"><path fill="currentColor" d="M7.89 13.46a1 1 0 0 1-1.78-.9L7 13l-.9-.45.01-.01.01-.02a2.42 2.42 0 0 1 .14-.23c.1-.14.23-.31.4-.5.37-.36.98-.79 1.84-.79.86 0 1.47.43 1.83.8a3.28 3.28 0 0 1 .55.72v.02h.01v.01L10 13l.9-.45a1 1 0 0 1-1.79.9 1.28 1.28 0 0 0-.19-.25c-.14-.13-.28-.2-.42-.2-.14 0-.28.07-.42.2a1.28 1.28 0 0 0-.19.25ZM13.55 13.9a1 1 0 0 0 1.34-.44c0-.02.02-.04.04-.06.03-.05.08-.13.15-.2.14-.13.28-.2.42-.2.14 0 .28.07.42.2a1.28 1.28 0 0 1 .19.25 1 1 0 0 0 1.78-.9L17 13l.9-.45-.01-.01-.01-.02a2.26 2.26 0 0 0-.14-.23 3.28 3.28 0 0 0-.4-.5c-.37-.36-.98-.79-1.84-.79-.86 0-1.47.43-1.83.8a3.28 3.28 0 0 0-.55.72v.02h-.01v.01L14 13l-.9-.45a1 1 0 0 0 .45 1.34Z" /><path fill="currentColor" fill-rule="evenodd" d="M12 21c5.52 0 10-1.86 10-6 0-5.59-2.8-10.07-4.26-11.67a1 1 0 1 0-1.48 1.34 14.8 14.8 0 0 1 2.35 3.86A10.23 10.23 0 0 0 12 6C9.47 6 7.15 7.02 5.4 8.53a14.8 14.8 0 0 1 2.34-3.86 1 1 0 1 0-1.48-1.34A18.65 18.65 0 0 0 2 15c0 4.14 4.48 6 10 6Zm0-12c3.87 0 7 2 7 4.2S15.87 17 12 17s-7-1.6-7-3.8C5 11 8.13 9 12 9Z" clip-rule="evenodd" /></svg>;

export const InboxIcon = props => <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none"><path fill="currentColor" fill-rule="evenodd" d="M5 2a3 3 0 0 0-3 3v14a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V5a3 3 0 0 0-3-3H5ZM4 5.5C4 4.67 4.67 4 5.5 4h13c.83 0 1.5.67 1.5 1.5v6c0 .83-.67 1.5-1.5 1.5h-2.65c-.5 0-.85.5-.85 1a3 3 0 1 1-6 0c0-.5-.35-1-.85-1H5.5A1.5 1.5 0 0 1 4 11.5v-6Z" clip-rule="evenodd" /></svg>;

export const ImageCard = ({img, href, title, children, imageHeight = 120, imageFade = false, imageOffset = 0}) => {
  return <div className="MDXImageCard image-card-wrapper" style={{
    position: 'relative',
    cursor: 'pointer',
    marginTop: '0.5rem',
    marginBottom: '0.5rem'
  }}>
      <a href={href} aria-label={title} className="MDXImageCard image-card-link" style={{
    position: 'absolute',
    inset: 0,
    zIndex: 1
  }} />
      <div className="MDXImageCard image-card" style={{
    display: 'flex',
    flexDirection: 'column',
    borderRadius: '1rem',
    overflow: 'hidden',
    height: '100%'
  }}>
        <div style={{
    height: `${imageHeight}px`,
    width: '100%',
    overflow: 'hidden',
    flexShrink: 0,
    backgroundColor: '#242429',
    ...imageFade && ({
      maskImage: 'linear-gradient(to bottom, black 30%, transparent 100%)',
      WebkitMaskImage: 'linear-gradient(to bottom, black 30%, transparent 100%)'
    })
  }}>
          <img src={img} alt={title} style={{
    width: '100%',
    height: '100%',
    objectFit: 'cover',
    objectPosition: `center calc(50% - ${imageOffset}px)`,
    display: 'block',
    margin: 0
  }} />
        </div>
        <div style={{
    display: 'flex',
    flexDirection: 'column',
    padding: '1.25rem 1.5rem',
    flex: 1
  }}>
          <p className="MDXImageCard image-card-title" style={{
    margin: 0,
    fontWeight: 600,
    fontSize: '1rem'
  }}>
            {title}
          </p>
          {children && <p className="MDXImageCard image-card-description" style={{
    margin: '0.25rem 0 0',
    fontSize: '1rem',
    lineHeight: '1.5rem'
  }}>
              {children}
            </p>}
        </div>
      </div>
    </div>;
};

<Note>
  Visit [Bots & Companion Apps](/developers/bots/overview) for more on building bots and companion apps on Discord, including how to get started, best practices, and more.
</Note>

## Getting Started

<CardGroup cols={1}>
  <ImageCard title="Build your first Discord bot" href="/developers/quick-start/getting-started" img="https://mintcdn.com/discord/KbTJiI51tEBr5wj-/images/headers/docs-botsapp-hero.png?fit=max&auto=format&n=KbTJiI51tEBr5wj-&q=85&s=4f01a5c758f18470eaeed3d9cb5335d4" width="1336" height="540" data-path="images/headers/docs-botsapp-hero.png">
    A step-by-step guide to building your first bot on Discord.
  </ImageCard>
</CardGroup>

## Diving Deeper

<CardGroup cols={2}>
  <ImageCard title="Using Message Components" href="/developers/components/using-message-components" img="https://mintcdn.com/discord/z4DGSUUgOUjp9uQh/images/components/hero.webp?fit=max&auto=format&n=z4DGSUUgOUjp9uQh&q=85&s=8e1586d4a364538a09ade1835bc42642" width="4863" height="1348" data-path="images/components/hero.webp">
    A guide to using message components in your Discord bot.
  </ImageCard>

  <ImageCard title="Using Modal Components" href="/developers/components/using-modal-components" img="https://mintcdn.com/discord/z4DGSUUgOUjp9uQh/images/components/hero.webp?fit=max&auto=format&n=z4DGSUUgOUjp9uQh&q=85&s=8e1586d4a364538a09ade1835bc42642" width="4863" height="1348" data-path="images/components/hero.webp">
    A guide to using modal components in your Discord bot.
  </ImageCard>

  <Card title="Using Community Invites" href="/developers/tutorials/using-community-invites" icon={<InboxIcon />}>
    A guide to using community invites in your Discord bot.
  </Card>

  <Card title="Developing A User-Installable App" href="/developers/tutorials/developing-a-user-installable-app" icon={<RobotIcon />}>
    A guide to developing a user-installable app on Discord.
  </Card>

  <Card title="Hosting on Cloudflare Workers" href="/developers/tutorials/hosting-on-cloudflare-workers" icon={<RobotIcon />}>
    A guide to hosting your Discord bot on Cloudflare Workers.
  </Card>

  <Card title="You Might Not Need a Privileged Intent" href="/developers/gateway/you-might-not-need-a-privileged-intent" icon={<BookCheckIcon />}>
    A guide to help you determine whether you need a privileged intent or whether an alternative approach will work.
  </Card>
</CardGroup>

## Privileged Intents

<CardGroup cols={2}>
  <Card title="You Might Not Need a Privileged Intent" href="/developers/gateway/you-might-not-need-a-privileged-intent" icon={<BookCheckIcon />}>
    A guide to help you determine whether you need a privileged intent or whether an alternative approach will work.
  </Card>

  <Card title="Getting Started With Privileged Intent Review" href="/developers/gateway/getting-started-with-privileged-intent-review" icon={<CompassIcon />}>
    A guide to help you get started with the privileged intent review process.
  </Card>
</CardGroup>
