polls get sent to all members on logon

dirty fix for the MA nanolines
There's an error with the urllib, downgrading the dependency.
This commit is contained in:
2021-09-01 14:33:33 +02:00
parent 9f1da9a00d
commit 3c8eb7bb70
4 changed files with 38 additions and 15 deletions
+14 -10
View File
@@ -3,7 +3,7 @@ import time
from core.chat_blob import ChatBlob
from core.command_param_types import Const, Any, Int
from core.decorators import instance, command, event
from modules.orgbot.org.org_roster_controller import OrgRosterController
from modules.core.accounting.services.account_service import AccountService
@instance()
@@ -16,7 +16,7 @@ class PollController:
self.job_scheduler = registry.get_instance("job_scheduler")
self.pork_service = registry.get_instance("pork_service")
self.command_alias_service = registry.get_instance("command_alias_service")
self.account_service = registry.get_instance("account_service")
self.account_service: AccountService = registry.get_instance("account_service")
def start(self):
self.db.exec("CREATE TABLE IF NOT EXISTS poll ("
@@ -155,16 +155,20 @@ class PollController:
self.check_for_finished_polls()
self.create_scheduled_jobs_for_polls()
@event(event_type=OrgRosterController.ORG_MEMBER_LOGON_EVENT,
@event(event_type="member_logon",
description="Send active polls to org members logging on")
def org_member_logon_event(self, event_type, event_data):
def poll_on_logon(self, event_type, event_data):
if self.bot.is_ready():
data = self.db.query("SELECT * FROM poll WHERE is_finished != 1 AND "
"id NOT IN (SELECT poll_id FROM poll_vote WHERE char_id = ?) "
"ORDER BY finished_at, id", [event_data.account.char_id])
if data:
row = data[0]
self.bot.send_private_message(event_data.char_id, self.show_poll_details_blob(row))
# Only proceed if the "normal" checks are fine
if not self.account_service.simple_checks(event_data.account):
return
if event_data.account.news_spam == 1:
data = self.db.query("SELECT * FROM poll WHERE is_finished != 1 AND "
"id NOT IN (SELECT poll_id FROM poll_vote WHERE char_id = ?) "
"ORDER BY finished_at, id", [event_data.account.char_id])
if data:
row = data[0]
self.bot.send_private_message(event_data.char_info.char_id, self.show_poll_details_blob(row))
def create_scheduled_jobs_for_polls(self):
data = self.db.query("SELECT * FROM poll WHERE is_finished != 1")