Простейший автоответчик сообщений в Telegram
Сегодняшнюю тему я поставил замечательной библиотеке https://docs.pyrogram.org/7, поскольку с этой штукой можно делать реально годные проги для Telegram.
Одна из таких программ является Автоответчик, который будет отправлять сообщение человеку если тот написал ему (хочу добавить, что стоит фильтр сообщений из-за чего сообщения из групп считаться не будут)
Код https://main.py:
from pyrogram import Client, filters
from pyrogram.handlers.message_handler import MessageHandler
from pyrogram.types import Message
import logging
from data import check_user
import sys
api_id = 25131136
api_hash = "cbb345642927ec700650518160e75b56"
client = Client(name="account_data", api_id=api_id, api_hash=api_hash)
logging.basicConfig(level=logging.INFO, filename="app.log", filemode="w", encoding="utf-8", format="%(filename)s[%(funcName)s]: %(message)s")
stream_handler = logging.StreamHandler(stream=sys.stdout)
stream_handler.setLevel(logging.INFO)
formatter = logging.Formatter("%(filename)s[%(funcName)s]: %(message)s")
stream_handler.setFormatter(formatter)
logger = logging.getLogger("AutoResponse")
logger.addHandler(stream_handler)
def auto_response(client: Client, message: Message):
if check_user(message.from_user.id):
user = f"@{message.from_user.username}" if message.from_user.username else message.from_user.first_name
logger.info(f"Приветственное сообщение отправлено в чат с {user} ({message.from_user.id})")
message.reply(f"Привет! @{message.from_user.username}")
else:
user = f"@{message.from_user.username}" if message.from_user.username else message.from_user.first_name
logger.warn(f"Пользователь {user} ({message.from_user.id}) уже есть в истории чата...")
client.add_handler(MessageHandler(auto_response, filters.private & ~filters.me))
if __name__ == "__main__":
client.run() Разберемся что и как, думаю с импортами ни у кого проблем возникнуть не должно, НО есть какая то функция check_user, которая непонятно откуда вылезла. Так вот, предварительно я хотел сделать весь код в один файл, но подумал что так будет неудобно да и в целом когда все на своих местах всем спокойнее. Разберем файл https://data.py:
import json
# Читаем файл
def read_data(file):
try:
with open(file, 'r', encoding='utf-8') as file:
users_data = json.load(file)
except (FileNotFoundError, json.decoder.JSONDecodeError):
users_data = {}
return users_data
# Записываем все изменения
def write_data(db, file):
with open(file, 'w', encoding='utf-8') as file:
json.dump(db, file, indent=4, ensure_ascii=False)
# Проверка пользователя на наличие его ID в базе данных
def check_user(user_id):
db = read_data("users.json")
if str(user_id) not in db:
db = str(user_id)
write_data(db, "users.json")
return True
else:
return Думаю с этим все предельно понятно. Если есть какие либо вопросы можете писать их в комментариях под темой :finger_up:
Если вам лень что либо разбирать, загрузил файл на https://github.com/xllebbSQ/AutoResponseScript
289
Рейтинг:
Простейший автоответчик сообщений в Telegram
Похожие публикации
Партнёрские программы
Смотреть все1WIN ПАРТНЕРКА
1 403
Партнерские программы / Гемблинг партнерки
BroPush - партнёрская программа для монетизации и заработке на сайтах
1 310
Партнерские программы / PUSH партнерки
Партнерская программа Семяныча - Лучшая партнерка по CPA и CPC моделям
930
Партнерские программы / Способы заработка
Обзор Partners House для монетизации сайтов и лендингов + отзывы вебмастеров
795
Арбитраж трафика / Партнерские программы / PUSH партнерки
Магазин
Смотреть всеКупить
Бот для продажи VPN 3X-UI для Telegram
Telegram-бот для продажи VPN! Автоматизированный бот для продажи вашего...
Купить
Мониторинг хайп проектов на движке DLE
В данном скрипте есть возможность включить функцию чтобы пользователи сами...
Купить
Скрипт казино с 5 классическими играми.
Разработчики онлайн-казино, хотим поделиться отличной новостью: в январе мы...
Купить
Customer WishList / Избранные товары покупателей
Данный модуль позволяет просматривать избранные товары пользователей. Есть...
Купить
Меняем заголовок и favicon
Меняет favicon и title, при переходе пользователя на другую вкладку в браузере....






