Skip to content

MZshnik/MZscript

Repository files navigation

MZscript

Improved BDFD interpreter in Python

Repository

for contact with @MZshnik (mzshnik/MZecker)

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
on_ready Activated when bot ready to work
message Activated when anyone send message
button Activated when anyone press button from bot
interaction Activated when anyone use interaction from bot (button/menu/slash)
check Checker for command execution(beta)
invoked Invoked when command executed(beta)

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

MZscript not developering

Closed for better time. If anyone interested to contribute or has ideas - join Discord server and/or DM mzshnik

Repository and first lines of code by MZshnik