SkillAgentSearch skills...

Jishaku

A debugging and testing cog for discord.py rewrite bots.

Install / Use

/learn @scarletcafe/Jishaku

README

Python versions License Status Issues Commit activity


<h1 align="center"> <sub> <img src=".github/assets/jishaku_logo.svg" height="36"> </sub> &nbsp; jishaku </h1> <p align="center"> <sup> a debugging and utility extension for discord.py bots </sup> <br> <sup> <a href="https://jishaku.readthedocs.io/">Read the documentation online.</a> </sup> </p>

jishaku is an extension for bot developers that enables rapid prototyping, experimentation, and debugging of features for bots.

One of jishaku's core philosophies is to be dynamic and easy-to-use. Here's the two step install:

  1. Download jishaku on the command line using pip:
pip install -U jishaku
  1. Load the extension in your bot code before it runs:
bot.load_extension('jishaku')
# or
await bot.load_extension('jishaku')

That's it!

You can also import the module to use the command development utilities.

Index

Command reference

<table> <tr> <td width="60px"> <img align="left" width="50" src=".github/assets/python_logo.svg"> </td> <td> <h4>&gt; <code>jishaku [py|python] &lt;argument&gt;</code></h4> <h4>&gt; <code>jishaku [pyi|python_inspect] &lt;argument&gt;</code></h4> The Python commands execute or evaluate Python code passed into them. It supports simple expressions: <br><br> <!-- Horrifying that I have to do this --> <blockquote> <p>&gt; <i>jsk py 3+4</i></p> <img align="left" width="50" height="50" src=".github/assets/beep_bot.svg"> <p><b>Beep Bot</b></p> 7 </blockquote> <br> It also supports async expressions: <br><br> <blockquote> <p>&gt; <i>jsk py await _ctx.pins()</i></p> <img align="left" width="50" height="50" src=".github/assets/beep_bot.svg"> <p><b>Beep Bot</b></p> [&lt;Message id=123456789012345678 ...&gt;, ...] </blockquote> <br> You can pass in codeblocks for longer blocks of code to execute, and you can use <code>yield</code> to return intermediate results within your processing. <br><br> The <i>inspect</i> variant of the command will return a codeblock with detailed inspection information on all objects returned. <br><br> The variables available by default in all execution contexts are: <br><br> <table> <tr> <td><code>_ctx</code></td> <td> The <a href="https://discordpy.readthedocs.io/en/latest/ext/commands/api.html#discord.ext.commands.Context">Context</a> that invoked the command. </td> </tr> <tr> <td><code>_bot</code></td> <td> The running <a href="https://discordpy.readthedocs.io/en/latest/ext/commands/api.html#discord.ext.commands.Bot">Bot</a> instance. </td> </tr> <tr> <td><code>_author</code><br><code>_channel</code><br><code>_guild</code><br><code>_me</code><br><code>_message</code><br><code>_msg</code></td> <td> Shortcuts for attributes on <a href="https://discordpy.readthedocs.io/en/latest/ext/commands/api.html#discord.ext.commands.Context"><code>_ctx</code></a>. </td> </tr> <tr> <td><code>_find</code><br><code>_get</code></td> <td> Shortcuts for <a href="https://discordpy.readthedocs.io/en/latest/api.html#utility-functions"><code>discord.utils</code></a> functions. </td> </tr> </table> <br> The underscore prefix on the provided variables is intended to help prevent shadowing when writing large blocks of code within the command. <br> If you decide that you don't want the prefix, you can disable it by setting the <code>JISHAKU_NO_UNDERSCORE</code> environment variable to <code>true</code>. <br><br> Each Python command is individually scoped. That means variables you create won't be retained in later invocations. <br> You can use <code>jishaku retain on</code> to change this behavior and retain variables, and <code>jishaku retain off</code> if you change your mind later. <br><br> <h4>&gt; <code>jishaku [dis|disassemble] &lt;argument&gt;</code></h4> This command compiles Python code in an asynchronous context, and then disassembles the resulting function into Python bytecode in the style of <code>dis.dis</code>. <br><br> This allows you to quickly and easily determine the bytecode that results from a given expression or piece of code. The code itself is not actually executed. <br><br> <h4>&gt; <code>jishaku ast &lt;argument&gt;</code></h4> This command compiles Python code into its Abstract Syntax Tree, and then displays it as a formatted tree of AST blocks. <br><br> </td> </tr> </table> <table> <tr> <td width="60px"> <img align="left" width="50" src=".github/assets/terminal.svg"> </td> <td> <h4>&gt; <code>jishaku [sh|shell] &lt;argument&gt;</code></h4> The shell command executes commands within your system shell. <br><br> If you're on Linux and are using a custom shell, jishaku will obey the <code>SHELL</code> environment variable, otherwise, it will use <code>/bin/bash</code>. <br> On Windows, jishaku will use PowerShell if it's detected, otherwise, it will use Command Prompt. <br><br> The results from the commands you pass in are returned through a paginator interface live as the command runs. If you need to stop a command, you can press the stop button reaction, or use <code>jsk cancel</code>. <br><br> The execution will terminate automatically if no output is produced for 120 seconds. <br><br> <h4>&gt; <code>jishaku git &lt;argument&gt;</code></h4> <h4>&gt; <code>jishaku pip &lt;argument&gt;</code></h4> These commands act as shortcuts to the shell command, so you can save typing a word if you use these frequently. <br><br> </td> </tr> </table> <table> <tr> <td width="60px"> <img align="left" width="50" src=".github/assets/extension.svg"> </td> <td> <h4>&gt; <code>jishaku [load|reload] [extensions...]</code></h4> <h4>&gt; <code>jishaku unload [extensions...]</code></h4> These commands load, reload, or unload extensions on your bot. <br><br> You can reload jishaku itself with <code>jsk reload jishaku</code>. <br> <code>jsk reload ~</code> will reload all extensions on your bot. <br><br> You can load, reload, or unload multiple extensions at once: <code>jsk reload cogs.one cogs.two</code> <br><br> <h4>&gt; <code>jishaku shutdown</code></h4> This command gracefully shuts down your bot. <br><br> <h4>&gt; <code>jishaku rtt</code></h4> This command calculates <a href="https://en.wikipedia.org/wiki/Round-trip_delay">Round-Trip Time</a> for your bot to the API. It does this by calculating response time samples, so you can tell if your bot is being slow or not. <br><br> <h4>&gt; <code>jishaku sync [guild_ids...]</code></h4> This command syncs the app_command tree for a list of guilds, or globally if none are given, and then reports the results. <br><br> </td> </tr> </table> <table> <tr> <td width="60px"> <img align="left" width="50" src=".github/assets/description.svg"> </td> <td> <h4>&gt; <code>jishaku cat &lt;file&gt;</code></h4> This command reads a file from your file system, automatically detecting encoding and (if applicable) highlighting. <br><br> You can use this to read things like bot logs or source files in your project. <h4>&gt; <code>jishaku curl &lt;url&gt;</code></h4> This command reads text from a URL and attempts to detect encoding and language, similar to <code>jsk cat</code>. <br><br> You can use this to display contents of files online, for instance, the <code>message.txt</code> files created when a message is too long, or raw files from paste sites. <br><br> </td> </tr> </table> <table> <tr> <td width="60px"> <img align="left" width="50" src=".github/assets/chat.svg"> </td> <td> <h4>&gt; <code>jishaku exec [member and/or channel...] &lt;command string
View on GitHub
GitHub Stars572
CategoryDevelopment
Updated22h ago
Forks191

Languages

Python

Security Score

100/100

Audited on Apr 1, 2026

No findings