MZscript
Improved BDFD interpreter in Python
PyPi
Documentation
Docs site
Discord
for contact with @MZshnik (mzshnik/MZecker)
Contribution
Works on (tested) Python 3.10 and newer
Instaling💻
pip install MZscript
Updating📥
pip install --upgrade MZscript
First steps🎉
Create your first command:
from MZscript import MZClient
bot = MZClient()
bot.add_command(name="!help", code="""
$sendMessage[
Whats up?
!moderation
!info
!economy]
""")
bot.run("your bot token")
Try $if blocks:
bot.add_command(name="!help", code="""
$sendMessage[
Choose menu:
$if[$message[0]==mod]
You choose moderation
$elif[$message[0]==mod]
You choose info
$elif[$message[0]==mod]
You choose economy
$else
!help moderation
!help info
!help economy
$endif]
""")
Change prefix with variables:
# insert code in to on_ready is necessary
bot = MZClient(on_ready="""
$if[$getVar[prefix]==]
$setVar[prefix;!]
$endif
$console[Bot is ready]
""")
bot.add_command(name="$getVar[prefix]set-prefix", code="""
$if[$message[0]==]
$setVar[prefix;$message[0]]
$sendMessage[Prefix setted to "$message[0]"]
$updateCommands[] <-- update command names
$else
$sendMessage[Type some prefix, like: !, ?, #...]
$endif
""")
bot.add_command(name="$getVar[prefix]get-prefix", code="""
$if[$getVar[prefix]==]
$setVar[prefix;!] <-- default prefix
$endif
$sendMessage[Prefix is "$getVar[prefix]"]
""")
bot.add_command(name="$getVar[prefix]help", code="""
$sendMessage[
$getVar[prefix]help moderation
$getVar[prefix]help info
$getVar[prefix]help economy
]""")
Create buttons with events
bot.add_command(name="!button", code="""
$sendMessage[
Content;Title;Description;footer;;0058CF;;;;; <-- embed args
;#addButton[primary;Amogus;False;amogus] <-- embed tags
;#addField[Amogus;Click me] <-- another tag
]""")
bot.add_event(name="button", code="""
$defer <-- defer button response
$if[$customID==amogus]
$sendMessage[New amogus in $channelInfo[name]]
$else
$console[Button "$customID" dosnot set]
$endif
""")
Make lvl system:
bot.add_command(name="!lvl", code="""
$if[$getUserVar[lvl]==]
$setUserVar[lvl;1]
$endif
$sendMessage[Your lvl: $getUserVar[lvl]($getUserVar[exp]/100 xp to lvl up)]""")
bot.add_event(name="message", code="""
$if[$getUserVar[lvl]==]
$setUserVar[lvl;1]
$endif
$if[$getUserVar[exp]==]
$setUserVar[exp;0]
$endif
$setUserVar[exp;$calculate[$getUserVar[exp]+2]]
$if[$calculate[$getUserVar[exp]/100]==1]
$setUserVar[lvl;$calculate[$getUserVar[lvl]+1]]
$endif
""")
Content
List of all functions
| Function | Full support | No args | Can be no/with args |
|---|---|---|---|
| $if | + | - | - |
| $or | + | - | - |
| $and | + | - | - |
| $elif | + | - | - |
| $else | + | + | - |
| $endif | + | + | - |
| $stop | + | + | - |
| $eval | - | - | - |
| $pyeval | - | - | - |
| $botInfo | - | - | - |
| $channelInfo | + | - | - |
| $guildInfo | + | - | - |
| $messageInfo | + | - | - |
| $roleInfo | + | - | - |
| $userInfo | + | - | - |
| $hasPerms | - | - | - |
| $hasRole | + | - | - |
| $isAdmin | + | - | - |
| $isChannelExists | + | - | - |
| $isGuildExists | + | - | - |
| $isMemberExists | + | - | - |
| $isNumber | + | - | - |
| $isRoleExists | + | - | - |
| $isUserExists | + | - | - |
| $sendMessage | + | - | - |
| $editMessage | + | - | - |
| $message | + | - | - |
| $addReaction | + | - | - |
| $addRole | + | - | - |
| $removeRole | + | - | - |
| $ban | + | - | - |
| $clear | + | - | - |
| $kick | + | - | - |
| $unban | + | - | - |
| $text | + | - | - |
| $charCount | + | - | - |
| $lowerCase | + | - | - |
| $replaceText | + | - | - |
| $titleCase | + | - | - |
| $upperCase | + | - | - |
| $customID | + | + | - |
| $value | + | - | - |
| $options | - | - | - |
| $defer | + | + | - |
| $var | + | - | - |
| $getVar | + | - | - |
| $setVar | + | - | - |
| $delVar | + | - | - |
| $getMemberVar | + | - | - |
| $setMemberVar | + | - | - |
| $delMemberVar | + | - | - |
| $gelGuildVar | + | - | - |
| $setGuildVar | + | - | - |
| $delGuildVar | + | - | - |
| $getUserVar | + | - | - |
| $setUserVar | + | - | - |
| $delUserVar | + | - | - |
| $request | + | - | - |
| $botTyping | + | - | - |
| $random | + | - | - |
| $calculate | + | - | - |
| $getTimestamp | + | + | - |
| $wait | + | - | - |
| $loop | + | - | - |
| $for | + | - | - |
| $updateCommands | + | - | + |
| $uptime | + | - | + |
| $docs | + | - | - |
| $console | + | - | - |
Full support means is function 100% works/tested
List of functions tags:
| Function | Tags |
|---|---|
| $sendMessage | #addButton, #addMenu, #addOption, #addField, #addReaction |
List of events:
| Name | Description |
|---|---|
| message | Activated when anyone send message |
| button | Activated when anyone press button from bot |
| interaction | Activated when anyone use interaction from bot (button/menu/slashe) |
In Developing🔨
- More functions from BDFD
- More custom functions
- Documentation
- Сontributing
- Plugins (mods)
In the Future🚀
- More usefull $eval/$pyeval
- Compiled version or support for other langs
Repository and first lines of code by MZshnik
Metadata
Release files for MZscript 1.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| mzscript-1.0.3.tar.gz | 31.3 kB | Without provenance | Details for mzscript-1.0.3.tar.gz |
Release files / mzscript-1.0.3.tar.gz
| Download URL | mzscript-1.0.3.tar.gz |
|---|---|
| Size | 31.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1609b673fb06ab64e7ec42891ed41bcc95d6c194acfe1f9f12b03d7cae823ef0
|
|
BLAKE2b-256 checksum How to use checksums |
c607261594ef377de7f01034e0d1a7ab6967a54702460d4de057dde5126db472
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.3
|
Security for MZscript 1.0.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.