Skip to content
This repository has been archived by the owner on Oct 2, 2023. It is now read-only.

Feature/poll rewrite #211

Open
wants to merge 96 commits into
base: develop
Choose a base branch
from
Open

Feature/poll rewrite #211

wants to merge 96 commits into from

Conversation

ghost
Copy link

@ghost ghost commented Jun 27, 2022

Description
rewrote polls

Issue
Closes #140 #162

Akzeptanzkriterien

Grundsätzliches

  • Ein Poll bleibt x Tage lang aktiv (exklusive Pausen). Die Dauer wird bei Erstellung des Polls festgelegt.
  • Stimmen sind gewichtet (default: 1)
    • Das Gewicht ist an die Rolle gebunden und rollenspezifisch am expliziten Poll konfigurierbar.
  • Der Poll kann auf bestimmte Rollen beschränkt werden. Andere können dann nicht teilnehmen
  • Im Poll können Nutzer 1..n Optionen auswählen. (Default: unlimited)
  • Der Poll kann anonym sein. (Ergebnisse anonym)
  • Ein Poll kann per Befehl aktiviert und deaktiviert werden. Während dieser Zeit stoppt die "Laufzeit"
  • Ein aktiver Poll ist angepinnt
  • Es wird für jeden Poll ein Thread erstellt
  • Es wird ein Select Menü erstellt (Abstimmfunktion)
  • Nur Yes-No Polls laufen über Reaktionen und werden nicht geloggt.
  • Es gibt Team- und Standard-"Yes-Nos"
    • Team:
      • .tyn <TITEL>
      • Ein regulärer Team-Poll mit einer Stimme und den Voreinstellungen: "Dafür", "Dagegen", "Enthalten"
    • Standard-Yes-No:
      • .yn <TITEL>
  • Abgelaufene Polls bleiben deaktiviert und können nicht reaktiviert werden.
  • Nach Ende des Polls wird ein Kuchendiagramm der Stimmverteilung als Embed gesendet.
  • Sobald ein Teil des vom Bot erstellten Polls gelöscht wird, wird der gesamte Poll gelöscht. (Embed oder Select-Menü)
  • Es gibt einen List-Command mit Filter-Parameter folgender Möglichkeiten: Aktiv, Inaktiv
  • Der Poll-Owner und User mit einer festgelegten Rolle können auf Befehl die Stimmen nicht-anonym einsehen.

Parameter der Polls

--deadline DEADLINE, -D DEADLINE           |time in hours| 0 for server default
--anonymous {True,False}, -A {True,False}  |public who voted| True or False
--choices CHOICES, -C CHOICES              |amount of choices per user| 0 for multiple choice
--roles ROLES, -R ROLES                    |which roles can participate| ("role1, role2, role3, ...") "0" for all
--weights WEIGHTS, -W WEIGHTS              |role weights| ("role1: weight, role2: weight, ...") "0" for server default / "1" for fair

Poll mit Default-Settings erstellen:

.poll quick <TITEL> \n
<EMOJI> <OPTION> \n
<EMOJI> <OPTION> \n

Poll mit zwei Optionen, anonym, 3 Tage Dauer, 2 Stimmen und ein Gewicht von "2" für Teammitglieder und Ruby:

.poll new <TITEL> \n
<EMOJI> <OPTION> \n
<EMOJI> <OPTION> \n

Der Bot bietet Parameter an und lauscht für zwei Minuten auf die nächste Nachricht:

-A true -D 3 -C 2 -W "team_role:2,ruby:2"

Standardpolls

  • Wenn die Zeit abgelaufen ist, wird das select menü gelöscht und die nachricht entpinnt.
  • In den Settings kann die Maximaldauer eines Polls festgelegt werden.
  • Die Default-Laufzeit kann eingestellt und ist per default auf der Maximaldauer

Teampolls

  • Ein Team-Poll läuft nicht ab
  • Nach x Stunden (konfigurierbar) werden regelmäßig alle 24 Stunden alle Teammitglieder gepingt, die noch nicht abgestimmt haben
  • Es kann eine globale Blacklist für Ausnahmen von ebd Pings festgelegt werden.
  • Ein Poll kann abgeschlossen werden: d.h, die fragliche Entscheidung wird am Ende als "angenommen" oder "abgelehnt" markiert.

Inf-inity added 30 commits June 27, 2022 22:21
)
await send_alert(ctx.guild, embed)

await Poll.create(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hier muss schon vor dem erstellen die Prüfung und Validierung der Rollengewichte erfolgen, damit die Datenbank-Klasse AUSSCHLIEßLICH Datenbank-Sachen macht und keine Logik beinhaltet.

@Tristan-H11 Tristan-H11 requested a review from Defelo as a code owner August 1, 2022 20:31
@Tristan-H11
Copy link
Member

@4norak
Die Akzeptanzkriterien sind in einer sehr abgespeckten Version hochgeladen, falls du raufschauen magst.
Es ist eine txt wegen des Linters.

@codeclimate
Copy link

codeclimate bot commented Aug 27, 2022

Code Climate has analyzed commit beedaa0 and detected 0 issues on this pull request.

View more on Code Climate.

@Defelo Defelo removed their request for review October 2, 2023 10:16
@Defelo Defelo removed their assignment Oct 2, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
Status: In Progress
Development

Successfully merging this pull request may close these issues.

Anonymous polls
2 participants