Added the option to !opt-in/opt-out [onlinebot only]
Fixed command & event threading Events are now threaded by event_type (i.e. all buddy_logon events get ran in the same one) Added default preferences Fixed recipe loading for multiple installs (i.e. on different machines)
This commit is contained in:
@@ -2,6 +2,7 @@ import inspect
|
||||
from typing import List
|
||||
|
||||
from core.decorators import instance
|
||||
from core.dict_object import DictObject
|
||||
from core.logger import Logger
|
||||
|
||||
|
||||
@@ -100,14 +101,17 @@ class AccessService:
|
||||
for access_level in self.access_levels:
|
||||
if access_level["level"] == level:
|
||||
return access_level
|
||||
return False
|
||||
self.logger.warning(f"Access to undefined Accesslevel detected: {level} - answering with rank 'None'")
|
||||
return DictObject({"label": "none", "level": 0, "handler": self.no_access})
|
||||
|
||||
def get_access_level_by_label(self, label) -> dict or bool:
|
||||
label = label.lower()
|
||||
for access_level in self.access_levels:
|
||||
if access_level["label"] == label:
|
||||
return access_level
|
||||
return False
|
||||
|
||||
self.logger.warning(f"Access to undefined Accesslevel detected: {label} - answering with rank 'None'")
|
||||
return DictObject({"label": "none", "level": 0, "handler": self.no_access})
|
||||
|
||||
def check_access(self, char, access_level_label) -> bool:
|
||||
char_id = self.character_service.resolve_char_to_id(char)
|
||||
|
||||
@@ -122,16 +122,27 @@ class AccountService:
|
||||
"Is this bot used as an alliancebot")
|
||||
self.setting_service.register_new(self.module_name, "alt_verification", False, BooleanSettingType(),
|
||||
"alts require admin verification")
|
||||
# Default preferences
|
||||
self.setting_service.register_new(self.module_name, "pref_autoinvite", False, BooleanSettingType(),
|
||||
"Default Value for the auto invite preference")
|
||||
self.setting_service.register_new(self.module_name, "pref_raidinvite", True, BooleanSettingType(),
|
||||
"Default Value for the raid invite (Massinvite) preference")
|
||||
self.setting_service.register_new(self.module_name, "pref_raidspam", True, BooleanSettingType(),
|
||||
"Default Value for the raid spam (Mass Message) preference")
|
||||
self.setting_service.register_new(self.module_name, "pref_newsspam", True, BooleanSettingType(),
|
||||
"Default Value for the news spam (News on logon) preference")
|
||||
v = self.setting_service.get_value("pref_raidspam")
|
||||
|
||||
# Ranks
|
||||
if self.setting_service.get_value("is_alliance_bot") == "1":
|
||||
self.access_service.register_access_level("officer", 80, self.check_officer)
|
||||
self.access_service.register_access_level("general", 70, self.check_general)
|
||||
self.access_service.register_access_level("president", 60, self.check_president)
|
||||
self.access_service.register_access_level("council", 40, self.check_council)
|
||||
self.access_service.register_access_level("moderator", 30, self.check_moderator)
|
||||
self.access_service.register_access_level("member", 90, self.check_member)
|
||||
self.access_service.register_access_level("admin", 20, self.check_admin)
|
||||
self.access_service.register_access_level("leader", 50, self.check_leader)
|
||||
self.access_service.register_access_level("moderator", 30, self.check_moderator)
|
||||
self.access_service.register_access_level("admin", 20, self.check_admin)
|
||||
self.access_service.register_access_level("superadmin", 10, self.check_superadmin)
|
||||
|
||||
def get_main(self, char_id) -> DictObject:
|
||||
@@ -300,19 +311,28 @@ class AccountService:
|
||||
return [self.bot.public_channel_service.org_id]
|
||||
|
||||
def create_users(self, users, disable=False) -> int:
|
||||
# Default preferences
|
||||
pref_autoinvite = self.setting_service.get_value("pref_autoinvite")
|
||||
pref_raidinvite = self.setting_service.get_value("pref_raidinvite")
|
||||
pref_raidspam = self.setting_service.get_value("pref_raidspam")
|
||||
pref_newsspam = self.setting_service.get_value("pref_newsspam")
|
||||
if type(users) == list and len(users) > 0:
|
||||
with self.db.pool.get_connection() as conn:
|
||||
with conn.cursor() as cur:
|
||||
if disable:
|
||||
cur.executemany(
|
||||
"INSERT IGNORE INTO account(char_id, main, member, disabled, last_updated, created) "
|
||||
"VALUES(?, ?, ?, 1, ?, ?) ON DUPLICATE KEY UPDATE "
|
||||
"INSERT IGNORE INTO account(char_id, main, member, disabled, last_updated, created, "
|
||||
"auto_invite, raid_invite, raid_spam, news_spam) "
|
||||
f"VALUES(?, ?, ?, 1, ?, ?, {pref_autoinvite}, {pref_raidinvite}, "
|
||||
f"{pref_raidspam}, {pref_newsspam}) ON DUPLICATE KEY UPDATE "
|
||||
"member=VALUE(member), last_updated=VALUE(last_updated), disabled=1",
|
||||
users)
|
||||
return cur.rowcount
|
||||
cur.executemany(
|
||||
"INSERT IGNORE INTO account(char_id, main, member, last_updated, created) "
|
||||
"VALUES(?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE "
|
||||
"INSERT IGNORE INTO account(char_id, main, member, last_updated, "
|
||||
"created, auto_invite, raid_invite, raid_spam, news_spam) "
|
||||
f"VALUES(?, ?, ?, ?, ?, {pref_autoinvite}, {pref_raidinvite}, "
|
||||
f"{pref_raidspam}, {pref_newsspam}) ON DUPLICATE KEY UPDATE "
|
||||
"member=VALUE(member), last_updated=VALUE(last_updated)",
|
||||
users)
|
||||
return cur.rowcount
|
||||
|
||||
Reference in New Issue
Block a user