Бот для копирования бота Телеграмм

Первый раз работаю с telegram-api Вообщем: Идея дневника в telegram. хочу чтобы бот брал информацию с сайта будто ДЗ звонки и т.п., и по команде «start» выводил мне ДЗ. Сам не могу додуматься, найти тоже. Мб есть мысли?

Отслеживать
47.2k 17 17 золотых знаков 56 56 серебряных знаков 99 99 бронзовых знаков
задан 9 фев 2020 в 19:52
1 1 1 серебряный знак 2 2 бронзовых знака

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Для начала определите точный список информации, которую нужно получать с сайта. Далее напишите код, который вернет вам, как пример, html-код нужной страницы. Исследуйте html-код. Получите из него нужные данные(по тэгам, классам, ид), как вариант сохраните данные в файл или базу данных. Можно получать(обновлять) данные по таймеру, например: раз в день. Используйте библиотеки requests, re, beautifulsoup4. Напишите бота, который будет отвечать на нужную команду, делая запрос в базу данных или файл (или запускаю функцию парсинга нужного сайта). Используйте библиотеки pytelegrambotapi, datetime. Должен ли бот отвечать только Вам или он может отвечать любому пользователю? Когда пишите вопросы, желательно вставлять код, потому что вряд ли найдется человек, который просто так напишет весь код за Вас. Додумываться не надо, почитайте документацию по перечисленным библиотекам.

Как копировать любого бота с нуля в сервисе King Profit Создать телеграмм бота за 5 минут!


Отслеживать
ответ дан 21 фев 2020 в 11:34
ooopsididitagain ooopsididitagain
66 3 3 бронзовых знака

Highly active question. Earn 10 reputation (not counting the association bonus) in order to answer this question. The reputation requirement helps protect this question from spam and non-answer activity.

  • python
  • python-3.x
  • telegram-bot
  • telegram
  • бот
    Важное на Мете

Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник: ru.stackoverflow.com

Бот для копирования бота телеграмм

Бот на Python с ChatGPT: Докеризация и деплой на VPS [Гайд]

Бот на Python с ChatGPT: Докеризация и деплой на VPS [Гайд]

02 апреля 2023
Оценки статьи
Еще никто не оценил статью

В данной статье мы научимся упаковывать нашего бота с ChatGPT на основе aiogram с помощью Docker-контейнера и запустим его на виртуальном сервере в интернете, чтобы он был доступен для использования 24/7 из любой точки мира.

Я обращаюсь к вам с просьбой о финансовой поддержке, чтобы помочь мне справиться с непредвиденной ситуацией, связанной с поломкой моей видеокарты. Как вы знаете, создание статей требует надежного оборудования, и видеокарта является важным компонентом для создания высококачественных материалов.

Я с большим энтузиазмом и преданностью занимаюсь написанием статей и созданием контента, который доступен абсолютно бесплатно. Моей целью является поделиться знаниями и помочь другим, но поломка видеокарты создала трудности и затраты, которые я самостоятельно не могу покрыть.

Ваше пожертвование поможет мне восстановиться от этой ситуации и продолжить создание качественного контента без препятствий. С каждым вкладом вы будете играть важную роль в моей возможности предоставлять информацию, обучение и вдохновение моим читателям и зрителям.

Все откликнувшиеся на зов помощи будут упомянуты после выполнения целей

Статьи, которые вам необходимы перед изучением этой:

  1. Бот на Python, использующий ChatGPT для Telegram
  2. Установка Docker на Ubuntu 22.04
  3. Установка Docker Compose v2 на Ubuntu 22.04
  4. Версия бота с запоминаем контекста общения (Необязательно).

Напоминаю, что мы имеем следующий код бота chatGPT на aiogram (python)

Конфигурация Dockerfile для запуска бота на aiogram с нейросетью

Рядом с файлом main.py создаем файл Dockerfile, где мы будем билдить контейнер с Python для запуска проекта со следующим содержимым:

Dockerfile
FROM python:alpine ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 # Установим директорию для работы WORKDIR /telegram_bot COPY ./requirements.txt ./ # Устанавливаем зависимости и gunicorn RUN pip install —upgrade pip RUN pip install —no-cache-dir -r ./requirements.txt # Копируем файлы и билд COPY ./ ./ RUN chmod -R 777 ./

Еще по теме:  Как голосовое из ВК отправить в Телеграмм

Эта конфигурация относится к созданию Docker-контейнера на основе образа Python Alpine, который используется для развертывания Python-приложения, в данном случае, телеграм-бота.

В первой строке указывается базовый образ python:alpine , который используется для создания контейнера. Alpine — это минималистичный дистрибутив Linux, который предлагает меньший размер и более быстрое время запуска контейнеров.

Далее, в строках ENV PYTHONUNBUFFERED=1 и ENV PYTHONDONTWRITEBYTECODE=1 определяются переменные среды. PYTHONUNBUFFERED устанавливает флаг для Python, чтобы он выводил данные в стандартный поток вывода без буферизации, а PYTHONDONTWRITEBYTECODE отключает создание .pyc-файлов, чтобы избежать проблем с обновлением кода в контейнере.

В строке WORKDIR /telegram_bot устанавливается рабочая директория в контейнере, куда будут копироваться все файлы проекта.

Далее, в строках COPY ./requirements.txt ./ и RUN pip install —no-cache-dir -r ./requirements.txt устанавливаются зависимости проекта. Сначала копируется файл requirements.txt в текущую директорию в контейнере, а затем запускается команда pip install , чтобы установить все зависимости проекта.

В строке COPY ./ ./ копируются все файлы проекта в рабочую директорию в контейнере.

Наконец, в строке RUN chmod -R 777 ./ устанавливается разрешение на чтение, запись и выполнение для всех файлов в рабочей директории проекта в контейнере. Это делается для того, чтобы приложение внутри контейнера имело необходимые права для чтения и записи в файлы.

В итоге, данная конфигурация создает Docker-контейнер, в котором установлены все необходимые зависимости для работы телеграм-бота на основе нейросети ChatGPT и задана правильная рабочая директория для запуска приложения.

Конфигурация docker-compose для запуска бота на aiogram с нейросетью

Далее нам необходимо сконфигурировать файл запуска нашего бота с нейросетью, для этого рядом с файлами Dockerfile и main.py создаем файл docker-compose.yml со следующим содержимым:

docker-compose.yml
version: «3.9» services: telegram-bot: container_name: telegram-bot working_dir: /telegram_bot restart: always build: context: . dockerfile: Dockerfile command: sh -c «python main.py»

Этот код описывает файл docker-compose.yml, который является инструментом для определения и запуска нескольких связанных контейнеров Docker в одном и том же процессе.

Строка version: «3.9» указывает на версию Docker Compose, которая используется для создания и управления контейнерами.

Блок services определяет сервисы, которые будут запущены в контейнерах Docker, в нашем случае, сервис с именем telegram-bot определяется в блоке services .

Строка container_name: telegram-bot задает имя контейнера Docker.

Строка working_dir: /telegram_bot устанавливает рабочую директорию в контейнере.

Строка restart: always задает автоматический перезапуск контейнера в случае его остановки.

Строка build указывает, что контейнер должен быть построен с использованием Dockerfile, находящегося в текущей директории.

Строка context: . указывает на текущую директорию как контекст для сборки.

Строка dockerfile: Dockerfile указывает на имя файла Dockerfile, который будет использоваться для сборки контейнера.

Строка command: sh -c «python main.py» указывает, что при запуске контейнера будет выполнен скрипт main.py с помощью Python, который находится в текущей директории. Команда sh -c используется для запуска нескольких команд в одном процессе shell.

Создание файла requirements.txt для зависимостей

И создадим ещё один файл зависимостей, находясь в нашем виртуальном окружении. Этот файл загрузит в наш билд необходимые библиотеки для работы бота. Для его создания в терминале нашего проекта с ботом введите следующую команду: pip freeze > requirements.txt

В нашем случае получится следующий файл, у вас могут быть версии поновее:

requirements.txt
aiogram==2.25.1 aiohttp==3.8.3 aiosignal==1.3.1 async-timeout==4.0.2 attrs==22.2.0 Babel==2.9.1 certifi==2022.12.7 charset-normalizer==2.1.1 colorama==0.4.6 frozenlist==1.3.3 idna==3.4 magic-filter==1.0.9 multidict==6.0.4 openai==0.26.4 pyTelegramBotAPI==4.10.0 pytz==2022.7.1 requests==2.28.2 tqdm==4.64.1 urllib3==1.26.14 yarl==1.8.2

Копируем telegram бота с ChatGPT на VPS

Далее нам необходимо скопировать эти 3 файла в директорию на виртуальном сервере. Я уже приобрел такой сервер, обычно я беру сервера на timeweb.

Установленная ОС: Ubuntu 22.04.

Чтобы скинуть файлы на сервер, нам необходим клиент для подключения по SSH, например FileZilla или WinSCP.

Я буду использовать FileZilla:

Вводим данные от сервера и подключаемся

Обычно я все файлы выкладываю в папку /home/ на сервере. Сюда я их и скопирую, предварительно создав папку telegram_bot.

Создаю папку telegram_bot Копирую файлы в папку telegram_bot Скопированные файлы проекта

Далее перейдем к запуску. Мы должны будем подключиться через терминал по SSH протоколу на наш сервер.

Запускаем telegram бота с ChatGPT на VPS

Далее вам необходимо установить Docker на вашу ОС.

В начале статьи я уже оставил нужные уроки, по которым вам необходимо поставить Docker и Docker Compose. Ставятся они очень быстро без каких либо проблем.

  1. Установка Docker на Ubuntu 22.04
  2. Установка Docker Compose v2 на Ubuntu 22.04

Находимся в папке проекта

Далее нам остается лишь последнее, сбилдить проект и запустить его, вводим следующую команду для установки нашего билда с ботом: docker compose build

Еще по теме:  Где найти userneim группы в Телеграм

Процесс создания контейнера

После окончания прогресса создания билда, мы запускаем его с помощью следующей команды: docker compose up

Контейнер запускается с нашим ботом

Проверка работы telegram-бота на aiogram с ChatGPT в Docker контейнере на VPS

Теперь я напишу своему боту что-нибудь:

Бот отвечает нам, находясь на VPS сервере и работя из Docker контейнера

На этом всё. Мы быстро развернули проект пошагово в Docker контейнере и проверили его работу. Как видите, я специально вывел функцию print() моих сообщений боту, чтобы наглядно вам показать работу с ботом на сервере.

Меню категорий

    Загрузка категорий.

Источник: proghunter.ru

Как создать телеграм-бота на Python

Python — самый популярный язык программирования в феврале 2022 года.

телеграм-бот на Python

Виктория Дербенченко
Автор статьи
16 марта 2022 в 14:39

Телеграм используют более пятисот миллионов людей по всему миру. Компании с его помощью упрощают заказ товаров или услуг, дают консультации. Для этого используют ботов — автоматические программы. Их пишут на разных языках программирования. Рассмотрим, как создать бот на самом популярном в феврале 2022 года языке — Python.

Установите интерпретатор Python

Python — динамически типизированный, интерпретируемый язык. Программы, написанные на нём, не компилируются в исполняемые файлы. Поэтому, чтобы запускать Python-программы, устанавливают его интерпретатор.

На курсе Skypro «Python-разработчик» с этого начинается первый модуль. Вся программа построена от простого к сложному и подходит даже для тех, кто не имеет опыта в программировании и технических знаний. За 10 месяцев можно освоить профессию на уровне уверенного новичка.

️ Windows

как установить интерпретатор Python

Выберите последнюю версию Python

64-bit в интерпретаторе Python

Выберите 64-bit

как установить интерпретатор Python на Windows

Поставьте галочку перед установкой напротив Add Python to PATH

pip install virtualenv

❗ Вызов интерпретатора в командной строке Windows отличается от других ОС. Используйте команду py вместо python3.

️ Linux

Если вы используете ОС Linux, вероятно, Python уже установлен. Чтобы проверить, откройте терминал с помощью команды:

python3 —version

Если вы видите что-то вроде Python 3.x.x, то Python есть. В противном случае используйте установленный менеджер пакетов. В основном это apt. Введите команду:

sudo apt install python3

Установите виртуальное окружение с помощью команды:

sudo apt install python3-venv
Python-разработчик: новая работа через 9 месяцев
Получится, даже если у вас нет опыта в IT

️ MacOS

На макбуках Python часто тоже уже есть. Откройте терминал и проверьте с помощью команды:

python3 —version

Ответ Python 3.x.x, а не ошибка, тоже подтверждает, что Python установлен. Если нет — используйте менеджер пакетов brew. Введите команду:

brew install python3

Установите пакет для создания виртуального окружения:

pip install virtualenv

Создайте папки проекта и виртуального окружения

Откройте терминал Linux или MacOS, командную строку Windows. Перейдите в директорию, в которой вы хотите создать проект бота. Последовательно

mkdir myBot cd myBot python3 -m venv env #

или, если вы используете Windows:

py -m venv env #

Эти команды создадут папку проекта myBot внутри текущей рабочей директории. А в ней — папку с виртуальным окружением.

Активируйте окружение, выберите и установите библиотеки

Pandas: обзор библиотеки для Python

Чтобы активировать виртуальное окружение на MacOS или Linux, используйте команду

source ./env/bin/activate
source.envbinactivate.bat

Чтобы создавать боты, используют разные библиотеки. Самые популярные: python-telegram-bot с синхронным подходом, aiogram с асинхронным.

Асинхронность позволяет отвлекаться от задач и не ждать ввода от пользователя, поэтому мы будем использовать библиотеку aiogram. Документация по ней — на docs.aiogram.

Используйте менеджер Python-пакетов (pip). Чтобы установить библиотеку aiogram, введите команду:

pip install aiogram

Зарегистрируйте бота и получите API-ключ

как добавить нового бота в телеграм

как зарегистрировать бота в телеграме

Введите команду /newbot и отображаемое имя бота

Теперь введите никнейм бота. Он должен быть уникальным, в конце обязательно слово bot. Когда юзернейм пройдет валидацию, вы получите сообщение с API-ключом.

валидация бота в телеграм

Никому не сообщайте полученный токен

Примеры ботов

Эхобот

Для начала в папке проекта создайте несколько файлов.

как создать эхобота

Handlers.py будет хранить функции — обработчики сообщений и команд, main.py нужен для запуска

Напишите в main.py код:

from aiogram import Bot, Dispatcher, executor import handlers API_TOKEN = ‘вставьте сюда ваш токен’ # создаем экземпляры бота и диспетчера bot = Bot(token=API_TOKEN) dp = Dispatcher(bot) # запускаем программу if __name__ == ‘__main__’: # указание skip_updates=True # пропустит команды, # которые отправили # до старта бота executor.start_polling(dp, skip_updates=True)
from aiogram import Bot, Dispatcher, executor import handlers

Здесь из библиотеки aiogram мы импортируем классы Bot, Dispatcher — класс, который регистрирует, на какие команды/сообщения и какой функцией отвечать. И executor — он запускает бота и выполняет функции, зарегистрированные в диспетчере. На второй строке мы импортируем модуль handlers.py — в нём хранят обработчики.

Далее откройте файл handlers.py и напишите в нём пару команд, которые будут обрабатывать запросы:

from aiogram import types # функция, обрабатывающая команду /start async def start(message: types.Message): await message.answer(«Привет!nНапиши мне что-нибудь!») # функция, которая отвечает на сообщение # текстом async def echo(message: types.Message): await message.answer(«Сам ты: » + message.text)

Еще по теме:  Что делать если плохое качество кружочков в Телеграмме

Здесь из модуля aiogram импортируем типы, с помощью которых преобразуем текст сообщения или файлы в структуру данных. Это может быть Message — сообщение, Audio — аудиозапись, Animation — анимация.

Далее определите асинхронные функции, чтобы обрабатывать команды /start и отвечать на сообщения.

Зарегистрируйте эти функции в диспетчере. Для этого в файле main.py добавьте перед запуском программы:

# регистрируем функции dp.register_message_handler(h.start, commands=[«start»]) dp.register_message_handler(h.echo)

В итоге файл main.py выглядит так:

from aiogram import Bot, Dispatcher, executor import handlers API_TOKEN = ‘вставьте сюда ваш токен’ # создаем бота и диспетчер bot = Bot(token=API_TOKEN) dp = Dispatcher(bot) # регистрируем функции dp.register_message_handler(handlers.start, commands=[«start»]) dp.register_message_handler(handlers.echo) # запускаем программу if __name__ == ‘__main__’: # указание skip_updates=True # пропустит команды, # которые отправили # до старта бота executor.start_polling(dp, skip_updates=True)

ка запустить Эхобот в телеграме

Чтобы проверить работу, введите в терминале python3 main.py или py main.py на Windows. Откройте бота в телеграме и запустите его

Криптобот

Чтобы написать криптобота, который будет сообщать текущую цену BTC, LTC и DASH, используйте бесплатный API-сервис SoChain. Еще потребуется дополнительная библиотека, чтобы создать асинхронные запросы aiohttp, но ее устанавливают вместе с aiogram.

Создайте новый модуль utils.py. Добавьте в него url-адрес API-сервиса. Чтобы узнавать цену, используйте метод Get Prices. Он возвращает json-объект с данными о цене из нескольких источников. Поэтому напишите функцию, которая вычисляет среднее значение:

BASE_URL = «https://sochain.com/api/v2/» # API URL # функция, чтобы рассчитать цену def calculate_price(data): prices = [float(entity[«price»]) for entity in data[«data»][«prices»]] return f» <(sum(prices) / len(prices)):.2f>USD»

Далее откройте файл handlers.py и напишите код:

from aiogram import types # импортируем библиотеку aiohttp import aiohttp # импортируем из utils все данные from utils import * # обработчик команды /start async def start(message: types.Message): await message.answer(«Привет!nНапиши мне акроним криптовалюты, чтобы узнать текущую цену») # обработчик команды /help async def help(message: types.Message): await message.answer(«Доступные сети:n» + «n».join(networks)) # обработчик запроса цены async def get_price(message: types.Message): session = aiohttp.ClientSession() # создаем GET запрос по закрепленному за методом get_price url async with session.get(BASE_URL + f»get_price//USD») as resp: # получаем ответ в формате json data = await resp.json() # если статус запроса — успешно if data[«status»] == «success»: # рассчитываем цену и отправляем пользователю price = calculate_price(data) await message.answer(price) else: # сообщаем о том, что произошла ошибка await message.answer(«Произошла ошибка»)

Теперь измените main.py файл: зарегистрируйте функции. Затем протестируйте бота:

from aiogram import Bot, Dispatcher, executor import handlers API_TOKEN = ‘вставьте сюда ваш токен’ bot = Bot(token=API_TOKEN) dp = Dispatcher(bot) dp.register_message_handler(handlers.start, commands=[«start»]) dp.register_message_handler(handlers.help, commands=[«help»]) dp.register_message_handler(handlers.get_price) if __name__ == ‘__main__’: executor.start_polling(dp, skip_updates=True)

как запустить криптобота в телегараме

Когда пользователь укажет неподдерживаемую сеть ETH, бот вернет цену биткоина, потому что так устроен API-сервис. Если он не распознал сеть, то использует BTC

Чтобы исправить ошибку, создайте клавиатуру, которая возвращает нужные значения. Напишите специальный класс Middleware: в нём описываются проверки до и после обработки запроса. Либо проверьте вхождение внутри функции. Последний вариант проще и легче.

Если пользователь отправит неподдерживаемый акроним криптосети, вы сообщите ему об этом. Для этого в файле utils.py определите список поддерживаемых сетей:

networks = [«BTC», «LTC», «DASH»] # <— поддерживаемые сети BASE_URL = «https://sochain.com/api/v2/» # API URL def calculate_price(data): prices = [float(entity[«price»]) for entity in data[«data»][«prices»]] return f» <(sum(prices) / len(prices)):.2f>USD»

Теперь отредактируйте функцию расчета цены криптовалюты в файле handlers.py. Для этого добавьте проверку вхождения сети в список поддерживаемых:

async def get_price(message: types.Message): network = message.text.upper() # приводим сообщение к верхнему регистру # выполняем проверку вхождения if network not in networks: await message.answer(«Вы указали неподдерживаемую криптовалюту») return session = aiohttp.ClientSession() async with session.get(BASE_URL + f»get_price//USD») as resp: data = await resp.json() if data[«status»] == «success»: price = calculate_price(data) await message.answer(price) else: await message.answer(«Произошла ошибка»)

Когда пользователь укажет неподдерживаемую сеть ETH, бот сообщит об этом

Код всех файлов

networks = [«BTC», «LTC», «DASH»] # поддерживаемые сети BASE_URL = «https://sochain.com/api/v2/» # API URL def calculate_price(data): prices = [float(entity[«price»]) for entity in data[«data»][«prices»]] return f» <(sum(prices) / len(prices)):.2f>USD»
import aiohttp from aiogram import types from utils import * async def start(message: types.Message): await message.answer(«Привет!nНапиши мне акроним криптовалюты, чтобы узнать текущую цену») async def help(message: types.Message): await message.answer(«Доступные сети:n» + «n».join(networks)) async def get_price(message: types.Message): network = message.text.upper() if network not in networks: await message.answer(«Вы указали неподдерживаемую криптовалюту») return session = aiohttp.ClientSession() async with session.get(BASE_URL + f»get_price//USD») as resp: data = await resp.json() if data[«status»] == «success»: price = calculate_price(data) await message.answer(price) else: await message.answer(«Произошла ошибка»)
from aiogram import Bot, Dispatcher, executor import handlers API_TOKEN = ‘вставьте сюда ваш токен’ bot = Bot(token=API_TOKEN) dp = Dispatcher(bot) dp.register_message_handler(handlers.start, commands=[«start»]) dp.register_message_handler(handlers.help, commands=[«help»]) dp.register_message_handler(handlers.get_price) if __name__ == ‘__main__’: executor.start_polling(dp, skip_updates=True)

Источник: sky.pro

Рейтинг
( Пока оценок нет )
Загрузка ...