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!
py -3 -m pip install gpy-console
python3 -m pip install gpy-console
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>
.
No links currently
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()
Any converter that relies on the local server will not be available. This includes:
- guilded.Role
- guilded.Member
- guilded.ChatMessage
- guilded.Attachment
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
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))
if bot._console_running:
bot.stop_console()