Giter VIP home page Giter VIP logo

ep-discord's Introduction

Europython 2023 Discord Bot

An easy to deploy conference bot that manages roles for attendees via registration, notifies about upcoming sessions. Exposes Discord server statistics to organizers. We hosted the bot on Hetzner. And deployed with a single click Action from GitHub ๐Ÿ˜Ž.

registration_view.png

Overview

The main method in EuroPythonBot/bot.py is the entry point for the bot. I't a good starting point to start browsing the codebase. It requires a .secrets file in the root of the repository with DISCORD_BOT_TOKEN and PRETIX_TOKEN environment variables.

Registration

At EuroPython, we use pretix as our ticketing system.

The bot utilizes the Pretix API to fetch ticket information and creates an in-memory key-value store to retrieve the ticket type for a given Discord user. The mapping between ticket types and Discord roles is defined in a JSON file, such as ticket_to_roles_prod.json, and is used by the bot to assign roles to users.

There are safeguard methods in place to prevent users from registering multiple times and to make a direct Pretix API call in case the user information is not available in the in-memory store.

Program notifications

Is a service to push the programme notification to Discord. Pretalx API is used to fetch the programme information, and config.toml holds information about livestream URLs.

Organizers extension

A set of commands that are available only for organizers that are allowing to get statistics about the Discord server.

Setup

Create config.local.toml file in EuroPythonBot directory, it would be used instead of config.toml if exists.

Add .secrets file to the root of the repository with the following content:

DISCORD_BOT_TOKEN=<EuroPythonTestBotToken_from_1Password>
PRETIX_TOKEN=<PretixStagingToken_from_1Password>

After you have added the .secrets file, you can run the bot with the following command:

pipenv run python EuroPythonBot/bot.py

or with docker:

docker build --tag discord_bot .
docker run --interactive --tty --env DISCORD_BOT_TOKEN=$DISCORD_BOT_TOKEN --env PRETIX_TOKEN=$PRETIX_TOKEN discord_bot

ep-discord's People

Contributors

kislovskiy avatar dependabot[bot] avatar sebastiaanz avatar cheukting avatar kasisnu avatar cmaureir avatar artcz avatar europython-society avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.