Things aren't async by default in Tourmaline, but that doesn't mean it's not easy to implement. On a base level the body of any method could easily be wrapped in a
spawn and suddenly that method is async, but it's not a perfect solution.
This is part of the reason I developed the Async library. Using it you can make any function asynchronous just by using the
async macro. For example:
require "async" # ... @[Command("echo")] async def echo_command(ctx) ctx.message.reply(ctx.text) end
Nothing else needs to be done, but in the case that you want to call an async method just be sure to
await the result. You can also call
.wait on the returned future.