С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/29: Рейтинг темы: голосов - 29, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 23.01.2020
Сообщений: 2
Telegram Bot

Бот-переводчик. Как зациклить работу в одном хэндлере?

23.01.2020, 22:04. Показов 5779. Ответов 2

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане, прошу помочь!

Делаю бот-переводчик. Сделал более-менее стабильную версию, но есть одно но. После выбора второго языка (в данном случае испанского) первое слово или фразу он переводит на испанский, а потом перескакивает на хэндлер перевода на английский язык. Где я что упустил?

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
import telebot
from telebot import types
import const
from translate import Translate
 
 
bot = telebot.TeleBot(const.token)
 
 
@bot.message_handler(commands=['start', 'lang'])
def start(message):
    keyboard = types.InlineKeyboardMarkup()
    keyboard.add(*[types.InlineKeyboardButton(text=name, callback_data=name) for name in ['АНГЛ', 'ИСПАН']])
    bot.send_message(message.chat.id, 'Привет! Выберите язык для перевода', reply_markup=keyboard)
 
 
@bot.message_handler(commands=['help'])
def helper(message):
    bot.send_message(message.chat.id,
                     '''Чтобы начать работу выберите команду /start\nДля смены языка выберите команду /lang''')
 
 
@bot.callback_query_handler(func=lambda c: c.data == 'АНГЛ')
def process_callback_button1(callback_query: types.CallbackQuery):
    bot.answer_callback_query(callback_query.id)
    bot.send_message(callback_query.from_user.id, '*Вы выбрали перевод на английский язык.*', parse_mode='Markdown')
    bsm1 = bot.send_message(callback_query.from_user.id, '*Введите текст*', parse_mode='Markdown')
    bot.register_next_step_handler(bsm1, handle_text1)
 
 
@bot.message_handler(func=lambda message: True, content_types=['text'])
def handle_text1(message):
    bot.send_message(message.chat.id, 'Перевожу')
    json = Translate.english(message.text)
    bot.send_message(message.chat.id, ' '.join(json['text']))
 
 
@bot.callback_query_handler(func=lambda c: c.data == 'ИСПАН')
def process_callback_button2(callback_query: types.CallbackQuery):
    bot.answer_callback_query(callback_query.id)
    bot.send_message(callback_query.from_user.id, '*Вы выбрали перевод на испанский язык.*', parse_mode='Markdown')
    bsm2 = bot.send_message(callback_query.from_user.id, '*Введите текст*', parse_mode='Markdown')
    bot.register_next_step_handler(bsm2, handle_text2)
 
 
@bot.message_handler(func=lambda message: True, content_types=['text'])
def handle_text2(message):
    bot.send_message(message.chat.id, 'Перевожу')
    json = Translate.spain(message.text)
    bot.send_message(message.chat.id, ' '.join(json['text']))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.01.2020, 22:04
Ответы с готовыми решениями:

Как зациклить работу до последней строки
Вот етсь код, слава богу помогли)) @echo off setlocal enabledelayedexpansion 3<1.txt ( for /l %%i in (1, 1, 6) do ( ...

Как настроить работу vpn на работу в одном приложении? ( teamspeak 3)
Нужна помощь по настройке впн для работы в одном приложении , знаю что это делается через маршрутизацию , но очень бы хотелось получить...

бот - переводчик на английский язык
В чате постоянно должен присутствовать бот - переводчик на английский язык. Пользователь пишет “перевести <слово>”. Бот отвечает...

2
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
30.01.2020, 10:27
Dekram, а где у вас сохранение параметра идет, что для данного юзера использовать Английский язык?
0
0 / 0 / 0
Регистрация: 23.01.2020
Сообщений: 2
30.01.2020, 10:57  [ТС]
Цитата Сообщение от DmFat Посмотреть сообщение
Dekram, а где у вас сохранение параметра идет, что для данного юзера использовать Английский язык?
DmFat, хэндлер @bot.callback_query_handler(func=lambda c: c.data == 'АНГЛ') отлавливает нажатие кнопки с английским языком. Кроме этого надо сохранять выбранный параметр?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.01.2020, 10:57
Помогаю со студенческими работами здесь

Бот-переводчик с записью и отправкой файла
Хочу сделать бота для своих нужд. Суть заключается в следующем, в текстовом файле записано английские слова(каждое с новой строки), я...

Телеграм бот, как продолжить работу с конкретной командой?
Не понимаю, есть ли какие то общедоступные методы продолжения работы с конкретной командой (опишу как смогу) П - пользователь Б - бот ...

Нужно зациклить работу калькулятора
#include <stdio.h> void main() { int n; float x,y,w; printf("Vvedite dva chicla, 1 chiclo-x, 2 chiclo-y"); ...

Переводчик ищет работу
Буду рад поработать переводчиком (английский). Любые темы: фарма, гемблинг, IT, наука, политика, новости. Подведу текст под семантику...

Англо-русский и русско-английский переводчик в одном приложении
Имеется программа-переводчик. Реализован перевод с англ. на русский. Есть ли возможность запихать туда же и с русского на англ.? Сколько не...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru