class search_time(Thread):
def __init__(self):
super().__init__()
self.dej = ""
self.dej2 = ""
self.dej_mutex = threading.Lock()
def run(self):
#в коде run запись в self.dej1 или self.dej2 делается строго так
if self.dej_mutex.acquire(): #если Lock уже занят вторым потоком, первый подождёт освобождения
self.dej1 = "Вася Пупкин"
self.dej2 = "Жора Золотарёв"
self.dej_mutex.release() #а теперь сами освободим Lock, чтобы второй поток мог обратиться к переменным
class runbot(Thread):
def __init__(self, st):
super().__init__()
self.st = st
def run(self):
#в коде обращение к dej1 или dej2 делается строго так
if self.st.dej_mutex.acquire(): #если Lock сейчас занят первым потоком, ждём освобождения
print(self.st.dej1, self.st.dej2) #используем переменные
self.st.dej_mutex.release() #а теперь сами освободим Lock, чтобы первый поток мог обратиться к переменным
w1 = search_time()
w1.start()
w2 = runbot(w1)
w2.start()
sum = 0
for n in range(0, X): #X - то что над знаком суммы
V = ... #выражение, зависящее от n - то что справа от знака суммы
sum += v
for line in db.query("..."):
do_something(line)
result = db.query("...")
if result is not None:
for line in result:
do_something(line)
langs = ['en-us', 'en-mc', 'en-gb', 'en-im', 'en-je', 'en-vg', 'en-ie', 'en-lu', 'sv-se', 'en-by', 'en-md', 'en-al', 'en-xk', 'en-me', 'fr-fr', 'fr-bl', 'fr-ch', 'es-es', 'it-it', 'it-sm', 'pt-pt', 'de-de', 'de-at', 'de-li', 'de-ch', 'nl-nl', 'nl-be', 'en-no', 'en-sj', 'en-fi', 'en-ax', 'en-dk', 'en-gl', 'en-is', 'ru-ru', 'pl-pl', 'bg-bg', 'cs-cz', 'el-gr', 'hu-hu', 'lt-lt', 'ro-ro', 'sk-sk', 'uk-ua', 'en-lv', 'en-rs', 'en-si', 'en-ba', 'en-cy', 'en-ee', 'en-hr', 'en-mk', 'en-mt', 'en-ph', 'en-mm', 'en-kh', 'en-mn', 'en-kz', 'en-la', 'en-za', 'en-ck', 'fr-ca', 'en-au', 'en-nz', 'es-ar', 'es-gt', 'es-do', 'es-hn', 'es-ni', 'es-pa', 'es-ec', 'es-py', 'es-ve', 'en-ae', 'en-lb', 'en-il', 'en-pk', 'id-id', 'tr-tr', 'ko-kr', 'th-th', 'en-ca', 'es-co', 'en-sg', 'zh-hk', 'zh-cn', 'en-in', 'en-bd', 'en-lk', 'en-np', 'en-mv', 'pt-br', 'es-pe', 'en-hk', 'ar', 'es-mx', 'ja-jp', 'en-my', 'vi-vn', 'zh-tw', 'en-se']
lang_pairs = { l.partition('-')[0]:l for l in langs }
#подготавливаем таблицу замены символов
transform_table = str.maketrans( { 'X': 'Z', 'Z': 'X' } )
#функция, производящая один проход преобразования строки
#input[::-1] - это строка, развернутая наоборот
#метод translate() заменяет символы согласно указанной таблице замен
def transform_once(input: str) -> str:
return input + 'X' + input[::-1].translate(transform_table)
#функция, производящая несколько проходов преобразования строки
def transform_multiple(input: str, t: int) -> str:
for _ in range(t):
input = transform_once(input)
return input
cd /opt/my_python_project && sudo -u username /opt/my_python_project/bin/python3 /opt/my_python_project/main.py
How can I distinguish a User and a GroupChat in message.chat?
Telegram Bot API support new type Chat for message.chat.
Check the type attribute in Chat object:
if message.chat.type == "private":
# private chat message
if message.chat.type == "group":
# group chat message
if message.chat.type == "supergroup":
# supergroup chat message
if message.chat.type == "channel":
# channel message