Форум программистов, компьютерный форум, киберфорум
Python: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 1
Регистрация: 26.02.2020
Сообщений: 6
Telegram Bot

Как запустить 2 функции парраллельно в телеграм боте на питоне?

17.04.2020, 14:19. Показов 1798. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Я сделал парсер-бота в телеге который парсит валюту с гугла. Вопрос: Как мне сделать так чтобы работало 2 функции параллельно? То есть функции: currency_USD = Currency_USD() и currency_EUR.check_currency_EUR(). Потому что если первой стоит функция доллара то парсится только доллар в телегу и наоборот. Если я отправляю запрос на евро, то парсится только евро и доллар не видит, хотя в терминал при помощи принта выводятся оба запроса.




Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import requests
from bs4 import BeautifulSoup
import telebot
from telebot import types
from threading import Thread
from multiprocessing import Process
bot = telebot.TeleBot('1156880733:AAGNUiAiw79mbTVLoD4tOZtykU5JLTORgOI')
 
 
@bot.message_handler(commands=['start'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=1)
    btn1 = types.KeyboardButton('Доллар $')
    btn2 = types.KeyboardButton('Фунт Стерлингов £')
    btn3 = types.KeyboardButton('Евро €')
    markup.add(btn1, btn2, btn3)
    send_mess = 'Воспользуйтесь клавиатурой'
    sti = open('stic/fr.webp', 'rb')
    bot.send_sticker(message.chat.id, sti)
    bot.send_message(message.chat.id, send_mess, sti, reply_markup=markup)
 
class Currency_EUR:
    EUR_LINK = 'https://www.google.com/search?client=firefox-b-d&q=%D0%B5%D0%B2%D1%80%D0%BE+%D0%BA+%D1%80%D1%83%D0%B1%D0%BB%D1%8E'
    headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0'}
 
    def get_currency_price_EUR(self):
        full_page = requests.get(self.EUR_LINK, headers=self.headers)
        soup = BeautifulSoup(full_page.content, 'html.parser')
        convert = soup.findAll("span", {"class": "DFlfde", "class": "SwHCTb", "data-precision": 2})
        return convert[0].text
 
 
    def check_currency_EUR(self):
        print('Выполняется парсинг евро...')
        currency_EUR = str(self.get_currency_price_EUR())
        print("Сейчас курс: 1 евро = " + str(currency_EUR))
 
        @bot.message_handler(content_types=['text'])
        def EUR(message):
            get_message_bot = message.text.strip().lower()
            if get_message_bot == 'евро €':
                bot.send_message(message.chat.id, 'Сейчас курс: 1 евро = ' + str(currency_EUR) + ' руб.')
 
# Основной класс
class Currency_USD:
    # Ссылка на нужную страницу
    DOLLAR_RUB = 'https://www.google.com/search?client=firefox-b-d&q=%D0%B4%D0%BE%D0%BB%D0%BB%D0%B0%D1%80+%D0%BA+%D1%80%D1%83%D0%B1%D0%BB%D1%8E'
    # Заголовки для передачи вместе с URL
    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}
 
    # Метод для получения курса валюты
    def get_currency_price_USD(self):
        # Парсим всю страницу
        full_page = requests.get(self.DOLLAR_RUB, headers=self.headers)
        # Разбираем через BeautifulSoup
        soup = BeautifulSoup(full_page.content, 'html.parser')
        # Получаем нужное для нас значение и возвращаем его
        convert = soup.findAll("span", {"class": "DFlfde", "class": "SwHCTb", "data-precision": 2})
        return convert[0].text
 
    # Проверка изменения валюты
    def check_currency_USD(self):
        print('Выполняется парсинг доллара...')
        currency_USD = str(self.get_currency_price_USD())
        print("Сейчас курс: 1 доллар = " + str(currency_USD))
 
        @bot.message_handler(content_types=['text'])
        def USD(message):
            get_message_bot = message.text.strip().lower()
            if get_message_bot == 'доллар $':
                bot.send_message(message.chat.id, "Сейчас курс: 1 доллар = " + str(currency_USD) + " руб.")
 
 
# Создание объекта и вызов метода доллара
currency_USD = Currency_USD()
currency_USD.check_currency_USD()
 
 
#Создание объекта и вызов метода евро
currency_EUR = Currency_EUR()
currency_EUR.check_currency_EUR()
 
# Создание объекта и вызов бота
bot.polling(none_stop=True)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.04.2020, 14:19
Ответы с готовыми решениями:

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

Как сделать опрос в телеграм боте ?
У меня есть бот полностью написан на PHP, всё в идеале работает, но есть проблема. Мне надо чтобы, когда я нажимал на кнопку, бот задал...

Как отобразить list в телеграм боте?
Приходит list Как отправить с разметкой?

1
0 / 0 / 0
Регистрация: 12.04.2020
Сообщений: 8
19.04.2020, 13:31
поработай с модулем threading
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.04.2020, 13:31
Помогаю со студенческими работами здесь

Как в Телеграм боте добавить кнопки на Python?
Как добавить кнопку в обычном запросе через requests ...

Как удалить кнопку меню в телеграм-боте?
Всем здравствуйте. Как создать меню команд, выскакивающее по вводу слеша можно найти: from config import TOKEN from aiogram import...

Как сделать кнопку МЕНЮ в боте Телеграм pyton
Добрый вечер всем ! Кто подскажет код реализации на Pyton в Телеграм-бот такой кнопки МЕНЮ с кнопками подменю (чтоб можно было еще...

Как получить ID файла, отправленого ботом, в телеграм-боте?
Нашёл решение сам.

Как сделать кд на использование кнопки в телеграм боте telebot
Нужно чтобы при нажатии на кнопку сообщение пользователя пересылалось в канал (aka барахолка в которой бот служит предложкой) И нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru