.. include:: ./vars.rst

Usage Examples
==============

Not all of these are standalone examples, many of them are usage examples. If you're a beginner to Discord.js, we encourage you to look through these examples to get a hang of the way things work using the library.

.. warning:: Please do not copy/paste code directly from these examples. Try to learn from and adapt these pieces of code to your specific situation.

--------

Logging In
----------

Logs the Client_ in, allowing you to begin working with the Discord API.

Logging in with a username and password
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

**Do not use a normal user account for large or public bots. This is considered abuse of the API and can land you in trouble.**

.. code-block:: javascript

	const Discord = require('discord.js');
	var client = new Discord.Client();

	client.login('mybot@example.com', 'password', output);

	function output(error, token) {
		if (error) {
			console.log('There was an error logging in: ' + error);
			return;
		} else
			console.log('Logged in. Token: ' + token);
	}

Logging in with a token
~~~~~~~~~~~~~~~~~~~~~~~

You can get your bot's token using the `My Applications`_ page on the Discord Developers site.

.. code-block:: javascript

	const Discord = require('discord.js');
	var client = new Discord.Client();

	client.loginWithToken('token', output);

	function output(error, token) {
		if (error) {
			console.log('There was an error logging in: ' + error);
			return;
		} else
			console.log('Logged in. Token: ' + token);
	}

-----

Receiving Messages
------------------

Here we will demonstrate receiving messages and logging them to the console.

.. code-block:: javascript

	client.on('message', function(message) {
		if (message.channel.isPrivate) {
			console.log('(Private) ${message.author.name}: ${message.content}');
		} else {
			console.log('(${message.server.name} / ${message.channel.name}) ${message.author.name}: ${message.content}');
		}
	});

Sending messages
-----------------

Sends Hello to "general" in "my_server".

.. code-block:: javascript

	var channel = client.servers.get("name", "my_server").channels.get("name", "general");
	client.sendMessage(channel, "Hello");

You can also use a `Message`_ object as an parameter. This example sends "Hello" to the channel the message was sent from.

.. code-block:: javascript

	client.on('message', function(message) {
		client.sendMessage(message, "Hello");
	});

You can send DMs to a user with a `User`_ object. This will send "Hello" as an DM to the author of the received message.

.. code-block:: javascript

		client.on('message', function(message) {
			client.sendMessage(message.author, "Hello");
		});

Replying to messages
------------------

Sends "@author Hello!".

.. code-block:: javascript

	client.on('message', function(message) {
			client.reply(message, 'Hello!');
	});
