pomice/docs/_build/html/_sources/index.rst.txt

113 lines
3.3 KiB
ReStructuredText

.. pomice documentation master file, created by
sphinx-quickstart on Tue Nov 2 19:31:07 2021.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to Pomice!
==================
.. image:: https://raw.githubusercontent.com/cloudwithax/pomice/main/banner.jpg
The modern `Lavalink <https://github.com/freyacodes/Lavalink>`_ wrapper designed for `discord.py <https://github.com/Rapptz/discord.py>`_
Contents
---------
.. toctree::
modules
Before You Start
----------------
This library is designed to work with the Lavalink audio delivery system,
which directly interfaces with Discord to provide buttery smooth audio without
wasting your precious system resources.
Pomice is made with convenience to the user, in that everything is easy to use
and is out of your way, while also being customizable.
In order to start using this library, please download a Lavalink node to start,
you can get it `here <https://github.com/freyacodes/Lavalink/releases/latest>`_
Quick Jumpstart
----------------
If you want a quick example as to how to start with Pomice, look below:
.. code-block:: python3
import pomice
import discord
import re
from discord.ext import commands
URL_REG = re.compile(r'https?://(?:www\.)?.+')
class MyBot(commands.Bot):
def __init__(self) -> None:
super().__init__(command_prefix='!', activity=discord.Activity(type=discord.ActivityType.listening, name='to music!'))
self.add_cog(Music(self))
async def on_ready(self) -> None:
print("I'm online!")
await self.cogs["Music"].start_nodes()
class Music(commands.Cog):
def __init__(self, bot) -> None:
self.bot = bot
self.pomice = pomice.NodePool()
async def start_nodes(self):
await self.pomice.create_node(bot=self.bot, host='127.0.0.1', port='3030',
password='youshallnotpass', identifier='MAIN')
print(f"Node is ready!")
@commands.command(name='join', aliases=['connect'])
async def join(self, ctx: commands.Context, *, channel: discord.TextChannel = None) -> None:
if not channel:
channel = getattr(ctx.author.voice, 'channel', None)
if not channel:
raise commands.CheckFailure('You must be in a voice channel to use this command'
'without specifying the channel argument.')
await ctx.author.voice.channel.connect(cls=pomice.Player)
await ctx.send(f'Joined the voice channel `{channel}`')
@commands.command(name='play')
async def play(self, ctx, *, search: str) -> None:
if not ctx.voice_client:
await ctx.invoke(self.join)
player = ctx.voice_client
results = await player.get_tracks(query=f'{search}')
if not results:
raise commands.CommandError('No results were found for that search term.')
if isinstance(results, pomice.Playlist):
await player.play(track=results.tracks[0])
else:
await player.play(track=results[0])
bot = MyBot()
bot.run("token here")