Skip to main content

A Python wrapper for the IW4M-Admin API

Project description

IW4M-Admin API Wrapper 🚀

A Python wrapper designed for the IW4M-Admin server administration tool 🛠️

This wrapper provides an easy way to interact with IW4M-Admin servers, enabling server commands, retrieving player information, and managing penalties through Python scripts. It supports both synchronous and asynchronous usage


Features 🌟

  • Command Execution: Perform in-game commands like kick, ban, change map, and more
  • Player Management: Fetch player stats, connection history, and chat history
  • Penalty Management: Issue and track penalties (warnings, bans, etc)
  • Real-time Interaction: Send messages to players and retrieve chat logs
  • Async Support: Full asynchronous support

Getting Started

Installation 📦

To install the IW4M-Admin API Wrapper you can use pip:

Windows

pip install iw4m

Linux/Mac

pip3 install iw4m

Initialization ⚙️

Create an instance of the IW4MWrapper class by providing your server details and authentication cookie

from iw4m import IW4MWrapper

iw4m = IW4MWrapper(
    base_url="http://your.iw4m.com",       # Replace with your server address 
    server_id=1234567890,                  # Replace with your server ID
    cookie=".AspNetCore.Cookies=CfB_u..."  # Replace with your .AspNetCore cookie
)

Commands 📜

Use the Commands class to interact with the server

# Create an instance of Commands
commands = iw4m.Commands(iw4m)

# Example usage
response = commands.kick("<player>") 
print(response)

response = commands.ban("<player>", "<reason>")
print(response)

response = commands.tempban("<player>", "<duration>", "<reason>")
print(response)

All available commands can be found at your server's help page, and the function names in the Commands class match the command names listed there.


Initialization (Async) 🌐

Create an instance of the AsyncIW4MWrapper class by providing your cookie, server address, and server ID

from iw4m import AsyncIW4MWrapper
import asyncio

iw4m = AsyncIW4MWrapper(
    base_url="http://your.iw4m.com",       # Replace with your server address 
    server_id=1234567890,                  # Replace with your server ID
    cookie=".AspNetCore.Cookies=CfB_u..."  # Replace with your .AspNetCore cookie
)

Commands (Async) ⚡

Use the Commands class to interact with the server, all methods are asynchronous and should be awaited

# Create an instance of Commands
commands = iw4m.Commands(iw4m)

async def main():
    # Example usage
    response = await commands.kick("<player>") 
    print(response)

    response = await commands.ban("<player>", "<reason>")
    print(response)

    response = await commands.tempban("<player>", "<duration>", "<reason>")
    print(response)

asyncio.run(main())

All available commands can be found at your server's help page, and the function names in the Commands class match the command names listed there.


GameUtils Class 🎮

The GameUtils class provides utility functions for interacting with the IW4M-Admin server

Methods

send_command(command: str)

executes an iw4m-admin console command and returns the response

Parameters:
    command (str): The command to execute

Returns:
    (str): Response from the server

Raises:
    Exception if the request fails

color_handler(color: str)

Converts a color name to its corresponding color code used by the T6 server

Parameters:
    color (str): The color name (e.g., "red", "green")

Returns:
    (str): The color code for the specified color, or an empty string if the color is unknown

read_chat()

Retrieves chat messages from the server

Returns:
    (list): A list of tuples, each containing the sender's name and their message

find_player(name: str = "", xuid: str = "", count: int = 1, offset: int = 0, direction: int = 0)

Finds players on the server by name or XUID

Parameters:
    name (str, optional): The player's name
    xuid (str, optional): The player's XUID
    count (int, optional): Number of players to return (default is 1)
    offset (int, optional): Offset for pagination (default is 0)
    direction (int, optional): Search direction (default is 0)

Returns:
    (str): The response from the server containing player information

get_players()

Retrieves a list of players currently connected to the server

Returns:
    (list): A list of tuples, each containing a player's name and their link

Player Class 👾

The Player class provides methods for retrieving and managing player information

Methods

stats(client_id: str)

Fetches the statistics for a specific player

Parameters:
    client_id (str): The client ID of the player
Returns:
    (str): The response from the server containing player statistics

info(client_id: str)

Retrieves detailed information about a player

Parameters:
    client_id (str): The client ID of the player
Returns:
    (dict): A dictionary containing the player's name, GUID, IP address, and statistics

chat_history(client_id: str, count: int)

Fetches the chat history for a specified client id

Parameters:
    client_id (str): The player's client_id 
    count (int): The number of messages to retrieve
Returns:
    (list): A list of chat messages sent by the player

name_changes(client_id: str)

Retrieves the name changes for a specified client id

Parameters:
    client_id (str): The player's client_id 
Returns:
    (list): A list of tuples containing the old username, IP address, and date of change

administered_penalties(client_id: int, count: int = 30)

Retrieves penalties administered to players

Parameters:
    client_id (int): The client ID of the player
    count (int, optional): The number of penalties to return (default is 30)
Returns:
    (list): A list of dictionaries containing details about the administered penalties

received_penalties(client_id: int, count: int = 30)

Retrieves penalties received by the player

Parameters:
    client_id (int): The client ID of the player
    count (int, optional): The number of penalties to return (default is 30)
Returns:
    (list): A list of dictionaries containing details about the received penalties

connection_history(client_id: int, count: int = 30)

Fetches the connection history for a specified player

Parameters:
    client_id (int): The client ID of the player
    count (int, optional): The number of connection entries to return (default is 30)
Returns:
    (list): A list of dictionaries containing connection history details

permissions(client_id: int, count: int = 30)

Retrieves the permission levels for a specified player

Parameters:
    client_id (int): The client ID of the player
    count (int, optional): The number of permission entries to return (default is 30)
Returns:
    (list): A list of dictionaries containing permission change details

Come Play on Brownies SND 🍰

Why Brownies? 🤔

  • Stability: Brownies delivers a consistent, lag-free experience, making it the perfect choice for players who demand uninterrupted action
  • Community: The players at Brownies are known for being helpful, competitive, and fun—something Orion can only dream of
  • Events & Features: Brownies is constantly running unique events and offers more server-side customization options than Orion, ensuring every game feels fresh

Brownies Discord | Brownies IW4M | Made With ❤️ By Budiworld

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iw4m-0.1.7.tar.gz (12.0 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page