lightning code docs

lightning docs

commands

bridge join --name=<name>

joins a bridge using the given name

bridge leave

leaves the current bridge, if any

bridge reset --name=[name]

leaves the current bridge, if any, then rejoins a bridge

bridge toggle --setting=<setting>

toggles one of the following settings: allow_editing, use_rawname

bridge status

prints information about the bridge you're currently in

help

links to this site

ping

pings the bot and returns the response time in ms

version

prints the version of lightning used

configuring lightning

lightning looks for a config file passed with the --config flag or a config.ts file in the current directory. the api docs have a list of all the configuration options you can use. here's an example config file:

import { guilded_plugin } from 'https://williamhorning.eu.org/bolt/x/bolt-guilded/0.7.1/mod.ts';
import { revolt_plugin } from 'https://williamhorning.eu.org/bolt/x/bolt-revolt/0.7.1/mod.ts';
import type { config } from 'jsr:@jersey/lightning@0.7.1';

export default {
	cmd_prefix: 'l!',
	plugins: [
		guilded_plugin.new({
			token: 'nope',
		}),
		revolt_plugin.new({
			token: 'nope',
		}),
	],
	redis_host: 'localhost',
	redis_port: 6379,
} as config;
database migrations

the current version of lightning uses redis for storing data, but the way that data is stored can change between versions. the lightning migrations command can let you migrate your data between versions. if you need help, file an issue or join one of the support servers

    supported original versions in 0.7.x

  • Five: 0.5.0 - 0.6.2 (mongodb)
  • Five: 0.5.0 - 0.6.2 (redis)
  • Seven: ≥0.7.x
  • supported original versions in 0.6.2

  • Four: ≤0.4.12 (mongodb)
  • FourBeta: 0.4.0 - 0.5.0 (mongodb)
  • Five: 0.5.0 - 0.6.2 (mongodb)
developing plugins

plugins allow you to extend bolt's functionality by supplying support for other platforms or by adding commands. to create a plugin, export an implementation of the `plugin` class. see the api docs for more

hosting with deno

for production instances, you should use docker

  1. install prerequisites:
    • deno ≥1.42.4
    • git
    • redis ≥6.2
  2. clone the lightning repo
  3. switch to a release branch (the latest is 0.7.1)
  4. install the lightning cli
  5. setup a config file
  6. run your instance with lightning run
git clone https://github.com/williamhorning/lightning
cd lightning
git switch 0.6.0
deno install -A --unstable-temporal --name lightning ./cli.ts
lightning run
hosting with docker compose
  1. install prerequisites:
    • docker ≥20.10.21
    • docker compose ≥2
  2. make a new folder on your server
  3. setup a compose file with the following service:
    lightning:
    # use `build: .` instead of the line below when running from source
    image: williamfromnj/bolt:0.7.1
    volumes:
    	- ./config:/app/data
    restart: always
  4. setup a config.ts file in the config folder
  5. ensure that all needed ports are forwarded
  6. use docker compose exec lightning ... instead of lightning ... when you need to use migrations
security policy

thanks for looking into lightning's security! if you've found security issues with bolt, please email security (at) williamhorning (dot) dev. with any issues you find, please include as much detail as possible and DO NOT use Github issues to report security issues. once we learn about security issues in supported versions, we'll work to fix them as soon as possible.

    supported versions:

  • ≥0.5
  • 0.4.13 (patches only)

    things not to do:

  • publically disclose vulnerabilities
  • exploit lightning instances you don't control
  • target physical infrastructure

    things we won't do:

  • take legal action against you
  • reveal information about you without your consent