Revolt.py - An async library to interact with the https://revolt.chat api.

Overview

Revolt.py

An async library to interact with the https://revolt.chat api.

This library will be focused on making bots and i will not implement anything only for user accounts.

Support server: https://app.revolt.chat/invite/FDXER6hr

Documentation is here

Example

More examples in the examples folder

import revolt
import asyncio
import aiohttp

class Client(revolt.Client):
    async def on_message(self, message: revolt.Message):
        if message.content == "hello":
            await message.channel.send("hi how are you")

async def main():
    async with aiohttp.ClientSession() as session:
        client = Client(session, "BOT TOKEN HERE")
        await client.start()

asyncio.run(main())
Issues
  • Example Bot is not working

    Example Bot is not working

    Describe the bug The default Bot example does not work. I installed everything like it has to be

    To Reproduce

    • create a virtualenv
    • install revolt.py
    • paste in the example Bot
    • Start the bot

    Expected behavior !hello should force the bot to respond with "hi how are you"

    Screenshots image

    Error:

    python.exe c:/Users/MB/Documents/PythonBots/revoltchat/test/main.py
    Task exception was never retrieved
    future: <Task finished name='Task-15' coro=<Client.on_message() done, defined at c:\Users\MB\Documents\PythonBots\revoltchat\test\main.py:6> exception=TypeError("object str can't be used in 'await' expression")>
    Traceback (most recent call last):
      File "c:\Users\MB\Documents\PythonBots\revoltchat\test\main.py", line 8, in on_message
        await message.channel.send("hi how are you")
      File "C:\Users\MB\Documents\PythonBots\revoltchat\test\env\lib\site-packages\revolt\messageable.py", line 60, in send   
        message = await self.state.http.send_message(await self._get_channel_id(), content, embed_payload, attachments, reply_payload, masquerade_payload)
    TypeError: object str can't be used in 'await' expression
    

    Library version Access this info via pip show revolt.py 0.1.6

    Additional context Add any other context about the problem here.

    opened by martinbndr 9
  • why i cant turn on bot?

    why i cant turn on bot?

    Describe the bug A clear and concise description of what the bug is.

    i cant turn on bot with screenshot's msg

    To Reproduce A small code snippet showing the error

    import asyncio
    import aiohttp
    from bot import TOKEN, commandInt
    
    import revolt
    
    
    class Client(revolt.Client):
        async def on_message(self, message: revolt.Message):
            msg = None
            if message.content[0] == commandInt:
                msg = message.content[1:]
            if msg == "hello":
                await message.channel.send("wow")
    
    async def main():
        async with aiohttp.ClientSession() as session:
            client = Client(session, TOKEN)
            await client.start()
    
    asyncio.run(main())
    

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots If applicable, add screenshots to help explain your problem.

    스크린샷 2021-09-03 오후 2 03 49

    Library version Access this info via pip show revolt.py

    latest(download from github)

    Additional context Add any other context about the problem here.

    unconfirmed bug 
    opened by ajb3296 4
  • When using exit(), you get an error

    When using exit(), you get an error

    Describe the bug When using the exit() function you get an error. (Note that the function still works, it just gives you an error)

    To Reproduce

    1. Create a Command
    2. In the function for the command, add exit()
    3. Use the command in Revolt
    Task exception was never retrieved
    future: <Task finished name='Task-14' coro=<Client.on_message() done, defined at c:\Users\%USERNAME%\Desktop\Coding\Python\LeeBot\%USERNAME%bot.py:9> exception=SystemExit(None)>
    Traceback (most recent call last):
      File "C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python310\lib\asyncio\runners.py", line 44, in run
        return loop.run_until_complete(main)
      File "C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 633, in run_until_complete
        self.run_forever()
      File "C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python310\lib\asyncio\windows_events.py", line 321, in run_forever
        super().run_forever()
      File "C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 600, in run_forever
        self._run_once()
      File "C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 1896, in _run_once
        handle._run()
      File "C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python310\lib\asyncio\events.py", line 80, in _run
        self._context.run(self._callback, *self._args)
      File "c:\Users\%USERNAME%\Desktop\Coding\Python\LeeBot\%USERNAME%bot.py", line 12, in on_message
        await Client.process_commands(self, message=message)
      File "C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\ext\commands\client.py", line 226, in process_commands
        output = await context.invoke()
      File "C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\ext\commands\context.py", line 88, in invoke
        return await command.invoke(self, *self.args, **self.kwargs)
      File "C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\ext\commands\command.py", line 73, in invoke
        return await self.callback(self.cog or context.client, context, *args, **kwargs)
      File "c:\Users\%USERNAME%\Desktop\Coding\Python\LeeBot\%USERNAME%bot.py", line 95, in shutdown
        exit()
      File "C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python310\lib\_sitebuiltins.py", line 26, in __call__
        raise SystemExit(code)
    SystemExit: None
    Exception ignored in: <function _ProactorBasePipeTransport.__del__ at 0x0000020B07CFCB80>
    Traceback (most recent call last):
      File "C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python310\lib\asyncio\proactor_events.py", line 116, in __del__
        self.close()
      File "C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python310\lib\asyncio\proactor_events.py", line 108, in close
        self._loop.call_soon(self._call_connection_lost, None)
      File "C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 750, in call_soon
        self._check_closed()
      File "C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 515, in _check_closed
        raise RuntimeError('Event loop is closed')
    RuntimeError: Event loop is closed
    Exception ignored in: <function _ProactorBasePipeTransport.__del__ at 0x0000020B07CFCB80>
    Traceback (most recent call last):
      File "C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python310\lib\asyncio\proactor_events.py", line 116, in __del__
        self.close()
      File "C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python310\lib\asyncio\proactor_events.py", line 108, in close
        self._loop.call_soon(self._call_connection_lost, None)
      File "C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 750, in call_soon
        self._check_closed()
      File "C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 515, in _check_closed
        raise RuntimeError('Event loop is closed')
    RuntimeError: Event loop is closed
    

    Expected behavior The python script should stop.

    Library version

    Name: revolt.py
    Version: 0.1.8
    Summary: Python wrapper for the revolt.chat API
    Home-page: https://github.com/revoltchat/revolt.py
    Author: Zomatee
    Author-email: [email protected]
    License: MIT
    Location: c:\users\lee\appdata\local\programs\python\python310\lib\site-packages
    Requires: aenum, aiohttp, typing-extensions, ulid-py
    Required-by:
    

    Additional context For anybody that doesn't know, the exit() function force stops your python script.

    unconfirmed bug 
    opened by 4444dogs 2
  • `commands.IntConverter` Gives an Error

    `commands.IntConverter` Gives an Error

    Describe the bug When you try to use IntConverter() you get the following error. TypeError: int() argument must be a string, a bytes-like object or a real number, not 'Context'

    To Reproduce

    @commands.command(name='randomnum')
        async def randomnum(ctx, num1, num2):
    
            randomcalc = randint(commands.IntConverter(num1), commands.IntConverter(num2))
            await ctx.message.channel.send(str(randomcalc))
    

    Expected behavior Instead of an error, the function should return an int value.

    Library version

    Name: revolt.py
    Version: 0.1.8
    Summary: Python wrapper for the revolt.chat API
    Home-page: https://github.com/revoltchat/revolt.py
    Author: Zomatee
    Author-email: [email protected]
    License: MIT
    Location: c:\users\lee\appdata\local\programs\python\python310\lib\site-packages
    Requires: aenum, aiohttp, typing-extensions, ulid-py
    
    invalid 
    opened by 4444dogs 2
  • fix await error

    fix await error

    Task exception was never retrieved
    future: <Task finished name='Task-19' coro=<Client.on_message() done, defined at /home/Caeden/Github/revolt.py/__main__.py:6> exception=TypeError("object str can't be used in 'await' expression")>
    Traceback (most recent call last):
      File "/home/Caeden/Github/revolt.py/__main__.py", line 8, in on_message
        await message.channel.send("hi how are you")
      File "/home/Caeden/Github/revolt.py/revolt/messageable.py", line 62, in send
        message = await self.state.http.send_message(await self._get_channel_id(), content, embed_payload, attachments, reply_payload, masquerade_payload)
    TypeError: object str can't be used in 'await' expression
    

    _get_channel_id was not an asynchronous function

    • make api_url and max_messages a kwarg
    opened by CaedenPH 2
  • Add Client.run

    Add Client.run

    Discord.py has a run method for ease of access that automatically creates the asyncio loop and starts the client. I was thinking about adding that to here because it would help simplify the process of creating and running a bot. Note: We could put the runner() method into the class such as _run_async instead of having it inside the run method.

    opened by Dark42ed 2
  • refactor: add __slots__ to class definitions to save memory

    refactor: add __slots__ to class definitions to save memory

    • added __slots__ to class definitions to save memory usage
    • added color property to Role class as an alias for colour
    • refactored other parts a bit

    if you have any issue with this pr please feel free to let me know.

    opened by null8626 2
  • A command framework?

    A command framework?

    I was wondering if you'll include a command framework extension with the library in the future (simillar to discord.py's ext.commands) or you plan to leave that upto the end user to implement.

    opened by AnotherTwinkle 2
  • Bot returns error when command is ran in new server

    Bot returns error when command is ran in new server

    Describe the bug While a bot is online, if it joins a server and someone tries to run a command the bot returns an error.

    To Reproduce

    1. Run your Revolt bot.
    2. Add it to a server
    3. Try to run a command
    Task exception was never retrieved
    future: <Task finished name='Task-11' coro=<WebsocketHandler.handle_event() done, defined at %USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py:82> exception=KeyError('01G66YXP70EPXFFF0Q8RP9RBSW')>
    Traceback (most recent call last):
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 94, in handle_event
        await func(payload)
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 185, in handle_channelstarttyping       
        channel = self.state.get_channel(payload["id"])
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\state.py", line 45, in get_channel
        return self.channels[id]
    KeyError: '01G66YXP70EPXFFF0Q8RP9RBSW'
    Task exception was never retrieved
    future: <Task finished name='Task-12' coro=<WebsocketHandler.handle_event() done, defined at %USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py:82> exception=KeyError('01G66YXP70EPXFFF0Q8RP9RBSW')>
    Traceback (most recent call last):
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 94, in handle_event
        await func(payload)
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 191, in handle_channelstoptyping        
        channel = self.state.get_channel(payload["id"])
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\state.py", line 45, in get_channel
        return self.channels[id]
    KeyError: '01G66YXP70EPXFFF0Q8RP9RBSW'
    Task exception was never retrieved
    future: <Task finished name='Task-13' coro=<WebsocketHandler.handle_event() done, defined at %USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py:82> exception=KeyError('01G66YXP70EPXFFF0Q8RP9RBSW')>
    Traceback (most recent call last):
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 94, in handle_event
        await func(payload)
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 185, in handle_channelstarttyping       
        channel = self.state.get_channel(payload["id"])
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\state.py", line 45, in get_channel
        return self.channels[id]
    KeyError: '01G66YXP70EPXFFF0Q8RP9RBSW'
    Task exception was never retrieved
    future: <Task finished name='Task-14' coro=<WebsocketHandler.handle_event() done, defined at %USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py:82> exception=KeyError('01G66YXP70EPXFFF0Q8RP9RBSW')>
    Traceback (most recent call last):
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 94, in handle_event
        await func(payload)
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 191, in handle_channelstoptyping        
        channel = self.state.get_channel(payload["id"])
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\state.py", line 45, in get_channel
        return self.channels[id]
    KeyError: '01G66YXP70EPXFFF0Q8RP9RBSW'
    Task exception was never retrieved
    future: <Task finished name='Task-15' coro=<WebsocketHandler.handle_event() done, defined at %USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py:82> exception=KeyError('01G66YXP70EPXFFF0Q8RP9RBSW')>
    Traceback (most recent call last):
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 94, in handle_event
        await func(payload)
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 185, in handle_channelstarttyping       
        channel = self.state.get_channel(payload["id"])
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\state.py", line 45, in get_channel
        return self.channels[id]
    KeyError: '01G66YXP70EPXFFF0Q8RP9RBSW'
    Task exception was never retrieved
    future: <Task finished name='Task-16' coro=<WebsocketHandler.handle_event() done, defined at %USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py:82> exception=KeyError('01FHGJ3NPP7XANQQH8C2BE44ZY')>
    Traceback (most recent call last):
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 94, in handle_event
        await func(payload)
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 267, in handle_userupdate
        user = self.state.get_user(payload["id"])
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\state.py", line 38, in get_user
        return self.users[id]
    KeyError: '01FHGJ3NPP7XANQQH8C2BE44ZY'
    Task exception was never retrieved
    future: <Task finished name='Task-17' coro=<WebsocketHandler.handle_event() done, defined at %USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py:82> exception=KeyError('01G66YXP70EPXFFF0Q8RP9RBSW')>
    Traceback (most recent call last):
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 94, in handle_event
        await func(payload)
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 185, in handle_channelstarttyping       
        channel = self.state.get_channel(payload["id"])
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\state.py", line 45, in get_channel
        return self.channels[id]
    KeyError: '01G66YXP70EPXFFF0Q8RP9RBSW'
    Task exception was never retrieved
    future: <Task finished name='Task-18' coro=<WebsocketHandler.handle_event() done, defined at %USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py:82> exception=KeyError('01G66YXP70EPXFFF0Q8RP9RBSW')>
    Traceback (most recent call last):
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 94, in handle_event
        await func(payload)
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 191, in handle_channelstoptyping        
        channel = self.state.get_channel(payload["id"])
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\state.py", line 45, in get_channel
        return self.channels[id]
    KeyError: '01G66YXP70EPXFFF0Q8RP9RBSW'
    Task exception was never retrieved
    future: <Task finished name='Task-19' coro=<WebsocketHandler.handle_event() done, defined at %USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py:82> exception=KeyError('01G66YXP70EPXFFF0Q8RP9RBSW')>
    Traceback (most recent call last):
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 94, in handle_event
        await func(payload)
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 185, in handle_channelstarttyping       
        channel = self.state.get_channel(payload["id"])
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\state.py", line 45, in get_channel
        return self.channels[id]
    KeyError: '01G66YXP70EPXFFF0Q8RP9RBSW'
    Task exception was never retrieved
    future: <Task finished name='Task-20' coro=<WebsocketHandler.handle_event() done, defined at %USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py:82> exception=KeyError('01G66YXP70EPXFFF0Q8RP9RBSW')>
    Traceback (most recent call last):
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 94, in handle_event
        await func(payload)
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 185, in handle_channelstarttyping       
        channel = self.state.get_channel(payload["id"])
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\state.py", line 45, in get_channel
        return self.channels[id]
    KeyError: '01G66YXP70EPXFFF0Q8RP9RBSW'
    Task exception was never retrieved
    future: <Task finished name='Task-21' coro=<WebsocketHandler.handle_event() done, defined at %USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py:82> exception=KeyError('01G66YXP70EPXFFF0Q8RP9RBSW')>
    Traceback (most recent call last):
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 94, in handle_event
        await func(payload)
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 191, in handle_channelstoptyping        
        channel = self.state.get_channel(payload["id"])
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\state.py", line 45, in get_channel
        return self.channels[id]
    KeyError: '01G66YXP70EPXFFF0Q8RP9RBSW'
    Task exception was never retrieved
    future: <Task finished name='Task-22' coro=<WebsocketHandler.handle_event() done, defined at %USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py:82> exception=KeyError('01G66YXP70EPXFFF0Q8RP9RBSW')>
    Traceback (most recent call last):
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 94, in handle_event
        await func(payload)
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 185, in handle_channelstarttyping       
        channel = self.state.get_channel(payload["id"])
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\state.py", line 45, in get_channel
        return self.channels[id]
    KeyError: '01G66YXP70EPXFFF0Q8RP9RBSW'
    Task exception was never retrieved
    future: <Task finished name='Task-23' coro=<WebsocketHandler.handle_event() done, defined at %USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py:82> exception=KeyError('01G66YXP70EPXFFF0Q8RP9RBSW')>
    Traceback (most recent call last):
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 94, in handle_event
        await func(payload)
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 191, in handle_channelstoptyping        
        channel = self.state.get_channel(payload["id"])
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\state.py", line 45, in get_channel
        return self.channels[id]
    KeyError: '01G66YXP70EPXFFF0Q8RP9RBSW'
    Task exception was never retrieved
    future: <Task finished name='Task-24' coro=<WebsocketHandler.handle_event() done, defined at %USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py:82> exception=KeyError('01G66YXP70EPXFFF0Q8RP9RBSW')>
    Traceback (most recent call last):
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 94, in handle_event
        await func(payload)
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\websocket.py", line 122, in handle_message
        message = self.state.add_message(cast(MessagePayload, payload))
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\state.py", line 73, in add_message
        message = Message(payload, self)
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\message.py", line 62, in __init__
        channel = state.get_channel(data["channel"])
      File "%USERPROFILE%\AppData\Local\Programs\Python\Python310\lib\site-packages\revolt\state.py", line 45, in get_channel
        return self.channels[id]
    KeyError: '01G66YXP70EPXFFF0Q8RP9RBSW'
    

    Expected behavior The bot should execute the command as usual.

    Library version

    Name: revolt.py
    Version: 0.1.8
    Summary: Python wrapper for the revolt.chat API
    Home-page: https://github.com/revoltchat/revolt.py
    Author: Zomatee
    Author-email: [email protected]
    License: MIT
    Location: c:\users\lee\appdata\local\programs\python\python310\lib\site-packages
    Requires: aenum, aiohttp, typing-extensions, ulid-py
    Required-by:
    
    unconfirmed bug 
    opened by 4444dogs 1
  • Implement mention for users, members and channels

    Implement mention for users, members and channels

    Added a mention property to the revolt.Member, revolt.User and revolt.Channel classes

    Example:

    @property
    def mention(self) -> str:
        """:class:`str`: Returns a string that allows you to mention the given user."""
        return f"<@{self.id}>
    
    opened by sniff122 1
  • Fix KeyError bug

    Fix KeyError bug

    Traceback (most recent call last):
      File "C:\Program Files\Python310\lib\site-packages\revolt\websocket.py", line 92, in handle_event
        await func(payload)
      File "C:\Program Files\Python310\lib\site-packages\revolt\websocket.py", line 131, in handle_messageupdate
        if data["content"]:
    KeyError: 'content'
    

    fix raises when message doesn't have content

    opened by MutedByte 1
Releases(v0.1.9)
Owner
Zomatree
I code in python, rust, C# and full stack web dev
Zomatree
An async python wrapper to interact with the Steam API and its CMs

steam.py A modern, easy to use, and async ready package to interact with the Steam API. Heavily inspired by discord.py and borrowing functionality fro

James Hilton-Balfe 73 Jul 17, 2022
Python wrapper for Revolt API

defectio is a direct implementation of the entire Revolt API and provides a way to authenticate and start communicating with Revolt servers. Similar interface to discord.py

Leon Bowie 28 Aug 7, 2022
Revolt account generator. Bypassing Hcaptcha using AI solver.

RevoltGenerator Revolt account generator. Bypassing Hcaptcha using AI solver. Config settings in config.json then put your usernames / proxies. If you

&! Ѵιchy.#0110 24 Jul 30, 2022
Interact and easily use Google Chat room webhooks.

Chat Webhooks Easily interact and send messages with Google Chat's webhooks feature. This API is small, but should be a nice framework for working wit

BD103 2 Dec 13, 2021
Aio-binance-library - Async library for connecting to the Binance API on Python

aio-binance-library Async library for connecting to the Binance API on Python Th

GRinvest 8 Aug 11, 2022
A python library to interact with the EarnApp API

EarnApp.py Table of contents General info Documentation Setup General info A python library to interact with the EarnApp API. Documentation First, imp

null 4 Feb 20, 2022
YARSAW is an Async Python API Wrapper for the Random Stuff API.

Yet Another Random Stuff API Wrapper - YARSAW YARSAW is an Async Python API Wrapper for the Random Stuff API. This module makes it simpler for you to

Bruce 6 Mar 27, 2022
📢 Video Chat Stream Telegram Bot. Can ⏳ Stream Live Videos, Radios, YouTube Videos & Telegram Video Files On Your Video Chat Of Channels & Groups !

Telegram Video Chat Bot (Beta) ?? Video Chat Stream Telegram Bot ?? Can Stream Live Videos, Radios, YouTube Videos & Telegram Video Files On Your Vide

brut✘⁶⁹ // ユスフ 15 May 1, 2022
Python API to interact with Uwazi

Python Uwazi API Quick Start To use the API install the requirements pip3 install -r requirements.txt and use it like this: uwazi_adapter = UwaziAdap

HURIDOCS 2 Dec 16, 2021
A small bot to interact with the reddit API. Get top viewers and update the sidebar widget.

LiveStream_Reddit_Bot Get top twitch and facebook stream viewers for a game and update the sidebar widget and old reddit sidebar to show your communit

Tristan Wise 1 Nov 21, 2021
This is a small package to interact with the OpenLigaDB API.

OpenLigaDB This is a small package to interact with the OpenLigaDB API. Installation Run the following to install: pip install openligadb Usage from o

null 1 Dec 31, 2021
GitPython is a python library used to interact with Git repositories.

Gitoxide: A peek into the future… I started working on GitPython in 2009, back in the days when Python was 'my thing' and I had great plans with it. O

null 3.6k Aug 11, 2022
Python library to interact with a Z-Wave JS server.

zwave-js-server-python Python library for communicating with zwave-js-server. Goal for this library is to replicate the structure and the events of Z-

Home Assistant Libraries 50 Jul 5, 2022
A library that revolutionizes the way people interact with NextDNS.

NextDNS-API An awesome way to interface with your NextDNS account - via Python! Explore the docs » Report Bug . Request Feature Table Of Contents Abou

null 29 Jul 27, 2022
Mixcloud API wrapper for Python and Async IO

aiomixcloud Mixcloud API wrapper for Python and Async IO aiomixcloud is a wrapper library for the HTTP API of Mixcloud. It supports asynchronous opera

Aristotelis Mikropoulos 25 May 11, 2022
Async client API for the Telegram Group Calls

PyTgCalls This project allow to make Telegram group call with MTProto Api using Pyrogram and WebRTC, this is possible thanks to the power of NodeJS's

null 168 Aug 11, 2022
This is a simple unofficial async Api-wrapper for tio.run

Async-Tio This is a simple unofficial async Api-wrapper for tio.run

Tom-the-Bomb 6 Jun 3, 2022
A modern, easy to use, feature-rich, and async ready API wrapper improved and revived from original discord.py.

A Python API wrapper that is improved and revived from the original discord.py

Orion 19 Nov 6, 2021
Powerful and Async API for AnimeWorld.tv 🚀

Powerful and Async API for AnimeWorld.tv ??

null 1 Nov 13, 2021