Files
LangBot/docs/en/plugin/dev/api-ref.md
T
2025-05-13 15:25:41 +00:00

10 KiB

API Reference

This document provides a reference for the LangBot API that is available to plugins.

APIHost

The APIHost class provides access to LangBot's API from plugins. It is passed to the plugin's constructor.

from langbot.api import APIHost

class MyPlugin(Plugin):
    def __init__(self, api_host: APIHost):
        super().__init__(api_host)
        self.api = api_host

Message API

send_message

Sends a message to a specific destination.

def send_message(self, source, content, **kwargs) -> str:
    """
    Send a message to a specific destination.
    
    Args:
        source: The destination to send the message to
        content: The content of the message
        **kwargs: Additional arguments
        
    Returns:
        The message ID
    """

Example:

message_id = self.api.send_message(
    ctx.event.message.source,
    "Hello, World!"
)

reply_message

Replies to a specific message.

def reply_message(self, message, content, **kwargs) -> str:
    """
    Reply to a specific message.
    
    Args:
        message: The message to reply to
        content: The content of the reply
        **kwargs: Additional arguments
        
    Returns:
        The message ID
    """

Example:

message_id = self.api.reply_message(
    ctx.event.message,
    "This is a reply"
)

delete_message

Deletes a specific message.

def delete_message(self, message_id, **kwargs) -> bool:
    """
    Delete a specific message.
    
    Args:
        message_id: The ID of the message to delete
        **kwargs: Additional arguments
        
    Returns:
        True if successful, False otherwise
    """

Example:

success = self.api.delete_message(message_id)

User API

get_user_info

Gets information about a user.

def get_user_info(self, user_id, **kwargs) -> dict:
    """
    Get information about a user.
    
    Args:
        user_id: The ID of the user
        **kwargs: Additional arguments
        
    Returns:
        A dictionary containing user information
    """

Example:

user_info = self.api.get_user_info("12345678")
print(user_info["nickname"])

get_friend_list

Gets a list of the bot's friends.

def get_friend_list(self, **kwargs) -> list:
    """
    Get a list of the bot's friends.
    
    Args:
        **kwargs: Additional arguments
        
    Returns:
        A list of friend information
    """

Example:

friends = self.api.get_friend_list()
for friend in friends:
    print(friend["nickname"])

Group API

get_group_info

Gets information about a group.

def get_group_info(self, group_id, **kwargs) -> dict:
    """
    Get information about a group.
    
    Args:
        group_id: The ID of the group
        **kwargs: Additional arguments
        
    Returns:
        A dictionary containing group information
    """

Example:

group_info = self.api.get_group_info("12345678")
print(group_info["name"])

get_group_member_list

Gets a list of members in a group.

def get_group_member_list(self, group_id, **kwargs) -> list:
    """
    Get a list of members in a group.
    
    Args:
        group_id: The ID of the group
        **kwargs: Additional arguments
        
    Returns:
        A list of member information
    """

Example:

members = self.api.get_group_member_list("12345678")
for member in members:
    print(member["nickname"])

get_group_list

Gets a list of groups the bot is in.

def get_group_list(self, **kwargs) -> list:
    """
    Get a list of groups the bot is in.
    
    Args:
        **kwargs: Additional arguments
        
    Returns:
        A list of group information
    """

Example:

groups = self.api.get_group_list()
for group in groups:
    print(group["name"])

LLM API

call_llm

Calls the LLM with a specific prompt.

def call_llm(self, prompt, model=None, **kwargs) -> str:
    """
    Call the LLM with a specific prompt.
    
    Args:
        prompt: The prompt to send to the LLM
        model: The model to use (defaults to the system default)
        **kwargs: Additional arguments
        
    Returns:
        The LLM's response
    """

Example:

response = self.api.call_llm(
    "What is the capital of France?",
    model="gpt-3.5-turbo"
)
print(response)

call_llm_with_functions

Calls the LLM with a specific prompt and available functions.

def call_llm_with_functions(self, prompt, functions, model=None, **kwargs) -> dict:
    """
    Call the LLM with a specific prompt and available functions.
    
    Args:
        prompt: The prompt to send to the LLM
        functions: A list of function definitions
        model: The model to use (defaults to the system default)
        **kwargs: Additional arguments
        
    Returns:
        A dictionary containing the LLM's response and any function calls
    """

Example:

functions = [
    {
        "name": "get_weather",
        "description": "Get the weather for a location",
        "parameters": {
            "type": "object",
            "properties": {
                "location": {
                    "type": "string",
                    "description": "The location to get weather for"
                }
            },
            "required": ["location"]
        }
    }
]

response = self.api.call_llm_with_functions(
    "What's the weather in Paris?",
    functions,
    model="gpt-3.5-turbo"
)

if "function_call" in response:
    function_name = response["function_call"]["name"]
    function_args = response["function_call"]["arguments"]
    # Handle the function call

Storage API

storage.set

Stores a value with a specific key.

def set(self, key, value) -> None:
    """
    Store a value with a specific key.
    
    Args:
        key: The key to store the value under
        value: The value to store
    """

Example:

self.api.storage.set("my_plugin:counter", 42)

storage.get

Gets a value with a specific key.

def get(self, key, default=None):
    """
    Get a value with a specific key.
    
    Args:
        key: The key to get the value for
        default: The default value to return if the key doesn't exist
        
    Returns:
        The stored value or the default value
    """

Example:

counter = self.api.storage.get("my_plugin:counter", 0)

storage.has

Checks if a key exists.

def has(self, key) -> bool:
    """
    Check if a key exists.
    
    Args:
        key: The key to check
        
    Returns:
        True if the key exists, False otherwise
    """

Example:

if self.api.storage.has("my_plugin:counter"):
    # Key exists

storage.delete

Deletes a key.

def delete(self, key) -> None:
    """
    Delete a key.
    
    Args:
        key: The key to delete
    """

Example:

self.api.storage.delete("my_plugin:counter")

Config API

config.get

Gets a configuration value.

def get(self, key, default=None):
    """
    Get a configuration value.
    
    Args:
        key: The key to get the value for
        default: The default value to return if the key doesn't exist
        
    Returns:
        The configuration value or the default value
    """

Example:

api_key = self.api.config.get("my_plugin:api_key")

config.set

Sets a configuration value.

def set(self, key, value) -> None:
    """
    Set a configuration value.
    
    Args:
        key: The key to set the value for
        value: The value to set
    """

Example:

self.api.config.set("my_plugin:api_key", "my-api-key")

Event API

register_event_handler

Registers a handler for a specific event.

def register_event_handler(self, event_type, handler) -> None:
    """
    Register a handler for a specific event.
    
    Args:
        event_type: The type of event to handle
        handler: The handler function
    """

Example:

def my_handler(ctx):
    # Handle the event
    pass

self.api.register_event_handler(PersonNormalMessageReceived, my_handler)

unregister_event_handler

Unregisters a handler for a specific event.

def unregister_event_handler(self, event_type, handler) -> None:
    """
    Unregister a handler for a specific event.
    
    Args:
        event_type: The type of event
        handler: The handler function
    """

Example:

self.api.unregister_event_handler(PersonNormalMessageReceived, my_handler)

Command API

register_command

Registers a command.

def register_command(self, name, handler, description=None) -> None:
    """
    Register a command.
    
    Args:
        name: The name of the command
        handler: The handler function
        description: The description of the command
    """

Example:

def echo_handler(args):
    return args

self.api.register_command("echo", echo_handler, "Echo a message")

unregister_command

Unregisters a command.

def unregister_command(self, name) -> None:
    """
    Unregister a command.
    
    Args:
        name: The name of the command
    """

Example:

self.api.unregister_command("echo")

Utility API

logger

Provides access to the logger.

self.api.logger.debug("Debug message")
self.api.logger.info("Info message")
self.api.logger.warning("Warning message")
self.api.logger.error("Error message")

schedule

Schedules a function to be called at a specific time.

def schedule(self, func, when, *args, **kwargs) -> str:
    """
    Schedule a function to be called at a specific time.
    
    Args:
        func: The function to call
        when: When to call the function (datetime or timedelta)
        *args: Arguments to pass to the function
        **kwargs: Keyword arguments to pass to the function
        
    Returns:
        The schedule ID
    """

Example:

from datetime import timedelta

def my_function():
    # Do something
    pass

schedule_id = self.api.schedule(my_function, timedelta(hours=1))

cancel_schedule

Cancels a scheduled function.

def cancel_schedule(self, schedule_id) -> bool:
    """
    Cancel a scheduled function.
    
    Args:
        schedule_id: The ID of the schedule
        
    Returns:
        True if successful, False otherwise
    """

Example:

success = self.api.cancel_schedule(schedule_id)