Our main scapi file can be found here.
Simply place this file in the folder where you want to program your bot. You can find out how to use scapi in your code below.We also recommend that you take a look at our scapi bot directory to get an overview of how a bot can be structured.
Flags are an important part of programming your Scapi bot.
You need flags to determine, for example, whether you want to see messages from users in your bot logs or whether you want to activate message input within the console.
The definition of your flags could look like this:
Another part of your bot are authorizations. These check whether the user who has executed a command also has the necessary authorizations.
You can also define who the bot owner is.
There is a function in Scapi that accepts user-defined values for authorization management. You can use this function to define the bot owner,
or create a custom list and then use it within commands.
The owner and a custom list can be defined as follows:
In order for the bot to have a purpose, it needs commands. A simple command looks like this:
Scapi has 2 different methods to write a bot. One method is newer and cleaner but is not yet fully developed. This method is called Commands.
This part explains how to write a command using the command moduleFor the other method, you can check out this documentation section
To clarify what is meant by what, here is a detailed explanation:
Code
Explanation
name
Stands for the command name, which is then added to the registry. You can then call up the command using the prefix and then the name (e.g. !test)
arg_count
Number of arguments that the command accepts and requires as a minimum. A lower number can also be specified and more arguments can still be accepted
required_permissions
Required authorization for the command. A value of the Scapi class must be transferred here. Scapi.Bot.PermissionLevel.CUSTOM for the custom list that you have defined here
username
The user name of the user who executed the command
args
The arguments that were passed when the command was executed. Is saved in a list (["first", "second", "third"])
As you have learned here, Scapi has 2 different methods to write a bot command.
This part shows you how to use the other method.This one is a bit more difficult, but can be more customized. This method is still used for pure on_message
events to accept & process pure messages.
We recommend using the Commands method as it has more features & support than the original method (e.g. permissions)
There are certain events that the bot can call up when something specific happens. One of these events is called on_ready.
This event is called when you start the bot. You only have to pass the on_ready function as an argument to the Bot.run() function.An on_ready event can look like this:
@Bot.eventdef on_ready(): Bot.logger( f"{scapi.BLUE}{Bot.username} started successfully!{scapi.RESET}", type=Scapi.LogLevel.INFO )
This example bot only applies to scapi legacy v1.0.0 (stbmv1)
The other method is the original. This is more difficult, but can be adapted considerably more. This method is still used for pure on_message events to accept and process pure messages.
This method is called Original
We recommend using the command method as it offers more features & more support than the original method (e.g. permissions)
import scapi # This will import scapifrom scapi import Scapiimport yaml # Import yaml for configuration purposesfrom yaml import SafeLoaderwith open("default.yml", encoding="utf-8") as config_file: config = yaml.load(config_file, Loader=SafeLoader) # Load the configuration# Define some important variablesusername = config["bot"]["username"] token = config["bot"]["token"]host = config["server"]["host"]port = config["server"]["port"]prefix = config["bot"]["prefix"]Bot = Scapi.Bot(username=username, token=token, host=host, port=port) # Define the bot classBot.login() # LoginBot.flag_handler(print_recv_msg=True, enable_user_input=True) # set some bot flagsBot.permission_handler(custom_list=["your_name"], owner="your_name") # manage your bot permissions# Basic bot command@Bot.command(name="test", arg_count=1, required_permissions=Scapi.Bot.PermissionLevel.CUSTOM)def test_command(username: str, args: list): Bot.send_message(f""" Username: {username} Args: {args}""" )# bot on_ready event@Bot.eventdef on_ready(): print(f"{Bot.log_msg}{scapi.BLUE}{Bot.username} started successfully!{scapi.RESET}")# run the botBot.run(on_ready)
Flags are an important part of programming your Scapi bot.
You need flags to determine, for example, whether you want to see messages from users in your bot logs or whether you want to activate message input within the console.
The definition of your flags could look like this:
Another part of your bot are authorizations. These check whether the user who has executed a command also has the necessary authorizations.
You can also define who the bot owner is.
There is a function in Scapi that accepts user-defined values for authorization management. You can use this function to define the bot owner,
or create a custom list and then use it within commands.
The owner and a custom list can be defined as follows:
In order for the bot to have a purpose, it needs commands. A simple command looks like this:
Scapi has 2 different methods to write a bot. One method is newer and cleaner but is not yet fully developed. This method is called Commands.
This part explains how to write a command using the command module.The older method is deprecated since Scapi v0.12.1 and should therefore no longer be used
To clarify what is meant by what, here is a detailed explanation:
Code
Explanation
name
Stands for the command name, which is then added to the registry. You can then call up the command using the prefix and then the name (e.g. !test)
arg_count
Number of arguments that the command accepts and requires as a minimum. A lower number can also be specified and more arguments can still be accepted
required_permissions
Required authorization for the command. A value of the Scapi class must be transferred here. Scapi.Bot.PermissionLevel.CUSTOM for the custom list that you have defined here
username
The user name of the user who executed the command
args
The arguments that were passed when the command was executed. Is saved in a list (["first", "second", "third"])
The official support for the original method has been removed since Scapi v0.12.1.To continue using the original method, we recommend the new @on_message method (since v0.13). If functionality is missing, please open an Issue on our GitHubIf you still want to use this method for whatever reason, please have a look at this part of the documentation
As of Scapi v0.13, we have added an improved version of the original message method. This uses our modern Python standard and Python decorators.
The implementation in your bot code is very simple. You only need at least Scapi v0.13 or higher.
A bot message event can look like this:
# Python decorator to define the message event@Bot.on_message(message="Hello")# Definition of the function in order to execute it automatically afterwardsdef on_hello_message(username: str): # The code of the function, e.g what is to be executed [...] Bot.send_message(f"Hello {username}!")
Not all functions of the old original method could be adopted, therefore the @on_message method is more restricted.The following functions could not be implemented so far (but could appear in a different form in the future):
Use of .startswith()
Recognizing specific words within the message
This feature is currently only used, for example, to process a normal word from a user and reply to it.
This event is called when you start the bot. You only have to pass the on_ready function as an argument to the Bot.run() function.
An on_ready event can look like this:
@Bot.eventdef on_ready(): Bot.logger( f"{scapi.BLUE}{Bot.username} started successfully!{scapi.RESET}", type=Scapi.LogLevel.INFO )