This repository was archived by the owner on Oct 2, 2023. It is now read-only.

Feature/poll rewrite - #211

Open
ghost wants to merge 96 commits into
developfrom
feature/poll_rewrite
Open

Feature/poll rewrite#211
ghost wants to merge 96 commits into
developfrom
feature/poll_rewrite

Conversation

@ghost

@ghostghost commented Jun 27, 2022

Copy link
Copy Markdown

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
Comment threadgeneral/polls/cog.py Outdated
)
await send_alert(ctx.guild, embed)

await Poll.create(

Copy link
Copy Markdown
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

Copy link
Copy Markdown
Member

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

@qlty-cloud-legacy

Copy link
Copy Markdown

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
@DefeloDefelo removed their assignment Oct 2, 2023
Sign up for freeto 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

@Tristan-H11@Defelo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on Oct 2, 2023. It is now read-only.

Feature/poll rewrite - #211

Open
ghost wants to merge 96 commits into
developfrom
feature/poll_rewrite
Open

Feature/poll rewrite#211
ghost wants to merge 96 commits into
developfrom
feature/poll_rewrite

Conversation

@ghost

@ghostghost commented Jun 27, 2022

Copy link
Copy Markdown

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
Comment threadgeneral/polls/cog.py Outdated
)
await send_alert(ctx.guild, embed)

await Poll.create(

Copy link
Copy Markdown
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

Copy link
Copy Markdown
Member

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

@qlty-cloud-legacy

Copy link
Copy Markdown

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
@DefeloDefelo removed their assignment Oct 2, 2023
Sign up for freeto 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

@Tristan-H11@Defelo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 2, 2023. It is now read-only.

Feature/poll rewrite - #211

Open
ghost wants to merge 96 commits into
developfrom
feature/poll_rewrite
Open

Feature/poll rewrite#211
ghost wants to merge 96 commits into
developfrom
feature/poll_rewrite

Conversation

@ghost

@ghostghost commented Jun 27, 2022

Copy link
Copy Markdown

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
Comment threadgeneral/polls/cog.py Outdated
)
await send_alert(ctx.guild, embed)

await Poll.create(

Copy link
Copy Markdown
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

Copy link
Copy Markdown
Member

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

@qlty-cloud-legacy

Copy link
Copy Markdown

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
@DefeloDefelo removed their assignment Oct 2, 2023
Sign up for freeto 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

@Tristan-H11@Defelo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 2, 2023. It is now read-only.

Feature/poll rewrite - #211

Open
ghost wants to merge 96 commits into
developfrom
feature/poll_rewrite
Open

Feature/poll rewrite#211
ghost wants to merge 96 commits into
developfrom
feature/poll_rewrite

Conversation

@ghost

@ghostghost commented Jun 27, 2022

Copy link
Copy Markdown

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
Comment threadgeneral/polls/cog.py Outdated
)
await send_alert(ctx.guild, embed)

await Poll.create(

Copy link
Copy Markdown
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

Copy link
Copy Markdown
Member

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

@qlty-cloud-legacy

Copy link
Copy Markdown

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
@DefeloDefelo removed their assignment Oct 2, 2023
Sign up for freeto 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

@Tristan-H11@Defelo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on Oct 2, 2023. It is now read-only.

Feature/poll rewrite - #211

Open
ghost wants to merge 96 commits into
developfrom
feature/poll_rewrite
Open

Feature/poll rewrite#211
ghost wants to merge 96 commits into
developfrom
feature/poll_rewrite

Conversation

@ghost

@ghostghost commented Jun 27, 2022

Copy link
Copy Markdown

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
Comment threadgeneral/polls/cog.py Outdated
)
await send_alert(ctx.guild, embed)

await Poll.create(

Copy link
Copy Markdown
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

Copy link
Copy Markdown
Member

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

@qlty-cloud-legacy

Copy link
Copy Markdown

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
@DefeloDefelo removed their assignment Oct 2, 2023
Sign up for freeto 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

@Tristan-H11@Defelo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 2, 2023. It is now read-only.

Feature/poll rewrite - #211

Open
ghost wants to merge 96 commits into
developfrom
feature/poll_rewrite
Open

Feature/poll rewrite#211
ghost wants to merge 96 commits into
developfrom
feature/poll_rewrite

Conversation

@ghost

@ghostghost commented Jun 27, 2022

Copy link
Copy Markdown

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
Comment threadgeneral/polls/cog.py Outdated
)
await send_alert(ctx.guild, embed)

await Poll.create(

Copy link
Copy Markdown
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

Copy link
Copy Markdown
Member

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

@qlty-cloud-legacy

Copy link
Copy Markdown

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
@DefeloDefelo removed their assignment Oct 2, 2023
Sign up for freeto 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

@Tristan-H11@Defelo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 2, 2023. It is now read-only.

Feature/poll rewrite - #211

Open
ghost wants to merge 96 commits into
developfrom
feature/poll_rewrite
Open

Feature/poll rewrite#211
ghost wants to merge 96 commits into
developfrom
feature/poll_rewrite

Conversation

@ghost

@ghostghost commented Jun 27, 2022

Copy link
Copy Markdown

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
Comment threadgeneral/polls/cog.py Outdated
)
await send_alert(ctx.guild, embed)

await Poll.create(

Copy link
Copy Markdown
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

Copy link
Copy Markdown
Member

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

@qlty-cloud-legacy

Copy link
Copy Markdown

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
@DefeloDefelo removed their assignment Oct 2, 2023
Sign up for freeto 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

@Tristan-H11@Defelo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on Oct 2, 2023. It is now read-only.

Feature/poll rewrite - #211

Open
ghost wants to merge 96 commits into
developfrom
feature/poll_rewrite
Open

Feature/poll rewrite#211
ghost wants to merge 96 commits into
developfrom
feature/poll_rewrite

Conversation

@ghost

@ghostghost commented Jun 27, 2022

Copy link
Copy Markdown

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
Comment threadgeneral/polls/cog.py Outdated
)
await send_alert(ctx.guild, embed)

await Poll.create(

Copy link
Copy Markdown
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

Copy link
Copy Markdown
Member

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

@qlty-cloud-legacy

Copy link
Copy Markdown

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
@DefeloDefelo removed their assignment Oct 2, 2023
Sign up for freeto 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

@Tristan-H11@Defelo