Ejemplo n.º 1
0
    async def on_message(self, message):
        if message.author == self.user:
            return

        if message.content.startswith(prefix + 'help'):
            help_channel = doc['CHANNELS']['help_channel']
            # NOTE:- If help channel id is wrong then discord will display it as #deleted-channel
            await self.send_message(
                message.channel, 'Hello {}'.format(message.author.mention) +
                ', please visit <#' + help_channel +
                '> for a complete list of commands')

        # CHAT EMOTES
        # TODO get more Chat Emotes
        await chatemotes.main(self, message)

        # MUSIC PLAYER---------------
        if message.content.startswith(prefix + 'load'):
            await musicplayer.load(self, message)

        if message.content.startswith(prefix + 'play '):
            await musicplayer.play(self, message)

        if message.content.startswith(prefix + 'pause'):
            await musicplayer.pause(self, message)

        if message.content.startswith(prefix + 'resume'):
            await musicplayer.resume(self, message)

        if message.content.startswith(prefix + 'stop'):
            await musicplayer.stop(self, message)

        if message.content.startswith(prefix + 'playlist'):
            await musicplayer.playlist(self, message)

        # GUESS GAME------------------------------
        if message.content.startswith(prefix + 'guess'):
            # Game Status updating
            now_playing = discord.Game(name='Guessing Game')
            await self.change_status(game=now_playing, idle=False)
            # call guessgame.py module
            await guessgame.guess(self, message)
            # Game Status updating
            now_playing = discord.Game(name='')
            await self.change_status(game=now_playing, idle=False)

        # TRIVIA GAME----------------------------
        # TODO the strings are not compared correctly. Need to fix.
        if message.content.startswith(prefix + 'quiz'):
            # Game Status updating
            now_playing = discord.Game(name='Trivia Quiz')
            await self.change_status(game=now_playing, idle=False)
            await triviagame.quiz(self, message)
            # Game Status updating
            now_playing = discord.Game(name='')
            await self.change_status(game=now_playing, idle=False)

        # OSU! API--------------------
        # TODO implement other osu!API Functions
        if message.content.startswith(prefix + 'stats'):
            my_string = message.content
            # osu module
            await self.send_message(message.channel, osu.stats(my_string))

        if message.content.startswith(prefix + 'top'):
            my_string = message.content
            await self.send_message(
                message.channel,
                'Fetching the requested data. Please wait...\n\n')
            # osu module
            await self.send_message(message.channel, osu.top(my_string))

        # 8 BALL----------------------
        if message.content.startswith(prefix + '8ball'):
            await eightball.main(self, message)
Ejemplo n.º 2
0
    async def on_message(self, message):
        """
        Called when a message is created and sent to a server.

        :param message: A Message of the current message.
        """

        # OSU LINK SCANNER hook ----------------------->
        await osu.parse_message(message.content, message)

        # HELP COMMAND ----------------------------------->
        if message.content.startswith(self.prefix + 'help'):
            await self.send_message(message.channel, 'Hello {}, I have PMed you a list of commands.'.
                                    format(message.author.mention))
            with open('./static/help.txt') as h_text:
                a = h_text.read()
            await self.send_message(message.author, a)

        # CHAT EMOTICONS --------------------------->
        if message.content.startswith(self.prefix + 'kappa'):
            await self.send_file(destination=message.channel, fp='./static/kappa.png', filename='kappa.png')

        if message.content.startswith(self.prefix + 'feelsbadman'):
            await self.send_file(destination=message.channel, fp='./static/feelsbadman.png', filename='feelsbadman.png')

        if message.content.startswith(self.prefix + 'feelsgoodman'):
            await self.send_file(destination=message.channel, fp='./static/feelsgoodman.png', filename='feelsgoodman.png')

        if message.content.startswith(self.prefix + 'lapz'):
            await self.send_file(destination=message.channel, fp='./static/lapz.png', filename='lapz.png')

        # MUSIC PLAYER------------------------------------>
        if message.content.startswith(self.prefix + 'load'):
            await musicplayer.load(self, message)

        if message.content.startswith(self.prefix + 'play '):
            await musicplayer.play(self, message)

        if message.content.startswith(self.prefix + 'pause'):
            await musicplayer.pause(self, message)

        if message.content.startswith(self.prefix + 'resume'):
            await musicplayer.resume(self, message)

        if message.content.startswith(self.prefix + 'stop'):
            await musicplayer.stop(self, message)

        if message.content.startswith(self.prefix + 'next'):
            await musicplayer.next_song(self, message)

        # Manually disconnect voice ------------------------->
        if message.content.startswith(self.prefix + 'dqvoice'):
            await self.voice.disconnect()

        # Diagnostics -------------------------------------->
        if message.content.startswith(self.prefix + 'logid'):
            await self.send_message(message.channel, 'Hello {}, the log channel is set to <#{}>.'
                                    .format(message.author.mention, self.log_channel_id))

        # --------------->>-UTILITY FUNCTIONS-<<------------------
        # Number Guessing Game ---------------------------->
        if message.content.startswith(self.prefix + 'guess'):
            await guess(self, message)

        # TIC TAC TOE Game ------------------------------>
        if message.content.startswith(self.prefix + 'ttt'):
            tictactoe = games.TicTacToe()
            tictactoe.lapz_instance = self
            tictactoe.message = message
            tictactoe.ids = message.author.id
            tictactoe.name = str(message.author)
            await tictactoe.start_game()

        # ROCK PAPER SCISSORS Game ---------------------->
        if message.content.startswith(self.prefix + 'rps'):
            rps = games.RPS(message.author, message.author.id)
            rps.lapz_instance = self
            rps.message = message
            await rps.main()

        # TRIVIA Quiz Game ----------------------------------->
        if message.content.startswith(self.prefix + 'quizlist'):
            await quizlist(self, message)

        if message.content.startswith(self.prefix + 'startquiz'):
            await quiz(self, message)

        # ACCEPT SERVER INVITES ---------------------------->
        if message.content.startswith(self.prefix + 'invite'):
            msg = message.content[8:]
            try:
                await self.accept_invite(msg)
                await self.send_message(message.channel, '`Invite accepted. Thank you for inviting me.`')

            except discord.NotFound:
                await self.send_message(message.channel, '`Invite not found.`')
            except discord.HTTPException:
                await self.send_message(message.channel, '`Accepting the invite failed.`')

        # SERVER LIST: Fetches a list of connected servers along with server id -->
        if message.content.startswith(self.prefix + 'serverlist'):
            a = ''
            for server in self.servers:
                name = str(server)
                s_id = str(server.id)
                a += '\n`' + name + '`  `' + s_id + '`'
            await self.send_message(message.channel, 'I am connected to:' + a)

        # LEAVE A SERVER -------------------->
        if message.content.startswith(self.prefix + 'leave'):
            if message.author.id == self.admin_ids:
                msg = message.content[7:]
                server_id = discord.Object(id=msg)
                try:
                    for server in self.servers:
                        if msg == server.id:
                            await self.leave_server(server=server_id)

                            return
                except discord.HTTPException:
                    await self.send_message(message.channel, '`An error occurred when trying to leave the server.`')
            else:
                await self.send_message(message.channel, '`Administrator function.`')

        # OSU API FUNCTIONS ------------------------------->
        if message.content.startswith(self.prefix + 'stats'):
            my_string = message.content
            await self.send_message(message.channel, osu.stats(my_string))

        if message.content.startswith(self.prefix + 'top'):
            my_string = message.content
            await self.send_message(message.channel,
                                    'Fetching the requested data. Please wait...\n\n')
            await self.send_message(message.channel, osu.top(my_string))

        # 8 Ball ------------------------------------------>
        if message.content.startswith(self.prefix + '8ball'):
            await eightball(self, message)

        # Who am I? and Who Is? ---------------------------->
        if message.content.startswith(self.prefix + 'whoami'):
            await whoami(self, message)

        if message.content.startswith(self.prefix + 'whois'):
            await whois(self, message)

        # TWITCH stream checker---------------------------->
        if message.content.startswith(self.prefix + 'twitch'):
            cont = message.content[8:]
            await self.send_message(message.channel, twitch(cont))

        # TRANSLATOR---------------------------->
        if message.content.startswith(self.prefix + 'translate'):
            """
                ?translate hello :chinese
            """
            cont = message.content[11:]
            parts = cont.split('>')
            msg = parts[0]
            lang = parts[1]
            trans = translate(msg, lang)
            await self.send_message(message.channel, trans)

        # Giphy GIF Search -------------------------------->
        if message.content.startswith(self.prefix + 'giphy'):
            querry = str(message.content[7:])
            querry_format = querry.replace(' ', '+')
            print('GIPHY SEARCH FOR: ' + querry_format)
            await giphy(self, message, querry_format)

        # CLEAN CHANNEL ----------------------------------->
        if message.content.startswith(self.prefix + 'clean'):
            """
            Deletes the messages sent by lapzbot in a particular channel
            """
            try:
                async for entry in self.logs_from(message.channel, limit=100):
                    if entry.author == self.user:
                        await self.delete_message(entry)
            except discord.Forbidden:
                await self.send_message(message.channel, 'Error: I do not have permissions to get channel logs')
                return
            except discord.NotFound:
                await self.send_message(message.channel, 'Error: The channel you are requesting for doesnt exist.')
                return
            except discord.HTTPException:
                await self.send_message(message.channel, 'Error: The request to get logs failed.')
                return

            await self.send_message(message.channel, 'Cleaned :sweat_drops:.')
Ejemplo n.º 3
0
    async def on_message(self, message):
        if message.author == self.user:
            return

        if message.content.startswith(prefix + 'help'):
            help_channel = doc['CHANNELS']['help_channel']
            # NOTE:- If help channel id is wrong then discord will display it as #deleted-channel
            await self.send_message(message.channel,
                                    'Hello {}'.format(message.author.mention) + ', please visit <#' + help_channel +
                                    '> for a complete list of commands')

        # CHAT EMOTES
        # TODO get more Chat Emotes
        await chatemotes.main(self, message)

        # MUSIC PLAYER---------------
        if message.content.startswith(prefix + 'load'):
            await musicplayer.load(self, message)

        if message.content.startswith(prefix + 'play '):
            await musicplayer.play(self, message)

        if message.content.startswith(prefix + 'pause'):
            await musicplayer.pause(self, message)

        if message.content.startswith(prefix + 'resume'):
            await musicplayer.resume(self, message)

        if message.content.startswith(prefix + 'stop'):
            await musicplayer.stop(self, message)

        if message.content.startswith(prefix + 'playlist'):
            await musicplayer.playlist(self, message)

        # GUESS GAME------------------------------
        if message.content.startswith(prefix + 'guess'):
            # Game Status updating
            now_playing = discord.Game(name='Guessing Game')
            await self.change_status(game=now_playing, idle=False)
            # call guessgame.py module
            await guessgame.guess(self, message)
            # Game Status updating
            now_playing = discord.Game(name='')
            await self.change_status(game=now_playing, idle=False)

        # TRIVIA GAME----------------------------
        # TODO the strings are not compared correctly. Need to fix.
        if message.content.startswith(prefix + 'quiz'):
            # Game Status updating
            now_playing = discord.Game(name='Trivia Quiz')
            await self.change_status(game=now_playing, idle=False)
            await triviagame.quiz(self, message)
            # Game Status updating
            now_playing = discord.Game(name='')
            await self.change_status(game=now_playing, idle=False)

        # OSU! API--------------------
        # TODO implement other osu!API Functions
        if message.content.startswith(prefix + 'stats'):
            my_string = message.content
            # osu module
            await self.send_message(message.channel, osu.stats(my_string))

        if message.content.startswith(prefix + 'top'):
            my_string = message.content
            await self.send_message(message.channel,
                                    'Fetching the requested data. Please wait...\n\n')
            # osu module
            await self.send_message(message.channel, osu.top(my_string))

        # 8 BALL----------------------
        if message.content.startswith(prefix + '8ball'):
            await eightball.main(self, message)