Skip to main content

A python module to access and utilize Beta Discord VC Party features like YouTube, Poker Night, etc. with your Bot

Project description

DCActivity

An unofficial module used to access Discord's Beta features like YouTube, Poker Night, etc. with your Bot

FeaturesInstallationUsageDocumentationLicense


Features

  • Super Easy to use!
  • Supports discord.py
  • Better error handling with custom and discord.py's inbuilt Exceptions Type Hinting and proper Documentation
  • discord.py like Docs making it easy to read the docs for existing discord.py users
  • Supports Logging

Currently Supported Applications are:

  • YouTube Together (youtube)
  • CG 2 DEV (chess)
  • Betrayal.io (betrayal)
  • Poker Night (poker)
  • Fishington.io (fishing)

Installation

  • Python 3.6 or higher is required
  • discord.py V1.5.0 or higher is required

To install the library, simply run the following command in your terminal:

# Windows
py -m pip install dcactivity

# Linux/macOS
python3 -m pip install dcactivity

Usage

To use the library, you must first import it into your script and create a new instance of the DCActivity class:

from discord.ext import commands
from dcactivity import DCActivity

bot = commands.Bot(command_prefix='!')
bot.dcactivity = DCActivity(bot)

To create the invite link, you need to use create_link() function:

link = await bot.dcactivity.create_link(voice_channel, app_id)
  • voice_channel: The Voice channel you want to create the invite link for. Can be Channel ID or discord.VoiceChannel object

  • app_id: The Application ID of the Voice Channel game. For this, you need to follow either of the three steps:

    • Import DCApplication from dcactivity:

      from dcactivity import DCApplication
      
      invite = await bot.dcactivity.create_invite(voice_channel, DCApplication.youtube) # or DCApplication.poker, etc.
      
    • Directly use Application Name or ID (use ID only if you know the exact ID of an activity):

      invite = await bot.dcactivity.create_invite(voice_channel, 'youtube') # or poker, chess, etc.
      

Examples

Bot:

# bot.py

from discord import VoiceChannel
from discord.ext import commands
from dcactivity import DCActivity, DCApplication

bot = commands.Bot(command_prefix='!')
dcactivity = DCActivity(bot) # or "bot.dcactivity = DCActivity(bot)" to use it as a BotVar

@bot.command()
async def youtube(ctx, channel: VoiceChannel):
    invite = await dcactivity.create_invite(channel, DCApplication.youtube)
    await ctx.send(invite)

bot.run('token')

Bot with Cogs:

  • bot:

    # bot.py
    
    from discord import VoiceChannel
    from discord.ext import commands
    from dcactivity import DCActivity
    
    bot = commands.Bot(command_prefix='!')
    bot.dcactivity = DCActivity(bot)
    
    bot.load_extension('cogs.cog') # Simple Example with Cog
    bot.load_extension('cogs.cog_advanced') # Advanced Example with Cog
    
    bot.run('token')
    
  • cog (simple):

    # cog.py
    
    from discord import VoiceChannel
    from discord.ext import commands
    from dcactivity import DCApplication
    
    
    class MyCog(commands.Cog):
        def __init__(self, bot):
            self.bot = bot
        
        @commands.command()
        async def youtube(self, ctx, channel: VoiceChannel):
            invite = await self.bot.dcactivity.create_invite(channel, DCApplication.youtube)
            await ctx.send(invite)
    
    def setup(bot):
        bot.add_cog(MyCog(bot))
    
  • cog (advanced):

    # cog_advanced.py
    
    from typing import Optional
    from discord import VoiceChannel
    from discord.ext import commands
    from dcactivity import DCApplication
    from dcactivity.errors import InvalidChannel
    
    
    class MyAdvancedCog(commands.Cog):
        def __init__(self, bot):
            self.bot = bot
    
        @commands.command()
        async def custom_link(self, ctx, channel=None):
            if not channel:
                if not ctx.author.voice:
                    return await ctx.send('You need to connect to a voice channel first')
                if not isinstance(ctx.author.voice.channel, VoiceChannel):
                    return await ctx.send('This feature is not supported in Stage Channels.')
                _channel = ctx.author.voice.channel
            else:
                _channel = channel
            
            invite = await self.bot.dcactivity.create_invite(
                _channel, DCApplication.youtube, max_age=0, max_uses=10)
            await ctx.send(invite)
    
        @custom_link.error
        async def custom_link_error(self, ctx, exc):
            exc = getattr(exc, 'original', exc)
            if isinstance(exc, InvalidChannel):
                await ctx.send('Invalid Channel given as argument.')
    
    def setup(bot):
        bot.add_cog(MyAdvancedCog(bot))
    

Note

  • A minimum of one person needs to click on the invite link to start the Voice Channel Activity.
  • Activity resets when everyone exits. Though it can again be joined from the same link but from the starting and not getting resumed.
  • Games like chess/betrayal may not work in Stable Client for now. To use them, you need install Discord PTB or Discord Canary Client or use them in the web browser.
  • Play/Spectate Button don't work if no one has already joined the Activity. Though after atleast 1 user joins the Activity (by clicking the link), the buttons works fine for other users.

Info

This package is licensed under MIT License. Any contributions are welcomed.

Need to contribute? Just Open a Pull Request with your changes and some information about your changes.

Found a bug or having an issue? Open an Issue at Github!


Links

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

dcactivity-1.2.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

dcactivity-1.2-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file dcactivity-1.2.tar.gz.

File metadata

  • Download URL: dcactivity-1.2.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.6

File hashes

Hashes for dcactivity-1.2.tar.gz
Algorithm Hash digest
SHA256 641246f206ef5a61249ac8a224e22a9b40b223b94b6e1b400ea0c14fcae46cf9
MD5 425fca959582296292d1db3feea4d114
BLAKE2b-256 5884466913192fc49ab23020ff05275c126bfa9ca7fe3157c635d2985f39e6d2

See more details on using hashes here.

File details

Details for the file dcactivity-1.2-py3-none-any.whl.

File metadata

  • Download URL: dcactivity-1.2-py3-none-any.whl
  • Upload date:
  • Size: 8.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.6

File hashes

Hashes for dcactivity-1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0ea4cd718f322e66d0ee9bc1341a050dc7f941134986ea23a7640c44d02bf217
MD5 1ff7a8aa865f5cb292fb9407a40e544d
BLAKE2b-256 e1412a74f02ba86445e25c1bd5b5fc6389717c3f2d3efdbe3353d35b57eb1540

See more details on using hashes here.

Supported by

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