Repository files navigation

Wire Poll Bot

GitHub versionCIDocker Latest buildStaging DeploymentRelease Pipeline

Wire bot for the polls. This version is based on Roman therefore does not employ E2EE directly

Service code to enable Poll bot in your team:

3131a0af-89d4-4569-b36d-50bcced4b1fb:163a422b-c314-4e34-95af-10b6b36cde18

Commands

Basic usage

  • /poll "Question" "Option 1" "Option 2" will create poll
  • /stats will send result of the latest poll in the conversation
  • /help to show help
  • /version prints the current version of the poll bot

Technologies used

Bot is using webhooks coming from Roman, for that, the bot needs to have public URL or IP address.

Usage

  • The bot needs Postgres database up & running - we use one in docker-compose.yml, to start it up, you can use command make db.
  • To run the application execute make run or ./gradlew run.
  • To run the application inside the docker compose environment run make up.

For more details see Makefile.

Docker Images

Poll bot has public docker image.

quay.io/wire/poll-bot

Tag latest is the latest release. Releases have then images with corresponding tag, so you can always roll back. Tag staging is build from the latest commit in staging branch.

Bot configuration

Configuration is currently being loaded from the environment variables.

/** * Username for the database.*/constvalDB_USER="DB_USER"/** * Password for the database.*/constvalDB_PASSWORD="DB_PASSWORD"/** * URL for the database. * * Example: * `jdbc:postgresql://localhost:5432/bot-database`*/constvalDB_URL="DB_URL"/** * Token which is used for the auth of proxy.*/constvalSERVICE_TOKEN="SERVICE_TOKEN"/** * Domain used for sending the messages from the bot to proxy eg. "https://proxy.services.zinfra.io/api"*/constvalPROXY_DOMAIN="PROXY_DOMAIN"

Via the system variables - see complete list.

Docker Compose

To run bot inside docker compose environment with default PostgreSQL database, please create .env file in the root directory with the following variables:

# database
POSTGRES_USER=
POSTGRES_PASSWORD=
POSTGRES_DB=
# application
DB_USER=
DB_PASSWORD=
DB_URL=
SERVICE_TOKEN=
PROXY_DOMAIN=

Such configuration can look for example like that:

# database
POSTGRES_USER=wire-poll-bot
POSTGRES_PASSWORD=super-secret-wire-pwd
POSTGRES_DB=poll-bot
# application
DB_USER=wire-poll-bot
DB_PASSWORD=super-secret-wire-pwd
DB_URL=jdbc:postgresql://db:5432/poll-bot
SERVICE_TOKEN=x6jsd5vets967dsA01dz1cOl
APP_KEY=eyJhbGciOiJIUzM4NCJ9.......
PROXY_DOMAIN=https://proxy.services.zinfra.io/api

About

You know... for polls

Topics

Resources

Stars

2 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, '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

Repository files navigation

Wire Poll Bot

GitHub versionCIDocker Latest buildStaging DeploymentRelease Pipeline

Wire bot for the polls. This version is based on Roman therefore does not employ E2EE directly

Service code to enable Poll bot in your team:

3131a0af-89d4-4569-b36d-50bcced4b1fb:163a422b-c314-4e34-95af-10b6b36cde18

Commands

Basic usage

  • /poll "Question" "Option 1" "Option 2" will create poll
  • /stats will send result of the latest poll in the conversation
  • /help to show help
  • /version prints the current version of the poll bot

Technologies used

Bot is using webhooks coming from Roman, for that, the bot needs to have public URL or IP address.

Usage

  • The bot needs Postgres database up & running - we use one in docker-compose.yml, to start it up, you can use command make db.
  • To run the application execute make run or ./gradlew run.
  • To run the application inside the docker compose environment run make up.

For more details see Makefile.

Docker Images

Poll bot has public docker image.

quay.io/wire/poll-bot

Tag latest is the latest release. Releases have then images with corresponding tag, so you can always roll back. Tag staging is build from the latest commit in staging branch.

Bot configuration

Configuration is currently being loaded from the environment variables.

/** * Username for the database.*/constvalDB_USER="DB_USER"/** * Password for the database.*/constvalDB_PASSWORD="DB_PASSWORD"/** * URL for the database. * * Example: * `jdbc:postgresql://localhost:5432/bot-database`*/constvalDB_URL="DB_URL"/** * Token which is used for the auth of proxy.*/constvalSERVICE_TOKEN="SERVICE_TOKEN"/** * Domain used for sending the messages from the bot to proxy eg. "https://proxy.services.zinfra.io/api"*/constvalPROXY_DOMAIN="PROXY_DOMAIN"

Via the system variables - see complete list.

Docker Compose

To run bot inside docker compose environment with default PostgreSQL database, please create .env file in the root directory with the following variables:

# database
POSTGRES_USER=
POSTGRES_PASSWORD=
POSTGRES_DB=
# application
DB_USER=
DB_PASSWORD=
DB_URL=
SERVICE_TOKEN=
PROXY_DOMAIN=

Such configuration can look for example like that:

# database
POSTGRES_USER=wire-poll-bot
POSTGRES_PASSWORD=super-secret-wire-pwd
POSTGRES_DB=poll-bot
# application
DB_USER=wire-poll-bot
DB_PASSWORD=super-secret-wire-pwd
DB_URL=jdbc:postgresql://db:5432/poll-bot
SERVICE_TOKEN=x6jsd5vets967dsA01dz1cOl
APP_KEY=eyJhbGciOiJIUzM4NCJ9.......
PROXY_DOMAIN=https://proxy.services.zinfra.io/api

About

You know... for polls

Topics

Resources

Stars

2 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, '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

Repository files navigation

Wire Poll Bot

GitHub versionCIDocker Latest buildStaging DeploymentRelease Pipeline

Wire bot for the polls. This version is based on Roman therefore does not employ E2EE directly

Service code to enable Poll bot in your team:

3131a0af-89d4-4569-b36d-50bcced4b1fb:163a422b-c314-4e34-95af-10b6b36cde18

Commands

Basic usage

  • /poll "Question" "Option 1" "Option 2" will create poll
  • /stats will send result of the latest poll in the conversation
  • /help to show help
  • /version prints the current version of the poll bot

Technologies used

Bot is using webhooks coming from Roman, for that, the bot needs to have public URL or IP address.

Usage

  • The bot needs Postgres database up & running - we use one in docker-compose.yml, to start it up, you can use command make db.
  • To run the application execute make run or ./gradlew run.
  • To run the application inside the docker compose environment run make up.

For more details see Makefile.

Docker Images

Poll bot has public docker image.

quay.io/wire/poll-bot

Tag latest is the latest release. Releases have then images with corresponding tag, so you can always roll back. Tag staging is build from the latest commit in staging branch.

Bot configuration

Configuration is currently being loaded from the environment variables.

/** * Username for the database.*/constvalDB_USER="DB_USER"/** * Password for the database.*/constvalDB_PASSWORD="DB_PASSWORD"/** * URL for the database. * * Example: * `jdbc:postgresql://localhost:5432/bot-database`*/constvalDB_URL="DB_URL"/** * Token which is used for the auth of proxy.*/constvalSERVICE_TOKEN="SERVICE_TOKEN"/** * Domain used for sending the messages from the bot to proxy eg. "https://proxy.services.zinfra.io/api"*/constvalPROXY_DOMAIN="PROXY_DOMAIN"

Via the system variables - see complete list.

Docker Compose

To run bot inside docker compose environment with default PostgreSQL database, please create .env file in the root directory with the following variables:

# database
POSTGRES_USER=
POSTGRES_PASSWORD=
POSTGRES_DB=
# application
DB_USER=
DB_PASSWORD=
DB_URL=
SERVICE_TOKEN=
PROXY_DOMAIN=

Such configuration can look for example like that:

# database
POSTGRES_USER=wire-poll-bot
POSTGRES_PASSWORD=super-secret-wire-pwd
POSTGRES_DB=poll-bot
# application
DB_USER=wire-poll-bot
DB_PASSWORD=super-secret-wire-pwd
DB_URL=jdbc:postgresql://db:5432/poll-bot
SERVICE_TOKEN=x6jsd5vets967dsA01dz1cOl
APP_KEY=eyJhbGciOiJIUzM4NCJ9.......
PROXY_DOMAIN=https://proxy.services.zinfra.io/api

About

You know... for polls

Topics

Resources

Stars

2 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, '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

Repository files navigation

Wire Poll Bot

GitHub versionCIDocker Latest buildStaging DeploymentRelease Pipeline

Wire bot for the polls. This version is based on Roman therefore does not employ E2EE directly

Service code to enable Poll bot in your team:

3131a0af-89d4-4569-b36d-50bcced4b1fb:163a422b-c314-4e34-95af-10b6b36cde18

Commands

Basic usage

  • /poll "Question" "Option 1" "Option 2" will create poll
  • /stats will send result of the latest poll in the conversation
  • /help to show help
  • /version prints the current version of the poll bot

Technologies used

Bot is using webhooks coming from Roman, for that, the bot needs to have public URL or IP address.

Usage

  • The bot needs Postgres database up & running - we use one in docker-compose.yml, to start it up, you can use command make db.
  • To run the application execute make run or ./gradlew run.
  • To run the application inside the docker compose environment run make up.

For more details see Makefile.

Docker Images

Poll bot has public docker image.

quay.io/wire/poll-bot

Tag latest is the latest release. Releases have then images with corresponding tag, so you can always roll back. Tag staging is build from the latest commit in staging branch.

Bot configuration

Configuration is currently being loaded from the environment variables.

/** * Username for the database.*/constvalDB_USER="DB_USER"/** * Password for the database.*/constvalDB_PASSWORD="DB_PASSWORD"/** * URL for the database. * * Example: * `jdbc:postgresql://localhost:5432/bot-database`*/constvalDB_URL="DB_URL"/** * Token which is used for the auth of proxy.*/constvalSERVICE_TOKEN="SERVICE_TOKEN"/** * Domain used for sending the messages from the bot to proxy eg. "https://proxy.services.zinfra.io/api"*/constvalPROXY_DOMAIN="PROXY_DOMAIN"

Via the system variables - see complete list.

Docker Compose

To run bot inside docker compose environment with default PostgreSQL database, please create .env file in the root directory with the following variables:

# database
POSTGRES_USER=
POSTGRES_PASSWORD=
POSTGRES_DB=
# application
DB_USER=
DB_PASSWORD=
DB_URL=
SERVICE_TOKEN=
PROXY_DOMAIN=

Such configuration can look for example like that:

# database
POSTGRES_USER=wire-poll-bot
POSTGRES_PASSWORD=super-secret-wire-pwd
POSTGRES_DB=poll-bot
# application
DB_USER=wire-poll-bot
DB_PASSWORD=super-secret-wire-pwd
DB_URL=jdbc:postgresql://db:5432/poll-bot
SERVICE_TOKEN=x6jsd5vets967dsA01dz1cOl
APP_KEY=eyJhbGciOiJIUzM4NCJ9.......
PROXY_DOMAIN=https://proxy.services.zinfra.io/api

About

You know... for polls

Topics

Resources

Stars

2 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, '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

Repository files navigation

Wire Poll Bot

GitHub versionCIDocker Latest buildStaging DeploymentRelease Pipeline

Wire bot for the polls. This version is based on Roman therefore does not employ E2EE directly

Service code to enable Poll bot in your team:

3131a0af-89d4-4569-b36d-50bcced4b1fb:163a422b-c314-4e34-95af-10b6b36cde18

Commands

Basic usage

  • /poll "Question" "Option 1" "Option 2" will create poll
  • /stats will send result of the latest poll in the conversation
  • /help to show help
  • /version prints the current version of the poll bot

Technologies used

Bot is using webhooks coming from Roman, for that, the bot needs to have public URL or IP address.

Usage

  • The bot needs Postgres database up & running - we use one in docker-compose.yml, to start it up, you can use command make db.
  • To run the application execute make run or ./gradlew run.
  • To run the application inside the docker compose environment run make up.

For more details see Makefile.

Docker Images

Poll bot has public docker image.

quay.io/wire/poll-bot

Tag latest is the latest release. Releases have then images with corresponding tag, so you can always roll back. Tag staging is build from the latest commit in staging branch.

Bot configuration

Configuration is currently being loaded from the environment variables.

/** * Username for the database.*/constvalDB_USER="DB_USER"/** * Password for the database.*/constvalDB_PASSWORD="DB_PASSWORD"/** * URL for the database. * * Example: * `jdbc:postgresql://localhost:5432/bot-database`*/constvalDB_URL="DB_URL"/** * Token which is used for the auth of proxy.*/constvalSERVICE_TOKEN="SERVICE_TOKEN"/** * Domain used for sending the messages from the bot to proxy eg. "https://proxy.services.zinfra.io/api"*/constvalPROXY_DOMAIN="PROXY_DOMAIN"

Via the system variables - see complete list.

Docker Compose

To run bot inside docker compose environment with default PostgreSQL database, please create .env file in the root directory with the following variables:

# database
POSTGRES_USER=
POSTGRES_PASSWORD=
POSTGRES_DB=
# application
DB_USER=
DB_PASSWORD=
DB_URL=
SERVICE_TOKEN=
PROXY_DOMAIN=

Such configuration can look for example like that:

# database
POSTGRES_USER=wire-poll-bot
POSTGRES_PASSWORD=super-secret-wire-pwd
POSTGRES_DB=poll-bot
# application
DB_USER=wire-poll-bot
DB_PASSWORD=super-secret-wire-pwd
DB_URL=jdbc:postgresql://db:5432/poll-bot
SERVICE_TOKEN=x6jsd5vets967dsA01dz1cOl
APP_KEY=eyJhbGciOiJIUzM4NCJ9.......
PROXY_DOMAIN=https://proxy.services.zinfra.io/api

About

You know... for polls

Topics

Resources

Stars

2 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, '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

Repository files navigation

Wire Poll Bot

GitHub versionCIDocker Latest buildStaging DeploymentRelease Pipeline

Wire bot for the polls. This version is based on Roman therefore does not employ E2EE directly

Service code to enable Poll bot in your team:

3131a0af-89d4-4569-b36d-50bcced4b1fb:163a422b-c314-4e34-95af-10b6b36cde18

Commands

Basic usage

  • /poll "Question" "Option 1" "Option 2" will create poll
  • /stats will send result of the latest poll in the conversation
  • /help to show help
  • /version prints the current version of the poll bot

Technologies used

Bot is using webhooks coming from Roman, for that, the bot needs to have public URL or IP address.

Usage

  • The bot needs Postgres database up & running - we use one in docker-compose.yml, to start it up, you can use command make db.
  • To run the application execute make run or ./gradlew run.
  • To run the application inside the docker compose environment run make up.

For more details see Makefile.

Docker Images

Poll bot has public docker image.

quay.io/wire/poll-bot

Tag latest is the latest release. Releases have then images with corresponding tag, so you can always roll back. Tag staging is build from the latest commit in staging branch.

Bot configuration

Configuration is currently being loaded from the environment variables.

/** * Username for the database.*/constvalDB_USER="DB_USER"/** * Password for the database.*/constvalDB_PASSWORD="DB_PASSWORD"/** * URL for the database. * * Example: * `jdbc:postgresql://localhost:5432/bot-database`*/constvalDB_URL="DB_URL"/** * Token which is used for the auth of proxy.*/constvalSERVICE_TOKEN="SERVICE_TOKEN"/** * Domain used for sending the messages from the bot to proxy eg. "https://proxy.services.zinfra.io/api"*/constvalPROXY_DOMAIN="PROXY_DOMAIN"

Via the system variables - see complete list.

Docker Compose

To run bot inside docker compose environment with default PostgreSQL database, please create .env file in the root directory with the following variables:

# database
POSTGRES_USER=
POSTGRES_PASSWORD=
POSTGRES_DB=
# application
DB_USER=
DB_PASSWORD=
DB_URL=
SERVICE_TOKEN=
PROXY_DOMAIN=

Such configuration can look for example like that:

# database
POSTGRES_USER=wire-poll-bot
POSTGRES_PASSWORD=super-secret-wire-pwd
POSTGRES_DB=poll-bot
# application
DB_USER=wire-poll-bot
DB_PASSWORD=super-secret-wire-pwd
DB_URL=jdbc:postgresql://db:5432/poll-bot
SERVICE_TOKEN=x6jsd5vets967dsA01dz1cOl
APP_KEY=eyJhbGciOiJIUzM4NCJ9.......
PROXY_DOMAIN=https://proxy.services.zinfra.io/api

About

You know... for polls

Topics

Resources

Stars

2 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, '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

Repository files navigation

Wire Poll Bot

GitHub versionCIDocker Latest buildStaging DeploymentRelease Pipeline

Wire bot for the polls. This version is based on Roman therefore does not employ E2EE directly

Service code to enable Poll bot in your team:

3131a0af-89d4-4569-b36d-50bcced4b1fb:163a422b-c314-4e34-95af-10b6b36cde18

Commands

Basic usage

  • /poll "Question" "Option 1" "Option 2" will create poll
  • /stats will send result of the latest poll in the conversation
  • /help to show help
  • /version prints the current version of the poll bot

Technologies used

Bot is using webhooks coming from Roman, for that, the bot needs to have public URL or IP address.

Usage

  • The bot needs Postgres database up & running - we use one in docker-compose.yml, to start it up, you can use command make db.
  • To run the application execute make run or ./gradlew run.
  • To run the application inside the docker compose environment run make up.

For more details see Makefile.

Docker Images

Poll bot has public docker image.

quay.io/wire/poll-bot

Tag latest is the latest release. Releases have then images with corresponding tag, so you can always roll back. Tag staging is build from the latest commit in staging branch.

Bot configuration

Configuration is currently being loaded from the environment variables.

/** * Username for the database.*/constvalDB_USER="DB_USER"/** * Password for the database.*/constvalDB_PASSWORD="DB_PASSWORD"/** * URL for the database. * * Example: * `jdbc:postgresql://localhost:5432/bot-database`*/constvalDB_URL="DB_URL"/** * Token which is used for the auth of proxy.*/constvalSERVICE_TOKEN="SERVICE_TOKEN"/** * Domain used for sending the messages from the bot to proxy eg. "https://proxy.services.zinfra.io/api"*/constvalPROXY_DOMAIN="PROXY_DOMAIN"

Via the system variables - see complete list.

Docker Compose

To run bot inside docker compose environment with default PostgreSQL database, please create .env file in the root directory with the following variables:

# database
POSTGRES_USER=
POSTGRES_PASSWORD=
POSTGRES_DB=
# application
DB_USER=
DB_PASSWORD=
DB_URL=
SERVICE_TOKEN=
PROXY_DOMAIN=

Such configuration can look for example like that:

# database
POSTGRES_USER=wire-poll-bot
POSTGRES_PASSWORD=super-secret-wire-pwd
POSTGRES_DB=poll-bot
# application
DB_USER=wire-poll-bot
DB_PASSWORD=super-secret-wire-pwd
DB_URL=jdbc:postgresql://db:5432/poll-bot
SERVICE_TOKEN=x6jsd5vets967dsA01dz1cOl
APP_KEY=eyJhbGciOiJIUzM4NCJ9.......
PROXY_DOMAIN=https://proxy.services.zinfra.io/api

About

You know... for polls

Topics

Resources

Stars

2 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, '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

Repository files navigation

Wire Poll Bot

GitHub versionCIDocker Latest buildStaging DeploymentRelease Pipeline

Wire bot for the polls. This version is based on Roman therefore does not employ E2EE directly

Service code to enable Poll bot in your team:

3131a0af-89d4-4569-b36d-50bcced4b1fb:163a422b-c314-4e34-95af-10b6b36cde18

Commands

Basic usage

  • /poll "Question" "Option 1" "Option 2" will create poll
  • /stats will send result of the latest poll in the conversation
  • /help to show help
  • /version prints the current version of the poll bot

Technologies used

Bot is using webhooks coming from Roman, for that, the bot needs to have public URL or IP address.

Usage

  • The bot needs Postgres database up & running - we use one in docker-compose.yml, to start it up, you can use command make db.
  • To run the application execute make run or ./gradlew run.
  • To run the application inside the docker compose environment run make up.

For more details see Makefile.

Docker Images

Poll bot has public docker image.

quay.io/wire/poll-bot

Tag latest is the latest release. Releases have then images with corresponding tag, so you can always roll back. Tag staging is build from the latest commit in staging branch.

Bot configuration

Configuration is currently being loaded from the environment variables.

/** * Username for the database.*/constvalDB_USER="DB_USER"/** * Password for the database.*/constvalDB_PASSWORD="DB_PASSWORD"/** * URL for the database. * * Example: * `jdbc:postgresql://localhost:5432/bot-database`*/constvalDB_URL="DB_URL"/** * Token which is used for the auth of proxy.*/constvalSERVICE_TOKEN="SERVICE_TOKEN"/** * Domain used for sending the messages from the bot to proxy eg. "https://proxy.services.zinfra.io/api"*/constvalPROXY_DOMAIN="PROXY_DOMAIN"

Via the system variables - see complete list.

Docker Compose

To run bot inside docker compose environment with default PostgreSQL database, please create .env file in the root directory with the following variables:

# database
POSTGRES_USER=
POSTGRES_PASSWORD=
POSTGRES_DB=
# application
DB_USER=
DB_PASSWORD=
DB_URL=
SERVICE_TOKEN=
PROXY_DOMAIN=

Such configuration can look for example like that:

# database
POSTGRES_USER=wire-poll-bot
POSTGRES_PASSWORD=super-secret-wire-pwd
POSTGRES_DB=poll-bot
# application
DB_USER=wire-poll-bot
DB_PASSWORD=super-secret-wire-pwd
DB_URL=jdbc:postgresql://db:5432/poll-bot
SERVICE_TOKEN=x6jsd5vets967dsA01dz1cOl
APP_KEY=eyJhbGciOiJIUzM4NCJ9.......
PROXY_DOMAIN=https://proxy.services.zinfra.io/api

About

You know... for polls

Topics

Resources

Stars

2 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages