GFH Bot is a Discord bot I built to support a small community. It handles polling and decision-making for the server, and it has grown to include prediction markets and a set of moderation and utility tools.
Polls
We already ran polls with another bot, PollBotPlus, but it offered little control over how a poll was decided. GFH Bot supports single-choice, multiple-choice, ranked-choice, freeform, tier-list, and quiz polls, and each one can carry rules about how it resolves.
A poll can require a minimum turnout, or a pass threshold measured against a specific choice. Voting can be limited to certain roles or to people who can see a given channel, and results can be hidden until the poll closes, or permanently. Votes can be anonymous. Reminders can go out at set intervals, optionally pinging a role. Polls can be edited before the first vote, extended, reopened, and duplicated. Non-anonymous polls keep a record of every vote change, and any poll can be exported to CSV.
Prediction Markets
Members can open a market on an event that has not happened yet and trade positions on the outcome. Prices come from a logarithmic market scoring rule, so each trade moves the price and the current prices read as the group's estimate of each outcome's probability.
A market can settle as a single winner, as a fixed number of winners, or as a set of independent yes/no outcomes. Traders can buy and sell, and they can pay a premium to insure a share of what they put into a position. Every member starts with 1,000 points, with a small daily top-up for anyone who runs low. When a market resolves, the creator records the result along with an optional note and source. The bot also keeps a forecasting record for each member and scores it with Brier scores.
Poll Analytics
Voting history is used to measure how a community behaves as well as what it decides. The bot reports participation over time, how polarized each poll was, which members tend to vote early for the eventual winner, and how a result would have changed with the most active voters removed. Members are also given a voting archetype, such as contrarian or swing voter, based on how they vote.
Other Features
The bot also provides a starboard, message search, self-assign role panels, a member removal process that requires a request, a second, and then a vote, an audit log, and a casino that shares its points with the markets.