Added examples and updated README

This commit is contained in:
cloudwithax 2021-10-17 12:07:29 -04:00
parent e4ee754d30
commit a6ffce0215
2 changed files with 139 additions and 1 deletions

View File

@ -1,7 +1,7 @@
# Pomice # Pomice
The modern [Lavalink](https://github.com/freyacodes/Lavalink) wrapper designed for [discord.py](https://github.com/Rapptz/discord.py) The modern [Lavalink](https://github.com/freyacodes/Lavalink) wrapper designed for [discord.py](https://github.com/Rapptz/discord.py)
![](https://img.shields.io/badge/license-GPL-2f2f2f) ![](https://img.shields.io/badge/python-3.8-2f2f2f) ![](https://img.shields.io/badge/license-GPL-2f2f2f) ![](https://img.shields.io/badge/python-3.8-2f2f2f) ![](https://img.shields.io/discord/899324069235810315)
This library is heavily based off of/uses code from the following libraries: This library is heavily based off of/uses code from the following libraries:
- [Wavelink](https://github.com/PythonistaGuild/Wavelink) - [Wavelink](https://github.com/PythonistaGuild/Wavelink)
@ -23,6 +23,9 @@ pip install pomice
pip install git+https://github.com/cloudwithax/pomice pip install git+https://github.com/cloudwithax/pomice
``` ```
# Support
You can join our support server [here](https://discord.gg/r64qjTSHG8)
# Examples # Examples
In-depth examples are located in the examples folder In-depth examples are located in the examples folder

135
examples/basic.py Normal file
View File

@ -0,0 +1,135 @@
import pomice
import discord
from discord.ext import commands
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
# In order to initialize a node, or really do anything in this library, you need to make a node pool
self.pomice = pomice.NodePool()
async def start_nodes(self):
# You can pass in Spotify credentials to enable Spotify querying.
# If you do not pass in valid Spotify credentials, Spotify querying will not work
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(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.')
# With the release of discord.py 1.7, you can now add a compatible VoiceProtocol class as a argument
# in channel.connect(). This library takes advantage of that and is how you initialize a player.
await ctx.author.voice.channel.connect(cls=pomice.Player)
await ctx.send(f'Joined the voice channel `{channel}`')
@commands.command(aliases=['dc', 'disconnect'])
async def leave(self, ctx: commands.Context):
if not ctx.voice_client:
raise commands.CommandError('No player detected')
player: pomice.Player = ctx.voice_client
player.destroy()
await ctx.send("Player has left the channel.")
@commands.command(aliases=['p'])
async def play(self, ctx, *, search: str) -> None:
# Checks if the players in the channel before we play anything
if not ctx.voice_client:
await ctx.invoke(self.join)
player: pomice.Player = ctx.voice_client
# If you search a keyword, Pomice will automagically search the result using Youtube
# You can pass in "search_type=" as an argument to change the search type
# i.e: player.get_tracks("query", search_type=SearchType.ytmsearch)
# will search up any keyword results on Youtube Music
results = player.get_tracks("query")
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])
@commands.command()
async def pause(self, ctx):
if not ctx.voice_client:
raise commands.CommandError('No player detected')
player: pomice.Player = ctx.voice_client
if player.is_paused:
await ctx.send("Player is already paused!")
player.set_pause(pause=True)
await ctx.send("Player has been paused")
@commands.command()
async def resume(self, ctx):
if not ctx.voice_client:
raise commands.CommandError('No player detected')
player: pomice.Player = ctx.voice_client
if not player.is_paused:
await ctx.send("Player is already playing!")
player.set_pause(pause=False)
await ctx.send("Player has been resumed")
@commands.command()
async def stop(self, ctx):
if not ctx.voice_client:
raise commands.CommandError('No player detected')
player: pomice.Player = ctx.voice_client
if not player.is_playing:
await ctx.send("Player is already stopped!")
player.stop()
await ctx.send("Player has been stopped")
bot = MyBot()
bot.run("token here")