@bot.message_handler(func=lambda message: True)
def reply_message(message):
if message.chat.type == 'private':#Если это личная переписка
if message.chat.id == 'ID админ':#Если ты админ
bot.send_message('ID чата', message.text)
from docxtpl import DocxTemplate
from datetime import date
import datetime
from docx.shared import Inches
doc = DocxTemplate("C:\\py\\sqlite\\шаблон.docx")
my_time=''
# Номер приказа
number = input ( "Номер предыдущего приказа: " )
n = int (number) + 1
# Данные ответственного
last_names = input ( 'Фамилия ответственного в род. падеже: ' )
first_names = input ( 'Имя ответственного в род. падеже: ' )
add_names = input ( 'Отчество ответственного в род. падеже: ' )
# Сокращение ИО
full_names = str (str (last_names) + ' ' + str (first_names) + ' ' + str (add_names))
short_names = str (str (last_names) + ' ' + str (first_names [0]) + '. ' + str (add_names [0]) + '.')
# Адрес магазина
address = input ( "Адрес магазина: " )
try:
import tkinter as tk
from tkinter import ttk
except ImportError:
import Tkinter as tk
import ttk
from tkcalendar import Calendar
root = tk.Tk()
s = ttk.Style(root)
s.theme_use('clam')
def example1(r=root):
top = tk.Toplevel(root)
def print_sel():
my_time = cal.get_date()
for paragraph in doc.paragraphs:
paragraph.text = paragraph.text.replace("days ", my_time)
paragraph.text = paragraph.text.replace("name", str (full_names))
paragraph.text = paragraph.text.replace("address", str (address))
paragraph.text = paragraph.text.replace("number", str (n))
paragraph.text = paragraph.text.replace("short", str (short_names))
doc.save("C:\\py\\sqlite\\11111.docx")
top.destroy()
root.destroy()
cal = Calendar(top,
font="Arial 14", selectmode='day',
cursor="hand1", year=2021, month=1, day=1)
cal.pack(fill="both", expand=True)
ttk.Button(top, text="ok", command=print_sel).pack()
ttk.Button(root, text='Календарь', command=example1).pack(padx=10, pady=10)
root.mainloop()
@bot.message_handler(content_types=['text'])
def reply_message(message):
if message.chat.type == 'private':#Если это личная переписка
if message.chat.id == 'ID админ':#Если ты админ
bot.send_message('ID чата', message.text)
пересылки сообщений
При чем имено по короткому пути
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>File Examples | Download redirect...</title> ..............</html>
def _loadFile(self):
ar = self.fileUrl.text().split('/')
if len(ar) == 0:
return
fileName = f'_{ar[len(ar) - 1]}'
print(fileName)
# _zip_2MB.zip ЛИШНИЙ ЗНАК
import os
import shutil
import subprocess
import sys
import zipfile
from multiprocessing import process
from PyQt5.QtWidgets import QApplication, QProgressBar, QWidget, QLineEdit, QPushButton, \
QVBoxLayout, QHBoxLayout
from PyQt5.QtCore import QThread, pyqtSignal
import urllib.request
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class Downloader(QThread):
# Сигнал о количестве данных (PyQt5)
preprogress = pyqtSignal(float)
progress = pyqtSignal(float)
# fileUrl - url - файла, включая сам файл
# filename - имя файла
def __init__(self, fileUrl, fileName):
QThread.__init__(self)
# Флаг инициализации
self._init = False
self.fileUrl = fileUrl
self.fileName = fileName
def run(self):
# тест на локальных данных, но работать должно и с сетью
urllib.request.urlretrieve(self.fileUrl, self.fileName, self._progress)
def _progress(self, block_num, block_size, total_size):
if not self._init:
self.preprogress.emit(total_size)
self._init = True
# Расчет текущего количества данных
downloaded = block_num * block_size
if downloaded < total_size:
# Отправляем промежуток
self.progress.emit(downloaded)
else:
# Чтобы было 100%
self.progress.emit(total_size)
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(100, 100, 600, 180)
self.setWindowTitle('GTO Games')
self.downloader = None
self.fileUrl = QLineEdit('https://www.7-zip.org/a/7za920.zip')
self.buttonga = QPushButton('Играть', self)
self.loadButton = QPushButton('Скачать', self)
self.buttonga.move(10, 10)
self.loadButton.move(10, 50)
self.unzipButton = QPushButton('Распаковать', self)
self.unzipButton.move(120, 10)
self.unzipButton.clicked.connect(self.unzipp)
self.loadButton.clicked.connect(self._loadFile)
hbox = QHBoxLayout()
hbox.addWidget(self.loadButton)
vbox = QVBoxLayout(self)
vbox.addLayout(hbox)
self.bar = QProgressBar()
vbox.addWidget(self.bar)
def initializeUI(self):
self.buttonga.clicked.connect(self.exerun)
# self.unzipButton = QPushButton('Распаковать', self)
# self.unzipButton.move(120, 10)
# self.unzipButton.clicked.connect(self.unzipp)
self.show()
def _loadFile(self):
ar = self.fileUrl.text().split('/')
if len(ar) == 0:
return
fileName = f'_{ar[len(ar) - 1]}'
print(fileName)
self._download = Downloader(self.fileUrl.text(), fileName)
# Устанавливаем максимальный размер данных
self._download.preprogress.connect(lambda x: self.bar.setMaximum(round(x)))
# Промежуточный/скачанный размер
self._download.progress.connect(lambda d: self.bar.setValue(round(d)))
self._download.start()
print("D_Start")
self.loadButton.hide()
def extract_zip(self,zip_file,extract_folder):
zf = zipfile.ZipFile(zip_file, 'r')
for _ in zf.namelist():
zf.extractall(extract_folder)
def exerun(self):
# z = zipfile.ZipFile('Mods.zip', 'w') # Создание нового архива
# for root, dirs, files in os.walk('./'): # Список всех файлов и папок в директории folder
# for file in files:
# z.write(os.path.join(root, file)) # Создание относительных путей и запись файлов в архив
#
# z.close()
args = [r".\Vintagestory.exe", "--connect=xx.xxx.xxx.xx", "--pw=9029"]
subprocess.call(args)
def extract_zip(self,zip_file,extract_folder):
zf = zipfile.ZipFile(zip_file, 'r')
for _ in zf.namelist():
zf.extractall(extract_folder)
def unzipp(self):
self.extract_zip('_7za920.zip','C://test')
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
Пришли картинку, пришли текст, а потом отправить.