2024-12-18 18:51:34 +02:00
'''
This module stores config and states
'''
from loguru import logger
from collections import Counter
import os
import sys
import json
is_termux = os . environ . get ( ' TERMUX_APP__PACKAGE_NAME ' ) or os . environ . get ( ' TERMUX_APK_RELEASE ' )
if is_termux :
logger . info ( ' Termux detected, checking permissions... ' )
logger . info ( ' If you want prevent killing termux by android, get wake lock: check your notifications, find termux app and press " ACQUIRE WAKELOCK " ' )
logger . warning ( ' This can cause battery drain! ' )
if ( os . environ . get ( ' TERMUX_APP__APK_RELEASE ' ) or os . environ . get ( ' TERMUX_APK_RELEASE ' ) ) not in ( ' F_DROID ' , ' GITHUB ' ) :
logger . warning ( ' You use not f-droid/github apk release, it may have problems... ' )
logger . warning ( ' F-droid termux release here: https://f-droid.org/en/packages/com.termux/ ' )
logger . warning ( ' Github termux release here: https://github.com/termux/termux-app/releases ' )
if float ( os . environ . get ( ' TERMUX_VERSION ' ) [ : 5 ] ) < 0.118 :
logger . warning ( ' You use old version of termux, highly recommended that you update to v0.118.0 or higher ASAP for various bug fixes, including a critical world-readable vulnerability ' )
if os . access ( ' /sdcard ' , os . W_OK ) :
logger . success ( ' permission to write on internal storage allowed ' )
else :
logger . warning ( ' permission denied to write on internal storage ' )
logger . info ( ' trying get permission... ' )
os . system ( ' termux-setup-storage ' )
logger . info ( ' Restart termux [Press CTRL+D or command " exit " ] ' )
sys . exit ( 0 )
# Название сессии
sessdb = ' tl-ub '
2024-12-18 21:52:56 +02:00
avocado_id = 6333102398
2024-12-18 18:51:34 +02:00
default_directory = ' '
default_config_file_path = ' config.json '
treat_as_true = ( ' true ' , ' 1 ' , ' t ' , ' y ' , ' yes ' , ' yeah ' , ' yup ' , ' certainly ' , ' uh-huh ' )
if is_termux :
default_directory = ' /sdcard/ub4tg '
os . system ( f ' mkdir -p { default_directory } ' )
default_config_file_path = f ' { default_directory } /config.json '
if not os . path . exists ( default_config_file_path ) :
logger . info ( ' config not found, first launch setup... ' )
api_id = int ( input ( ' enter api_id from https://my.telegram.org/ : ' ) )
api_hash = input ( ' enter api_hash from https://my.telegram.org/ : ' )
timezone = input ( ' enter timezone, format is Country/City: ' )
db_pymysql = False
db_sqlite3 = True
a_h = input ( ' enable automatic use medkit? [y/n]: ' ) . lower ( ) in treat_as_true
a_404_patient = input ( ' enable automatic bioeb if victim not found or expired? It will be trigger on " Жертва не найдена " [y/n]: ' ) . lower ( ) in treat_as_true
automine = input ( ' enable automatic mining of gems? [y/n]: ' ) . lower ( ) in treat_as_true
new_config = { ' api_id ' : api_id ,
' api_hash ' : api_hash ,
' timezone ' : timezone ,
' db_pymysql ' : db_pymysql ,
' db_sqlite3 ' : db_sqlite3 ,
' a_h ' : a_h ,
' a_404_patient ' : a_404_patient ,
' automine ' : automine }
with open ( default_config_file_path , " w " ) as configfile :
json . dump ( new_config , configfile , indent = 4 )
with open ( default_config_file_path , " r " ) as configfile :
from types import SimpleNamespace
default_params = { ' api_id ' : ' 1 ' ,
' api_hash ' : ' test ' ,
' timezone ' : ' Etc/UTC ' ,
' db_pymysql ' : False ,
' db_sqlite3 ' : True ,
' a_h ' : True ,
' a_404_patient ' : True ,
' automine ' : True }
cnf_dict = json . load ( configfile )
for i in default_params . keys ( ) :
if cnf_dict . get ( i ) is None :
default_val = default_params [ i ]
cnf_dict [ i ] = default_val
logger . warning ( f ' { i } in config not found, using defalt value { default_val } ' )
config = SimpleNamespace ( * * cnf_dict )
logger . debug ( ' config loaded ' )
# Api ID и Api Hash полученные на my.telegram.org
api_id = config . api_id
api_hash = config . api_hash
timezone = config . timezone
db_pymysql = config . db_pymysql
db_sqlite3 = config . db_sqlite3
a_h = config . a_h
a_404_patient = config . a_404_patient
class states :
auto_bioeb_sleep_interval = ( 6 , 66 ) # the default on (re)start
auto_bioeb_pathogen_threshold = 5 # these pathogens will be saved +- 1
auto_bioeb_min_interval = ( 0.666 , 3.666 ) # for fast leak pathogen
auto_bioeb_max_interval = ( 71 , 121 ) # waiting for more pathogen
# Default strategy mean: you have 4-5 pathogens when auto bioeb is enabled, pathogen overflow reduced
auto_bioeb_stop = True
where_send_check_avocado = None
last_sent_bioeb = 0 # for measure time between reply avocado and bioeb
last_reply_bioeb_avocado = 0 # same as above
avocado_reply_timeout = 3 # increase interval if lag more than this timeout in secs
automine_enabled = config . automine
latest_successfull_mine = None
wait_before_next_mine = None
stats_medkit = 0
stats_most_infect_spam_chats = Counter ( )