Исходники - Бот - Простейший автоответчик сообщений в Telegram | End Way - форум программирования и сливов различных скриптов
  • Присоединяйтесь к нам в телеграм канал! EndWay канал | EndSoft канал | EWStudio канал
  • Хочешь поставить скрипт, но не умеешь?
    А может ты хочешь свой скрипт на основе слитого?

    Тогда добро пожаловать в нашу студию разработки!

    Телеграм бот: EWStudioBot
    Телеграм канал: EWStudio

Исходники Бот Простейший автоответчик сообщений в Telegram

NiggaByte+REP

so black
Автор темы
hehe
8 Янв 2023
1,155
2,733
113
Сегодняшнюю тему я поставил замечательной библиотеке pyrogram, поскольку с этой штукой можно делать реально годные проги для Telegram.
Одна из таких программ является Автоответчик, который будет отправлять сообщение человеку если тот написал ему (хочу добавить, что стоит фильтр сообщений из-за чего сообщения из групп считаться не будут)
Код main.py:
Python:
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, которая непонятно откуда вылезла. Так вот, предварительно я хотел сделать весь код в один файл, но подумал что так будет неудобно да и в целом когда все на своих местах всем спокойнее. Разберем файл data.py:
Python:
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:
Если вам лень что либо разбирать, загрузил файл на GitHub
 
Like
  • 2
Реакции: 1 users
Активность:
Пока что здесь никого нет