Skip to content

Latest commit

 

History

History
118 lines (87 loc) · 3.11 KB

README.md

File metadata and controls

118 lines (87 loc) · 3.11 KB

⌨️ Guilded.py console

Note

Guilded.py console is a fork of Discord.py Console but has been completely rewritten. The only file that uses discord.py-Console's source code is __init__.py

Guilded.py console is a CLI for your Guilded.py bot, with Guilded.py console you can run commands right from your console!

📥 Installation

🪟 Windows

py -3 -m pip install gpy-console

🍎 Linux/macOS

python3 -m pip install gpy-console

⚙️ Example

The implementation is similar to the regular commands in guilded.py. Just implement the gpy-console like this:

import guilded
from gpyConsole import ConsoleClient
from gpyConsole import console_commands

client = ConsoleClient(
    features=guilded.ClientFeatures(official_markdown=True),
)
# can also do "bot = ConsoleBot", see tests/test.py

@client.event
@bot.event
async def on_ready():
    print(f"Logged in as {bot.user}")
    if not bot._console_running:
        bot.start_console()


@client.console_command()
async def hey(
    ctx: console_commands.Context,  # Modified Console Context with less features (.reply and .send are the same)
    channel: guilded.ChatChannel,
    user: guilded.User,
):  # Library automatically converts type annotations, just like in guilded.py
    # Missing converters: guilded.Role, guilded.Member, guilded.ChatMessage, guilded.Attachments
    await ctx.reply(f"Sending message to {user.name} (id: {user.id})")
    await channel.send(
        f"Hello from Console! I'm {client.user.name}, and you are {user.mention}"
    )

client.run(
    "gapi_token"
)

To execute the mentioned command run hey <valid_channel_id> <valid_user_id>.

🔗 Links

No links currently

gpyConsole: things to know

The console has to be started manually. Try something like this:

@bot.event
async def on_ready():
    print(f"Logged in as {bot.user}")
    if not bot._console_running:
        bot.start_console()

Missing Converters

Any converter that relies on the local server will not be available. This includes:

  • guilded.Role
  • guilded.Member
  • guilded.ChatMessage
  • guilded.Attachment

New Events

New events were added that are accessible like any other guilded.py event.

  • on_console_command_completion
  • on_console_command
  • on_console_command_error
  • on_console_message

Console Cogs

All cogs should be replaced with a ConsoleCog; it implements guilded.py's Cog feature so it will work the same.

from gpyConsole import console_commands
from guilded.ext import commands


class ExampleCog(console_commands.ConsoleCog):
    def __init__(self, bot: console_commands.ConsoleBot):
        self.bot = bot

    @console_commands.console_command()
    async def hello(self, ctx: console_commands.Context):
        return await ctx.reply("Hello from cog!")

    @commands.command()
    async def wow(self, ctx: commands.Context):
        await ctx.send("Wow! Cog worked!")


def setup(bot: console_commands.ConsoleBot):
    bot.add_cog(ExampleCog(bot))

You can stop the console

if bot._console_running:
    bot.stop_console()