GithubHelp home page GithubHelp logo

orga_bot's Introduction

Orga Bot

A Discord Bot that send files from moodle in a Discord Channel using python Moodle downloader

Funktionalitäten

  • Automatischer Upload von Dateien in ausgewählte Textchannel bzw. Threads für jede einzelne Unterrichtseinheit
    • Upload von Dateien in Google Drive falls die Datei über 8MB groß ist
  • Automatische Synchronisation mit dem Moodle-Kalender

How to use?

  1. Führe pip install -r requirements.txt aus (für raspberrypi: sudo apt-get install g++ python3-lxml -y)

  2. Erstelle den Ordner moodle/ und führe die Konfiguration vom Moodle Downloader aus (man kann auch mit moodle-dl --init -p moodle/ den Befehl außerhalb des Ordners ausführen)

  3. Führe den Moodle Downloader einmalig mit moodle-dl -p moodle/ aus

  4. Erstelle die Datei .env und füge folgende Werte ein:

    • GUILD_ID = [ID vom GUILD]
    • DISCORD_TOKEN="[DISCORD BOT TOKEN]"
    • MOODLE_URL="[URL VOM MOODLE]"
    • USE_GOOGLE_DRIVE=[True/False]
    • RESTART_TIMER=[True/False]
    • CALENDAR_URL="[URL ZUM MOODLE KALENDER]"
  5. Erstelle dir eine Google Cloud Projekt in der Google Cloud Console und aktiviere die API Google Drive (OPTIONAL, Kann geändert werden durch ändern des Wertes USE_GOOGLE_DRIVE in der Datei .env)

    • Gehe auf die Webseite und klicke auf "Projekt erstellen" image.png
    • Gebe die Email-Adresse des Google-Accounts, auf welchem die Dateien die größer als 8 MB sind hochgeladen werden sollen, als Apptester an
    • Erstelle nun eine OAuth2 Schlüssel und wähle die Bereiche auth/docs, auth/drive, auth/drive.metadata.readonly, auth/docs aus
    • Lade die Zugriffsdaten als json Datei herunter und ändere den Namen der Datei zu token.json und füge sie in den Root-Ordner des Programms ein
    • Führe das python Progamm quickstart.py mit python quickstart.py aus
    • Es öffnet sich ein Browserfenster. Melde dich nun mit dem Google Account an, dessen Email du zuvor als Apptester eingetragen hast. Als nächstes musst du alle Felder auswählen und auf akzeptieren klicken.
  6. Starte den Bot mit python main.py

  7. Weise den Moodle-Kursen einen Channel zu indem du in Discord den Befehl /assign #textchannel eingibst. Daraufhin Kannst du über ein Dropdown-Menu auswählen welchen Kurs du den Channel zuweisen möchtest.

  8. Stoppe den Discord Bot und lösche alle Ordner und Dateien im Ordner moodle/ außer moodle_state.db und config.json

  9. Öffne eine Verbindung mit der Datenbank moodle_state.db und lösche alle Einträge in der Tabelle files mit dem SQL-Befehl: DELETE FROM files

  10. Starte den Bot neu. Nun sollten alle Dateien aus den Kursen heruntergeladen werden und in die zugewiesenen Channels geschickt. Nun werden Threads zu den einzelnen Themen im Kurs erstellt.

Nun kannst du den Discordbot benutzen um deine Moodle-Dateien an einem Ort zu speichern und mit anderen Leuten zu teilen

Befehle

Hier siehst du eine Liste von Befehlen für den Bot

Aktuell existierende Befehle

Befehl Beschreibung Berechtigung
/assign #textchannel Weise ein Textchannel einem Kurs zu Admin

Zukünftig geplante Befehle

  • /pm kurs_name - Erhalte eine Persöhnliche Nachricht falls es neue Dateien für einen Kurs gibt
    • /pm all - Erhalte eine Persöhnliche Nachricht falls es neue Dateien, egal für welchen Kurs, gibt
    • /pm revoke kurs_name - Widerrufe den Erhalt einer Persönlichen Nachricht für einen Kurs

Bekannte Fehler

  • Unter Linux-Betriebssystemen kann das pip-Paket aiohttp nicht gebaut werden
  • Bei dem wiederholenden Task kommt beim ersten Durchgang die Fehlermeldung await self.coro(*args, **kwargs) RuntimeWarning: Enable tracemalloc to get the object allocation traceback
  • Falls mitten in dem Moodle Download das Programm beendet ist muss die Datei moodle/running.lock gelöscht werden

orga_bot's People

Contributors

yoshiiplayzz avatar

Stargazers

Ângelo Azevedo avatar Daniel Vogt avatar

Watchers

 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.