Independent Software Project

Discord Plays Desktop

A configurable Windows application that converts live Discord commands into keyboard and mouse input for PC games.

The Problem

Making “chat plays” experiences configurable

Community-controlled game experiences often require technical setup, hard-coded commands, or custom changes for every game. I wanted to create a desktop application that would let the person running the experience configure it without rebuilding the software.

The result is a multi-screen Windows Forms application that connects to a Discord bot, listens for live messages, evaluates configured commands, and converts valid commands into keyboard or mouse input.

Core Features

A complete product surface, not a single-purpose script

Live Event Processing

Subscribes to Discord message events and evaluates commands as messages arrive.

Configurable Commands

Lets users rename commands, map them to keyboard or mouse input, and retain settings between sessions.

Adjustable Randomization

Applies user-controlled execution frequency so chat activity can be tuned to the game experience.

Windows Input Simulation

Translates validated commands into virtual key codes and simulated keyboard or mouse actions.

Token Setup & Validation

Includes a dedicated first-run configuration flow, validation, and clear error states.

Multi-Screen Interface

Separates startup, main menu, command configuration, token setup, and recovery states into focused screens.

High-Level Architecture

A clear path from chat message to controlled input

01 · Discord

Receive

Discord.Net supplies incoming message events.

02 · Command Logic

Evaluate

Messages are filtered and matched against configured commands.

03 · Settings

Resolve

Persistent mappings and execution frequency determine the action.

04 · Windows

Execute

The command becomes keyboard or mouse input for the active game.

Engineering Decisions

Designed around events, configuration, and users

I chose event-driven processing so the application could respond to Discord messages when they arrived instead of repeatedly polling.

I separated user configuration from command behavior so names and key mappings could change without rebuilding the application. The help output is generated from current settings, keeping the visible command list synchronized with the configured behavior.

Usability features—including persistent settings, safeguards against accidental scroll changes, clear token-error handling, an emergency stop, and consistent navigation—make the application reliable and easy for others to use.

Technologies

C# Windows Forms Discord.Net WindowsInput Win32 APIs Application settings Event-driven programming

The full repository remains private while credentials, fixed paths, and token storage are modernized.

Next Iteration

Modernizing for reliability and maintainability

The next version would separate Discord communication, command processing, configuration, and input simulation into dedicated services. I would also replace blocking delays with asynchronous execution, move registration into a data driven command map, add structured logging and automated tests, store secrets securely, and remove fixed local paths.