diff --git a/main.py b/main.py index 35d0680..0a5cdf0 100644 --- a/main.py +++ b/main.py @@ -1,27 +1,10 @@ # I M P O R T S -import discord import os import asyncio +import discord import youtube_dl from discord.ext import commands -######################################################################################################################## -# -# _____ _ _ -# / ____| | | | -# | (___ | |_ __ _ _ __| |_ _ _ _ __ -# \___ \| __/ _` | '__| __| | | | '_ \ -# ____) | || (_| | | | |_| |_| | |_) | -# |_____/ \__\__,_|_| \__|\__,_| .__/ -# | | -# |_| - -token = os.getenv("TOKEN") -bot = commands.Bot(command_prefix=commands.when_mentioned_or("/"), - description="SnakieCat bot") -@bot.event -async def on_ready(): - print('Yeah, I am started and my name is {0.user}'.format(bot)) ######################################################################################################################### @@ -42,6 +25,7 @@ async def on_ready(): # M::::::M M::::::M UU:::::::::UU S:::::::::::::::SS I::::::::I CCC::::::::::::C # MMMMMMMM MMMMMMMM UUUUUUUUU SSSSSSSSSSSSSSS IIIIIIIIII CCCCCCCCCCCCC +# Suppress noise about console usage from errors youtube_dl.utils.bug_reports_message = lambda: '' ytdl_format_options = { @@ -55,7 +39,7 @@ ytdl_format_options = { 'quiet': True, 'no_warnings': True, 'default_search': 'auto', - 'source_address': '0.0.0.0' # bind to ipv4 since ipv6 addresses cause issues sometimes + 'source_address': '0.0.0.0' # bind to ipv4 since ipv6 addresses cause issues sometimes } ffmpeg_options = { @@ -64,6 +48,7 @@ ffmpeg_options = { ytdl = youtube_dl.YoutubeDL(ytdl_format_options) + class YTDLSource(discord.PCMVolumeTransformer): def __init__(self, source, *, data, volume=0.5): super().__init__(source, volume) @@ -92,21 +77,17 @@ class Music(commands.Cog): @commands.command() async def join(self, ctx, *, channel: discord.VoiceChannel): - """Joins a voice channel""" if ctx.voice_client is not None: return await ctx.voice_client.move_to(channel) - await channel.connect() @commands.command() async def play(self, ctx, *, url): - """Streams from a url (same as yt, but doesn't predownload)""" - async with ctx.typing(): player = await YTDLSource.from_url(url, loop=self.bot.loop, stream=True) ctx.voice_client.play(player, after=lambda e: print('Player error: %s' % e) if e else None) - await ctx.send('Ok, (beep boop) I am turning on {}'.format(player.title)) + await ctx.send('Now playing: {}'.format(player.title)) @commands.command() async def volume(self, ctx, volume: int): @@ -116,11 +97,12 @@ class Music(commands.Cog): return await ctx.send("Not connected to a voice channel.") ctx.voice_client.source.volume = volume / 100 - await ctx.send("Now volume is {}%".format(volume)) + await ctx.send("Changed volume to {}%".format(volume)) @commands.command() async def stop(self, ctx): """Stops and disconnects the bot from voice""" + await ctx.voice_client.disconnect() @play.before_invoke @@ -134,13 +116,28 @@ class Music(commands.Cog): elif ctx.voice_client.is_playing(): ctx.voice_client.stop() + +######################################################################################################################## +# +# _____ _ _ +# / ____| | | | +# | (___ | |_ __ _ _ __| |_ _ _ _ __ +# \___ \| __/ _` | '__| __| | | | '_ \ +# ____) | || (_| | | | |_| |_| | |_) | +# |_____/ \__\__,_|_| \__|\__,_| .__/ +# | | +# |_| +bot = commands.Bot(command_prefix=commands.when_mentioned_or("/"), + description="SnakieCat bot") +token = os.getenv("TOKEN") + ######################################################################################################################## # # /$$ /$$ /$$ # | $$ | $$ |__/ # /$$$$$$ /$$$$$$ /$$ /$$ /$$$$$$ /$$$$$$ /$$$$$$$ /$$$$$$$ /$$ /$$ /$$ /$$$$$$ /$$$$$$ /$$ /$$$$$$$ /$$$$$$ -#|_ $$_/ /$$__ $$| $$ /$$/|_ $$_/ |____ $$| $$__ $$ /$$_____/| $$ | $$ | $$ /$$__ $$ /$$__ $$| $$| $$__ $$ /$$__ $$ +# |_ $$_/ /$$__ $$| $$ /$$/|_ $$_/ |____ $$| $$__ $$ /$$_____/| $$ | $$ | $$ /$$__ $$ /$$__ $$| $$| $$__ $$ /$$__ $$ # | $$ | $$$$$$$$ \ $$$$/ | $$ /$$$$$$$| $$ \ $$| $$$$$$ | $$ | $$ | $$| $$$$$$$$| $$ \__/| $$| $$ \ $$| $$ \ $$ # | $$ /$$| $$_____/ >$$ $$ | $$ /$$ /$$__ $$| $$ | $$ \____ $$| $$ | $$ | $$| $$_____/| $$ | $$| $$ | $$| $$ | $$ # | $$$$/| $$$$$$$ /$$/\ $$ | $$$$/ | $$$$$$$| $$ | $$ /$$$$$$$/| $$$$$/$$$$/| $$$$$$$| $$ | $$| $$ | $$| $$$$$$$ @@ -149,24 +146,33 @@ class Music(commands.Cog): # | $$$$$$/ # \______/ -@bot.event -async def on_message(message): - if message.author == bot.user: - return +class Answers(commands.Cog): + def __init__(self, bot): + self.bot = bot - if message.content.startswith('hello'): - await message.channel.send('Hello!') - - if message.content.startswith('aboba') or message.content.startswith('ABOBA'): - await message.channel.send(':regional_indicator_a: :regional_indicator_b: :regional_indicator_o: :regional_indicator_b: :regional_indicator_a:') + @bot.listen('on_message') + async def on_message(message): + if message.author == bot.user: + return + if message.content.startswith('hello'): + await message.channel.send('Hello!') + + if message.content.startswith('aboba') or message.content.startswith('ABOBA'): + await message.channel.send( + ':regional_indicator_a: :regional_indicator_b: :regional_indicator_o: :regional_indicator_b: :regional_indicator_a:') ######################################################################################################################## + # ____ __ ___ __ # / __ \/ / / / | / / # / /_/ / / / / |/ / # / _, _/ /_/ / /| / #/_/ |_|\____/_/ |_/ +@bot.event +async def on_ready(): + print('Yeah, I have started and my name is {0.user}'.format(bot)) bot.add_cog(Music(bot)) +bot.add_cog(Answers(bot)) bot.run(token)