Send text messages.
То есть
(отправляет текстовое сообщение)
chat_id (int | str) – Unique identifier (int) or username (str) of the target chat. For your personal cloud (Saved Messages) you can simply use “me” or “self”. For a contact that exists in your Telegram address book you can use his phone number (str).
Или же
(chat_id (int | str) — уникальный идентификатор (int) или имя пользователя (str) целевого чата. Для вашего личного облака (сохраненных сообщений) вы можете просто использовать «me» или «self». Для контакта, который существует в вашей адресной книге Telegram, вы можете использовать его номер телефона (str))
В самое первое — название параметра далее в скобках тип данных. "|" - это "или", "либо". Если в скобках есть оptional, то это значит что этот аргумент не обязательный.
И последнее - описание.
text (str) – Text of the message to be sent.
text (str) – Текст отправляемого сообщения.
await app.send_message(chat_id, "text")
await. Если вы новичок - то просто ставьте перед методами await и все, а если вы уже что-то знаете, то объяснять не надо)Самые внимательные заметили, что в документации крок Available Methods есть еще Bound Methods (Связанные методы)
Их фишка в том, что это методы сообщений которые мы получаем из хендлера (параметр
msg). Например, чтобы изменить сообщение, не обязательно писатьapp.edit-бла-бла-бла, а можно просто msg.edit(). В него просто передаем строку и готово!
Теперь вспоминаем все что учили и соберём знания вместе. Сделаем так, чтобы при написании команды .start сообщение изменялось на Python Pyrogram!
from pyrogram import Client, filters
app = Client("UserBot", 123, "abc")
@app.on_message(filters.command(["start"], prefixes=".") & filters.me)
async def start(_, msg):
await msg.edit("Python Pyrogram!")
app.run()
Сегодня мы научились работать с документацией, и научились изменять сообщения. А в следующем посте научимся получать из сообщения данные - его текст, отправитель, и тп.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤4👍3
@app.on_message(filters.command(["start"], prefixes="."))
async def start(_, msg):
print(msg)
id, text, from_user, chat reply_to_message(сообщение на которое ответили).➖msg.text
➖msg.chat.id
➖msg.reply_to_message.date
@app.on_message(filters.chat([123,456]) & filters.new_chat_members)
async def welcome(_, msg):
new_members = [u.mention for u in msg.new_chat_members]
text = 'Привет, ' + ", ".join(new_members) + "!"
await msg.reply(text, True disable_web_page_preview=True)
[123,456])И тут начинается самое то, что нас интересует
mention - имя с ссылкой. Мы научились доставать данные из сообщения и вспомнили фильтры с обработчиками. Надеюсь это серия постов вам понравилась.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍5🔥1
Функция .upper() в Python используется для преобразования всех символов в строке в верхний регистр. Это очень полезно, когда вы хотите сравнить строки без учета регистра или обеспечить единообразие ввода данных. Пример использования:
text = 'Hello, World!'
print(text.upper()) # Вывод: 'HELLO, WORLD!'
С другой стороны, функция .lower() преобразует все символы строки в нижний регистр. Это также может быть полезно при сравнении строк или обеспечении единообразия ввода. Пример использования:
text = 'Hello, World!'
print(text.lower()) # Вывод: 'hello, world!'
Функции .upper() и .lower() часто используются вместе для обеспечения единообразия ввода и процесса обработки данных. Например, вы можете преобразовать ввод пользователя в нижний регистр перед проверкой его в словаре, где все ключи хранятся в нижнем регистре. Таким образом, вы можете быть уверены, что ваш код будет работать независимо от того, как пользователь ввел данные.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍5🔥1
Forwarded from IT memer
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣37😢4❤3👍1😁1
>>> import numpy as np
zeros((n, m)) - создает массив нулей с размером n x m.>>> np.zeros((3, 2))
array([[0., 0.],
[0., 0.],
[0., 0.]])
ones((n, m)) - создает массив единиц с размером n x m.>>> np.ones((2, 3))
array([[1., 1., 1.],
[1., 1., 1.]])
>>> np.ones((2, 2), dtype=np.int16)
array([[1, 1],
[1, 1]], dtype=int16)
empty() - создает массив без заполнения. Исходное содержимое случайно и зависит от состояния памяти на момент создания массива (мусор, что в ней хранится).>>> np.empty((2,2))
array([[5.e-324, 0.e+000],
[0.e+000, 5.e-324]])
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4🔥2
python manage.py makemigrations, которая создаст файл миграции в папке migrations вашего приложения.python manage.py migrate, которая применит все необходимые изменения к базе данных. При этом Django будет автоматически отслеживать и применять новые миграции при изменениях в моделях.python manage.py makemigrations --empty, чтобы определить свои собственные изменения в базе данных.Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4🔥3
Кроме того, производительность в большей степени зависит от архитектуры и качества кода конкретного приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤4🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤6🔥2
Прежде чем начать вставку внешних ключей, необходимо подготовить базу данных и создать таблицы, между которыми мы будем устанавливать связи. Рассмотрим простой пример двух таблиц:
authors и books. Таблица authors будет содержать информацию об авторах, а таблица books - информацию о книгах, написанных этими авторами. Для начала создадим эти таблицы с использованием языка SQL.CREATE TABLE authors (
author_id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
CREATE TABLE books (
book_id SERIAL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
author_id INT,
FOREIGN KEY (author_id) REFERENCES authors (author_id)
);
Теперь, когда наша база данных готова, мы можем перейти к вставке данных и внешних ключей с помощью Python. Для этого нам понадобится библиотека
psycopg2, которая позволяет взаимодействовать с PostgreSQL базой данных. Убедитесь, что она установлена:pip install psycopg2
Далее, напишем скрипт на Python, который будет вставлять данные в таблицы
authors и books, устанавливая соответствующие внешние ключи.import psycopg2
# Соединение с базой данных
conn = psycopg2.connect(
dbname="your_db_name",
user="your_db_user",
password="your_db_password",
host="your_db_host",
port="your_db_port"
)
cursor = conn.cursor()
# Вставка данных в таблицу authors
cursor.execute("INSERT INTO authors (name) VALUES (%s) RETURNING author_id", ("J.K. Rowling",))
author_id = cursor.fetchone()[0]
#Вставка данных в таблицу books с указанием внешнего ключа
cursor.execute("INSERT INTO books (title, author_id) VALUES (%s, %s)", ("Harry Potter", author_id))
# Сохранение изменений и закрытие соединения
conn.commit()
cursor.close()
conn.close()
Внешние ключи помогают поддерживать целостность данных в базе данных. Например, они не позволяют вставлять в таблицу
books значения author_id, которых нет в таблице authors. Рассмотрим, как это работает на практике. Попробуем вставить книгу с несуществующим author_id и посмотрим, что произойдет.try:
cursor.execute("INSERT INTO books (title, author_id) VALUES (%s, %s)", ("Unknown Book", 999))
conn.commit()
except psycopg2.IntegrityError as e:
conn.rollback()
print("Ошибка целостности данных: невозможно вставить книгу с несуществующим автором.")
В данном случае
psycopg2 выбросит исключение IntegrityError, и мы сможем обработать его, откатив изменения и предупредив пользователя об ошибке.Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤6🔥4
🤨9👍7🤓5❤2
// —> целочисленное деление
.count —> считает количество повторений текста/символа в строке
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤5🤓4🔥3
➕Поддерживает асинхронное программирование, что позволяет эффективно обрабатывать множество запросов без блокирования основного потока.
➕Хорошо документирована и имеет большое сообщество разработчиков.
➕Предоставляет обширный набор функций для работы с Telegram API.
➖Деплоится не на всех бесплатных сервисах.
➕Простой в использовании и понимании, особенно для новичков в разработке телеграм-ботов.
➕Хорошо документирована и имеет активное сообщество разработчиков.
➕Предоставляет обширный набор функций для работы с Telegram API.
➖Не поддерживает асинхронное программирование, поэтому может быть неэффективным при обработке большого количества запросов одновременно.
➖Из-за синхронного подхода может возникать блокирование основного потока при выполнении долгих операций.
➕Простой в использовании и понимании.
➕Хорошо документирована и имеет небольшое, но активное сообщество разработчиков.
➕Предоставляет обширный набор функций для работы с Telegram API.
➖Не поддерживает асинхронное программирование, поэтому может быть неэффективным при обработке большого количества запросов одновременно.
➖Некоторые функции могут быть менее гибкими или сложными в использовании по сравнению с другими библиотеками.
➕Простой в использовании и понимании, особенно для новичков в разработке телеграм-ботов.
➕Хорошо документирована и имеет некоторые примеры использования.
➕Предоставляет базовый набор функций для работы с Telegram API.
➖Ограничена в функциональности и не предоставляет некоторые продвинутые возможности, доступные в других библиотеках.
➖Неактивно поддерживается и может быть устаревшей.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤5🔥3
Это встроенная библиотека Python, которая предоставляет интерфейс для механизма импорта. С ее помощью вы можете программно импортировать модули, перезагружать их и даже создавать свои собственные импортеры!
import importlib
# Динамический импорт модуля
math = importlib.import_module('math')
# Использование импортированного модуля
print(math.pi) # Выводит 3.141592653589793
# Перезагрузка модуля
importlib.reload(math)
• Динамически импортировать модули
• Перезагружать модули во время выполнения
• Создавать пользовательские импортеры
• Работать с пространствами имен пакетов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤5🔥5
import difflib
# Две строки для сравнения
string1 = "Привет, как дела?"
string2 = "Привет, как у тебя дела?"
# Используем SequenceMatcher для получения отличий
d = difflib.Differ()
diff = d.compare(string1.split(), string2.split())
# Вывод различий
print('\n'.join(diff))
Мы используем
difflib.Differ() для сравнения двух строк, разбивая их на слова.Метод compare возвращает итератор, который показывает различия между строками.- Результат отображает изменения с символами:
-
– если слова одинаковые,-
- – если слово присутствует только в первой строке,-
+ – если слово присутствует только во второй строке.Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍4🔥3
Она упрощает автоматизацию задач, которые требуют вызова командной строки из\ кода. Это может быть запуск скриптов, утилит, вызов программ для обработки данных и т. д.
— Удобный синтаксис для запуска команд и программ из Python кода. Позволяет вызывать команды командной строки так же просто, как обычные функции.
— Автоматическое формирование командной строки. Можно передавать аргументы и параметры в виде обычных переменных,
Plumbum сам сформирует командную строку.— Перенаправление ввода/вывода. Поддержка стандартных операторов Unix для работы с потоками данных.
— Проверка кодов возврата и обработка ошибок.
— Локальное или удаленное выполнение. Возможность запускать команды как локально, так и по SSH на удаленных хостах.
from plumbum import local
ls = local["ls"]
output = ls("-l")
print("Вывод команды 'ls -l':")
print(output)
# Также можно выполнять составные команды
# Например, мы можем использовать команду `grep` для фильтрации вывода
grep = local["grep"]
result = (ls("-l") | grep[".py"])() # Пайпим вывод ls в grep
print("\nВывод файлов с расширением .py:")
print(result)
local из модуля plumbum.ls с помощью local["ls"].-l, который выводит содержимое текущей директории в длинном формате.output и затем печатаем.grep и используем возможность пайпинга (|) для фильтрации вывода команды ls, чтобы показать только файлы с расширением .py.Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍3🔥3
import eel
eel.init('web')
@eel.expose
def say_hello(x):
print('Hello %s' % x)
eel.say_hello('World')
eel.start('index.html')
Декоратор @eel.expose делает функцию say_hello() доступной для вызова из Javascript.
Вызов eel.say_hello() вызывает эту функцию из Python кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤5🔥2