Skip to main content

A discord.py ready wrapper for the audio sending node, Obsidian

Project description

A discord.py ready wrapper for the audio sending node, Obsidian

Install

To install the library, you need the lastest version of pip and minimum Python 3.8

Stable version

pip install obsidianpy

Unstable version (this one gets more frequent changes)

pip install git+https://github.com/cloudwithax/obsidian.py

Support

You can join our support server here

Examples

In-depth examples are located in the examples folder

Here's a quick example:

import obsidian
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.obsidian = obsidian.NodePool()
    
    async def start_nodes(self):
        await self.obsidian.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=obsidian.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'ytsearch:{search}')
        
        if not results:
            raise commands.CommandError('No results were found for that search term.')
        
        if isinstance(results, obsidian.Playlist):
            await player.play(track=results.tracks[0])
        else:
            await player.play(track=results[0])

            
bot = MyBot()
bot.run("token here")

FAQ

Why is it saying "Cannot connect to host"?

  • You need to have an Obsidian node setup before you can use this library. Download it directly here

What experience do I need?

  • This library requires that you have some experience with Python, asynchronous programming and the discord.py library.

Why is it saying "No module named obsidian found"?

  • You need to install the package before you can use it

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

obsidianpy-1.0.6.1.tar.gz (24.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

obsidianpy-1.0.6.1-py3-none-any.whl (24.6 kB view details)

Uploaded Python 3

File details

Details for the file obsidianpy-1.0.6.1.tar.gz.

File metadata

  • Download URL: obsidianpy-1.0.6.1.tar.gz
  • Upload date:
  • Size: 24.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for obsidianpy-1.0.6.1.tar.gz
Algorithm Hash digest
SHA256 10bfbce017a58c4bf08c8af668fe72d031df4ad376d1b5d9f057acc670d12892
MD5 80f57455d93ed07b7c7d24f3fa4d4eb2
BLAKE2b-256 f470b839c1b334d1f935b8b33816cf94319f6db7e759f9bd1bd20b68296fe3cb

See more details on using hashes here.

File details

Details for the file obsidianpy-1.0.6.1-py3-none-any.whl.

File metadata

  • Download URL: obsidianpy-1.0.6.1-py3-none-any.whl
  • Upload date:
  • Size: 24.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for obsidianpy-1.0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 74dc565cc322ebb3613ef3a3b16fb0f4d1e3b08d8a934de6d835a1210b503dc4
MD5 0cded4585fa3d7efafd40ca269306954
BLAKE2b-256 aaf0b24e0492317e8f66423ebb2b28d6e154e8b5c1c9b0fb46409cf63b9a1c47

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page