...
def get_subscriptions(self, status = True):
with self.connection:
return [x[0] for x in self.cursor.execute("SELECT user_id FROM `subscriptions` WHERE `status` = ?", (status,)).fetchall()]
@dp.message_handler(commands=['go'])
async def go(message: types.Message):
subscriptions = db.get_subscriptions()
for user in subscriptions:
await bot.send_message(user, "...")
df.groupby(df['Phrase'].str.lower().str.extract(r"(\w+)", expand=False)).sum()
user_status = {}
@bot.message_handler ...
def process_something(message):
if user_status.get(message.from_user.id, 0) == 0:
user_status[message.from_user.id] == 1
start_our_process()
@bot.message_handler(regexp=r"/\w\d+")
def get_info(message):
user_type = message.text[1:2]
user_num = int(message.text[2:])
print(user_type, user_num)
bot.send_message(message.chat.id, f'ты запросил {user_type} - {user_num}')
...
for plate in plates:
x, y, w, h = plate
centreX = int((x + (x + w)) / 2)
...
data = [80,125,0]
with open("newfile.txt", "w") as f:
f.writelines((f"{x}\n" for x in data))
data = [80,125,0]
with open("newfile.txt", "w") as f:
f.write("\n".join(map(str, data)))
data = [80,125,0]
with open("newfile.txt", "w") as f:
print(*data, file=f, sep='\n')
@bot.message_handler(commands=['start', 'help'])
def send_welcome(message):
msg = bot.send_message(message.chat.id, "Введите ваши Фамилию, Имя, Отчество")
bot.register_next_step_handler(msg, send_phone)
def send_phone(message):
# в message.text будет содержаться ФИО пользователя, т.к. сюда мы пришли из send_welcome
# их и надо записать в словарь данных, первый раз с созданием нового пользователя
user_data[message.from_user.id] = User(message.text)
msg = bot.send_message(message.chat.id, "Введите ваш номер телефона:")
bot.register_next_step_handler(msg, send_dog)
def send_dog(message):
# на этом этапе пользователь уже создан, просто дополняем информацию (на данном этапе это номер телефона)
user_data[message.from_user.id].phone_number = message.text
msg = bot.send_message(message.chat.id, "Как зовут вашего питомца?")
bot.register_next_step_handler(msg, send_breed_dog)
# аналогично с последующими шагами. нужно сохранять переданные пользователем данные
# и на последнем этапе просто достаем всю информацию по пользователю
def process_lastname_step(message):
try:
user_id = message.from_user.id
user = user_data[user_id]
# все эти присваивания user.phone_number уже не нужны, информация итак есть в user (т.к. это экземпляр класса User), используем ее напрямую
#user.first_name = message.text
#user.phone_namber = message.text
#user.dog = message.text
#user.breed_dog = message.text
#user.club_name = message.text
#user.club_namber = message.text
sql = "INSERT INTO users (first_name, phone_namber, dog, breed_dog, club_name, club_namber, user_id ) VALUES (%s, %s, %s, %s ,%s , %s, %s)"
val = (user.first_name, user.phone_namber, user.dog, user.breed_dog, user.club_name, user.club_namber, user_id)
cursor.execute(sql, val)
...
if ord(text[i + j]) - ord(elems[-1][-1]) < 2
text = ...
text_len = len(text)
max_len = 0
max_idx = 0
seq_idx = 0
prev = 0
for i, x in enumerate(text):
if ord(x) < prev:
seq_len = i-seq_idx
if seq_len > max_len:
max_len = seq_len
max_idx = seq_idx
seq_idx = i
elif i==text_len-1:
seq_len = i-seq_idx+1
if seq_len > max_len:
max_len = seq_len
max_idx = seq_idx
prev = ord(x)
print(max_len, text[max_idx:max_idx+max_len])
@bot.message_handler(commands=['search'])
def search(message):
if ' ' in message.text:
param = message.text.split(maxsplit=1)[1]
...
else:
bot.send_message(message.chat.id, 'no params')
/search XXX
# на верхнем уровне объявляем наш словарь
wind_info = {}
...
elif w1 > 33:
w_info = 'Огромные разрушения, серьезно повреждены здания, строения и дома, деревья вырваны с корнями, растительность уничтожена.'
# после определения w_info заносим эти данные в наш словарь
wind_info[message.text] = w_info # т.к. message.text это наш город (вообще хорошо бы его сразу в отдельную переменную выделять, так код проще читается)
item_wind = types.InlineKeyboardButton(text = 'Ветер', callback_data = f'wind_{message.text}')
elif call.data == 'wind':
elif call.data.startswith('wind'):
# извлекаем название города
city = call.data.split('_',1)[1]
# и берем нашу информацию из словаря данных по ветру
w_info = wind_info[city]
bot.send_message(call.message.chat.id, w_info)
def get_top_surviveds(self, limit=3):
with self.connection:
return self.cursor.execute("SELECT * FROM stats ORDER BY survived desc LIMIT ?", (limit, )).fetchall()
# тестовые данные, 2 загрузки
d1 = [[1016, '2', 141, 0], [1017, '2', 22341, 0], [1018, '2', 1109, 0], [1019, '2', 517, 0], [1020, '2', 443, 0], [1021, '2', 1701, 0], [1022, '2', 1604, 0], [1023, '2', 295, 0]]
d2 = [[1021, '2', 1701, 0], [1022, '2', 1604, 0], [1023, '2', 295, 0], [1027, '2', 1933, 0], [1029, '2', 398, 0]]
load_data = [d1, d2]
all_data = []
last_id = 0
for data in load_data:
for row in data:
if row[0] > last_id:
all_data.append(row)
last_id = row[0]
class SQLighter:
def __init__(self, database):
self.connection = sqlite3.connect(database, check_same_thread = False)
self.connection.row_factory = sqlite3.Row # этой строкой указываем, что результат получаем в виде словаря
self.cursor = self.connection.cursor()
self.cursor.execute("CREATE TABLE IF NOT EXISTS stats (user_id INT, user_name TEXT, survived INT, infected INT)")
...
# и можно сделать такую функцию, возвращающую всю информацию пользователя
def get_info(self, id):
with self.connection:
return self.cursor.execute("SELECT * FROM stats WHERE user_id=?", (id, )).fetchone()
sql_lighter = SQLighter("database.db")
sql_lighter.add_user(982543922, "Владимир", 1, 1)
# затем получаем весь словарь данных и можем использовать любые нужные поля из него
data = sql_lighter.get_info(982543922)
print(data)
print(data['user_name'])
print("Информация пользователя {}: имя: {}, survived: {}, infected: {}".format(data['user_id'], data['user_name'], data['survived'], data['infected']))
with codecs.open('intents.json', encoding='utf-8') as f:
intents = json.load(f)
import time
import pytesseract
from PIL import Image, ImageGrab
pytesseract.pytesseract.tesseract_cmd = "C:\Program Files (x86)\Tesseract-OCR/tesseract.exe"
tessdata_dir_config = r'--tessdata-dir "C:\Program Files (x86)\Tesseract-OCR\tessdata"'
time.sleep(10)
while True:
try:
time.sleep(4)
# просто считываем с экрана и напрямую распознаем
img = ImageGrab.grab(bbox=(713,550,1400,586))
text = pytesseract.image_to_string(img, lang='rus', config=tessdata_dir_config)
...
import pytesseract
filename = 'Image.png'
pytesseract.pytesseract.tesseract_cmd = "C:\Program Files (x86)\Tesseract-OCR/tesseract.exe"
tessdata_dir_config = r'--tessdata-dir "C:\Program Files (x86)\Tesseract-OCR\tessdata"'
img = Image.open(filename)
text = pytesseract.image_to_string(img, lang= 'rus', config=tessdata_dir_config)
Как найти наименьшее отрицательное значение?
Все работает, кроме нахождения наименьшего отрицательного элемента
if a[i]<0:
res+=[i]
for n in a:
if n<0:
...