205 lines
13 KiB
HTML
205 lines
13 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Quickstart</title>
|
||
<!-- end extra head -->
|
||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||
<link rel="stylesheet" type="text/css" href="_static/basic.css" />
|
||
<link rel="stylesheet" href="_static/style.css" type="text/css" />
|
||
<link rel="stylesheet" href="_static/codeblocks.css" type="text/css" />
|
||
<link rel="stylesheet" href="_static/icons.css" type="text/css" />
|
||
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
|
||
<script src="_static/jquery.js"></script>
|
||
<script src="_static/underscore.js"></script>
|
||
<script src="_static/doctools.js"></script>
|
||
<script src="_static/custom.js"></script>
|
||
<script src="_static/settings.js"></script>
|
||
<script src="_static/copy.js"></script>
|
||
<script src="_static/sidebar.js"></script>
|
||
<link rel="shortcut icon" href="_static/discord_py_logo.ico"/>
|
||
<link rel="index" title="Index" href="genindex.html" />
|
||
<link rel="search" title="Search" href="search.html" />
|
||
</head>
|
||
<body>
|
||
<div class="main-grid">
|
||
<header class="grid-item">
|
||
<nav>
|
||
<a href="index.html" class="main-heading">discord.py</a>
|
||
<a href="https://github.com/Rapptz/discord.py" title="GitHub"><span class="material-icons custom-icons">github</span></a>
|
||
<a href="https://discord.gg/TvqYBrGXEm" title="Discord"><span class="material-icons custom-icons">discord</span></a>
|
||
<a href="faq.html" title="FAQ"><span class="material-icons">help_center</span></a>
|
||
<a onclick="mobileSearch.open();" title="Search" id="open-search" class="mobile-only"><span class="material-icons">search</span></a>
|
||
<a onclick="mobileSearch.close();" title="Close" id="close-search" class="mobile-only" hidden><span class="material-icons">close</span></a>
|
||
</nav>
|
||
<nav class="mobile-only">
|
||
<form role="search" class="search" action="search.html" method="get">
|
||
<div class="search-wrapper">
|
||
<input type="search" name="q" placeholder="Search documentation" />
|
||
<button type="submit">
|
||
<span class="material-icons">search</span>
|
||
</button>
|
||
</div>
|
||
</form>
|
||
</nav>
|
||
</header>
|
||
<div class="sub-header grid-item">
|
||
<label for="documentation_select">View Documentation For</label>
|
||
<select id="documentation_select" onchange="window.location = this.value;">
|
||
<option value="#" selected>discord</option>
|
||
<option value="ext/commands/index.html" >discord.ext.commands</option>
|
||
<option value="ext/tasks/index.html" >discord.ext.tasks</option>
|
||
</select>
|
||
<form role="search" class="search" action="search.html" method="get">
|
||
<div class="search-wrapper">
|
||
<input type="search" name="q" placeholder="Search documentation" />
|
||
<button type="submit">
|
||
<span class="material-icons">search</span>
|
||
</button>
|
||
</div>
|
||
</form>
|
||
<a accesskey="S" class="settings" onclick="settingsModal.open();"><span class="material-icons">settings</span></a>
|
||
</div>
|
||
<aside class="grid-item">
|
||
<span id="hamburger-toggle">
|
||
<span class="material-icons">menu</span>
|
||
</span>
|
||
<span id="settings-toggle" class="settings" onclick="settingsModal.open();">
|
||
<span class="material-icons">settings</span>
|
||
</span>
|
||
<div id="sidebar">
|
||
<h3><a href="index.html">Table of Contents</a></h3>
|
||
<ul>
|
||
<li><a class="reference internal" href="#">Quickstart</a><ul>
|
||
<li><a class="reference internal" href="#a-minimal-bot">A Minimal Bot</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
</div>
|
||
</aside>
|
||
<main class="grid-item" role="main">
|
||
|
||
<section id="quickstart">
|
||
<span id="id1"></span><h1>Quickstart<a class="headerlink" href="#quickstart" title="Permalink to this headline">¶</a></h1>
|
||
<p>This page gives a brief introduction to the library. It assumes you have the library installed,
|
||
if you don’t check the <a class="reference internal" href="intro.html#installing"><span class="std std-ref">Installing</span></a> portion.</p>
|
||
<section id="a-minimal-bot">
|
||
<h2>A Minimal Bot<a class="headerlink" href="#a-minimal-bot" title="Permalink to this headline">¶</a></h2>
|
||
<p>Let’s make a bot that responds to a specific message and walk you through it.</p>
|
||
<p>It looks something like this:</p>
|
||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">discord</span>
|
||
|
||
<span class="n">client</span> <span class="o">=</span> <span class="n">discord</span><span class="o">.</span><span class="n">Client</span><span class="p">()</span>
|
||
|
||
<span class="nd">@client</span><span class="o">.</span><span class="n">event</span>
|
||
<span class="k">async</span> <span class="k">def</span> <span class="nf">on_ready</span><span class="p">():</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'We have logged in as </span><span class="si">{</span><span class="n">client</span><span class="o">.</span><span class="n">user</span><span class="si">}</span><span class="s1">'</span><span class="p">)</span>
|
||
|
||
<span class="nd">@client</span><span class="o">.</span><span class="n">event</span>
|
||
<span class="k">async</span> <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="n">message</span><span class="p">):</span>
|
||
<span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">author</span> <span class="o">==</span> <span class="n">client</span><span class="o">.</span><span class="n">user</span><span class="p">:</span>
|
||
<span class="k">return</span>
|
||
|
||
<span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">content</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">'$hello'</span><span class="p">):</span>
|
||
<span class="k">await</span> <span class="n">message</span><span class="o">.</span><span class="n">channel</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="s1">'Hello!'</span><span class="p">)</span>
|
||
|
||
<span class="n">client</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s1">'your token here'</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Let’s name this file <code class="docutils literal notranslate"><span class="pre">example_bot.py</span></code>. Make sure not to name it <code class="docutils literal notranslate"><span class="pre">discord.py</span></code> as that’ll conflict
|
||
with the library.</p>
|
||
<p>There’s a lot going on here, so let’s walk you through it step by step.</p>
|
||
<ol class="arabic">
|
||
<li><p>The first line just imports the library, if this raises a <cite>ModuleNotFoundError</cite> or <cite>ImportError</cite>
|
||
then head on over to <a class="reference internal" href="intro.html#installing"><span class="std std-ref">Installing</span></a> section to properly install.</p></li>
|
||
<li><p>Next, we create an instance of a <a class="reference internal" href="api.html#discord.Client" title="discord.Client"><code class="xref py py-class docutils literal notranslate"><span class="pre">Client</span></code></a>. This client is our connection to Discord.</p></li>
|
||
<li><p>We then use the <a class="reference internal" href="api.html#discord.Client.event" title="discord.Client.event"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Client.event()</span></code></a> decorator to register an event. This library has many events.
|
||
Since this library is asynchronous, we do things in a “callback” style manner.</p>
|
||
<p>A callback is essentially a function that is called when something happens. In our case,
|
||
the <a class="reference internal" href="api.html#discord.on_ready" title="discord.on_ready"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_ready()</span></code></a> event is called when the bot has finished logging in and setting things
|
||
up and the <a class="reference internal" href="api.html#discord.on_message" title="discord.on_message"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_message()</span></code></a> event is called when the bot has received a message.</p>
|
||
</li>
|
||
<li><p>Since the <a class="reference internal" href="api.html#discord.on_message" title="discord.on_message"><code class="xref py py-func docutils literal notranslate"><span class="pre">on_message()</span></code></a> event triggers for <em>every</em> message received, we have to make
|
||
sure that we ignore messages from ourselves. We do this by checking if the <a class="reference internal" href="api.html#discord.Message.author" title="discord.Message.author"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Message.author</span></code></a>
|
||
is the same as the <a class="reference internal" href="api.html#discord.Client.user" title="discord.Client.user"><code class="xref py py-attr docutils literal notranslate"><span class="pre">Client.user</span></code></a>.</p></li>
|
||
<li><p>Afterwards, we check if the <a class="reference internal" href="api.html#discord.Message.content" title="discord.Message.content"><code class="xref py py-class docutils literal notranslate"><span class="pre">Message.content</span></code></a> starts with <code class="docutils literal notranslate"><span class="pre">'$hello'</span></code>. If it does,
|
||
then we send a message in the channel it was used in with <code class="docutils literal notranslate"><span class="pre">'Hello!'</span></code>. This is a basic way of
|
||
handling commands, which can be later automated with the <a class="reference internal" href="ext/commands/index.html"><span class="doc">discord.ext.commands – Bot commands framework</span></a> framework.</p></li>
|
||
<li><p>Finally, we run the bot with our login token. If you need help getting your token or creating a bot,
|
||
look in the <a class="reference internal" href="discord.html#discord-intro"><span class="std std-ref">Creating a Bot Account</span></a> section.</p></li>
|
||
</ol>
|
||
<p>Now that we’ve made a bot, we have to <em>run</em> the bot. Luckily, this is simple since this is just a
|
||
Python script, we can run it directly.</p>
|
||
<p>On Windows:</p>
|
||
<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>$ py -3 example_bot.py
|
||
</pre></div>
|
||
</div>
|
||
<p>On other systems:</p>
|
||
<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>$ python3 example_bot.py
|
||
</pre></div>
|
||
</div>
|
||
<p>Now you can try playing around with your basic bot.</p>
|
||
</section>
|
||
</section>
|
||
|
||
|
||
</main>
|
||
<footer class="grid-item">
|
||
© Copyright 2015-present, Rapptz.
|
||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 4.2.0.
|
||
</footer>
|
||
</div>
|
||
|
||
<div id="settings" class="modal" onclick="if (event.target == this){ settingsModal.close(); }" hidden>
|
||
<div class="modal-content">
|
||
<span class="close" onclick="settingsModal.close();" title="Close">
|
||
<span class="material-icons">close</span>
|
||
</span>
|
||
<h1>Settings</h1>
|
||
|
||
<h2>Font</h2>
|
||
<div class="setting">
|
||
<h3>Use a serif font:
|
||
<label class="toggle"
|
||
title="Use a serif font? Your system font will be used, falling back to serif.">
|
||
<input type="checkbox" name="useSerifFont" onclick="updateSetting(this);">
|
||
<span class="toggle-slider"></span>
|
||
</label>
|
||
</h3>
|
||
</div>
|
||
|
||
<h2>Theme</h2>
|
||
<div class="setting">
|
||
<h3>
|
||
<label class="toggle" title="Set your theme based on your system preferences">
|
||
<input type="radio" name="setTheme" onclick="updateSetting(this);" value="automatic" checked>
|
||
</label>
|
||
Automatic
|
||
</h3>
|
||
<h3>
|
||
<label class="toggle" title="Set your theme to light theme">
|
||
<input type="radio" name="setTheme" onclick="updateSetting(this);" value="light">
|
||
</label>
|
||
Light
|
||
</h3>
|
||
<h3>
|
||
<label class="toggle" title="Set your theme to dark theme">
|
||
<input type="radio" name="setTheme" onclick="updateSetting(this);" value="dark">
|
||
</label>
|
||
Dark
|
||
</h3>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div id="to-top" onclick="scrollToTop()" hidden>
|
||
<span><span class="material-icons">arrow_upward</span> to top</span>
|
||
</div>
|
||
|
||
</body>
|
||
</html> |