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

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

17.04.2020, 14:19. Показов 1833. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru