Skip to main content

Python TeamSpeak bot using TSBot framework

Project description

TeamSpeak Bot

TeamSpeak server query bot. This bot is mainly an example project using the TSBot framework.

Features

Admin

Collection of helpful debugging commands:

  • eval <eval str>: Evaluates given python expression.
  • exec <exec str>: Executes given python expression. Persists any side-effects.
  • quit: Closes the bot.
  • send <query>: Sends a raw query to the teamspeak server and return the response data.
  • spam <#lines> <text to be spammed> : Spams the current ctx of the message.
  • nickname <nickname>: Changes the bot nickname. If no nickname provided, defaults to the login name.

You probably don't want anyone running these commands, so they are locked behind checks. You can configure the bot to check for specific uids or server groups that have the permission to run these commands.

AFK Mover

Checks periodically for clients that haven't been active for given amount of time.
If such clients are found, move them to specified AFK channel.

Banned names

Kicks out any clients with configured nickname.
You can configure a list of banned nicknames or provide a function that return a boolean telling the bot if a given nickname is allowed.

By default, the bot will only kick the default TeamSpeak nickname: TeamSpeakUser

Fun

Comes with handful of fun commands:

  • coinflip: Flips a coin, responding with heads or tails.
  • roll <size=6>: Rolls a given sided die.

Greeter

Greets new clients (clients with guest server group) with a configurable message.

Jokes

Command to tell some good/bad jokes about programming:

  • joke Tells a programming related joke

Notify

Pokes client with a message after given amount of time.
Time can be provided as a number of seconds or <int>h<int>m<int>s meaning number of hours, minutes, and seconds respectively with out the <> (no need to provide all of them)

Requirements

  • Python 3.12

Installation

You should always use virtual envs.

pip install teamspeak_bot

Configuration

The bot will look for a configuration module on startup.
You can pass a path to a config file with -c / --config command line argument.
The config module must include CONFIG variable.

Example config module:

from teamspeak_bot import BotConfig

# BotConfig is a type safe way for you to configure
# your bot instance. If you have misconfigured your bot,
# your IDE will yell at you.

CONFIG = BotConfig(
    username="USERNAME",
    password="PASSWORD",
    address="ADDRESS",
    plugins={},
    logging={}
)

Running the bot

NOTE: You will need provide configuration file.

teamspeak-bot
# -- OR --
python -m teamspeak_bot

Command line arguments

  • -c, --config: Path to a configuration file. Defaults to config.py
  • -l, --logfile: Path to a log file. Defaults to log.txt
  • -v, --verbose: Level of verbosity.
  • -h, --help: Prints out the help message.

Plugin configuration:

Admin

Plugin config key: admin

Key Type Explanation
enabled bool If the plugin is enabled
allowed_uids tuple[str] UIDs allowed to run admin commands.
allowed_server_groups tuple[str] Server groups allowed to run admin commands.
strict_server_group_checking bool By default if Admin in allowed_server_groups, any server group with the word Admin is allowed to run admin commands. This flag turns on strict matching.

Afk Mover

Plugin config key: afk_mover

Key Type Explanation
enabled bool If the plugin is enabled
afk_channel str Name of the AFK channel. doesn't match strictly
idle_time float AFK grace period in seconds

Banned Names

Plugin config key: banned_names
banned_names and/or is_banned_name has to be defined if this plugin is enabled.

Key Type Explanation
enabled bool If the plugin is enabled
banned_names tuple[str, ...] Blacklisted names
is_banned_name Callable[[str], bool] Function that determines if a name is banned
message str Kick message
check_period float How often bot checks for banned names in the client list in seconds

Error events

Plugin config key: error_events

Key Type Explanation
enabled bool If the plugin is enabled
invalid_invocation_message str Message when command is invoked wrongly
permission_error_message str Message when an invoker doesn't have proper permissions to run the command
permission_error_log_message str Message logged when an invoker doesn't have proper permissions to run the command
command_error_message str Message when a command handler encounters user error

Fun

Plugin config key: fun

Key Type Explanation
enabled bool If the plugin is enabled

Greeter

Plugin config key: greeter

Key Type Explanation
enabled bool If the plugin is enabled
message str Message to new user joining the server

Fun

Plugin config key: jokes

Key Type Explanation
enabled bool If the plugin is enabled

Notify

Plugin config key: notify

Key Type Explanation
enabled bool If the plugin is enabled
max_delay int The max notify time in seconds

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

teamspeak_bot-0.1.1.tar.gz (17.2 kB view details)

Uploaded Source

Built Distribution

teamspeak_bot-0.1.1-py3-none-any.whl (21.7 kB view details)

Uploaded Python 3

File details

Details for the file teamspeak_bot-0.1.1.tar.gz.

File metadata

  • Download URL: teamspeak_bot-0.1.1.tar.gz
  • Upload date:
  • Size: 17.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.13.0

File hashes

Hashes for teamspeak_bot-0.1.1.tar.gz
Algorithm Hash digest
SHA256 2527b814b6aaf637e84a1dbd9d11d46e8997281d96ea3755c2bd93f46d654d1c
MD5 f6325a033ad17790e2dbc1214154ad75
BLAKE2b-256 400f21616a47d107f0377702eacb335cb934f63a6aae70bc962906c20d5a3e4d

See more details on using hashes here.

File details

Details for the file teamspeak_bot-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for teamspeak_bot-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4d6009af20a177247a0d3b4dc750889cc1d941e7889fe7f0a67cf0c73f4dd47a
MD5 5e7a79db12c31874eead50a43a5ffead
BLAKE2b-256 fa5eb387232720b2a9637f5ce418ae3c74ee0ef4ca50d947866510d07bb71b28

See more details on using hashes here.

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