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

Не получается интерпретировать алгоритм для телеграм бота с использованием модуля aiogram

14.06.2020, 16:32. Показов 4488. Ответов 4

Студворк — интернет-сервис помощи студентам
Мне надо написать бота для телеги который будет загадывать числа и использовать при этом модуль aiogram. Для этого я сначала написал алгоритм для консоли, но после адаптации этого алгоритма для бота у меня возникла проблема с вторым вводом числа в цикле 'while', после второго ввода числа бот постоянно писал один из результатов 'if'. Алгоритм написанный для интерпретации ниже.
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
import random
win = False
randnum = random.randint(1,100)
tr = 0
print(randnum)
while win != True:
    try:
        number = int(input())
        if number > 100 or number < 1:
            print('Please enter a number between 1 and 100')
            tr += 1
        elif  number < randnum:
            print('This number is less than the guessed, please try again.')
            tr += 1
        elif number > randnum:
            print('This number is greater than the guessed, please try again.')
            tr += 1
        elif number == randnum:
            print(f'Congratulations, you guessed right. You spent {tr} attempts on this')
            win = True
            tr = 0
    except:
        print('This is not a number. Try again')
        tr += 1
Может кто-то сталкивался с этой проблемой или просто знает как ее решить?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.06.2020, 16:32
Ответы с готовыми решениями:

Деплой телеграм бота на aiogram с webhook на ubuntu
Пытаюсь запустить командой sudo python3 bot.py, запускается нормально Но как только боту поступает какая-либо команда, то сразу...

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

Не получается запустить телеграм-бота
Всем привет. Первый раз пробую что-либо писать на питоне. Пытаюсь запустить простейшего телеграм-бота с использованием библиотеки telebot....

4
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
14.06.2020, 20:45
Вопрос-то какой? Вы приложили рабочий скрипт. И написали, что в боте он не работает. Ну а где код бота?
0
0 / 0 / 0
Регистрация: 13.03.2020
Сообщений: 3
15.06.2020, 02:26  [ТС]
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
@dp.message_handler(lambda message: message.text == "Играть")
async def game(message: types.Message):
    await message.reply('Число загаданно, назовите это число.')
    win = False
    number = random.randint(1, 100)
    tr = 0
    print(number)
    while win != True:
        try:
            @dp.message_handler()
            async def game(message: types.Message):
                if int(message.text) > 100 or int(message.text) < 1:
                    await message.reply('Введите число в диапазоне от 1 до 100.')
                    tr += 1
                elif int(message.text) < number:
                    await message.reply('Это число меньше загаданного, попробуйте еще раз.')
                    tr += 1
                elif int(message.text) > number:
                    await message.reply('Это число больше загаданного, попробуйте еще раз.')
                    tr += 1
                elif int(message.text) == number:
                    await message.reply(f'Поздравляю вы угадали, для этого вы затратили {tr} попыток.')
                    win = True
                    tr = 0
        except:
            await message.reply('Это не число. Введите пожалуйста число и попробуйте еще раз.')
            tr += 1
Вот тут у меня не работает 'except' и вообще сам бот ничего не выводит при написании ему сообщений, скорее всего я что-то не так делаю или неправильно использую функции, ибо я только начал изучать aiogram
0
Эксперт Python
 Аватар для АмигоСП
295 / 108 / 57
Регистрация: 07.12.2016
Сообщений: 209
15.06.2020, 16:26
Snejn1y, тут сложно что-то конкретное посоветовать. Для начала, наверное, изучите питоновские функции, декораторы. Посмотрите примеры обычных, синхронных ботов. Почитайте и попытайтесь понять asyncio. И скажите, а зачем Вам здесь асинхронная библиотека для бота? Что Вы ей пытаетесь добиться?
0
 Аватар для Miryz
291 / 131 / 58
Регистрация: 24.11.2019
Сообщений: 532
16.06.2020, 14:04
Лучший ответ Сообщение было отмечено Snejn1y как решение

Решение

Snejn1y,
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
import logging
import os
from aiogram import Bot, Dispatcher, executor, types, md
from aiogram.dispatcher.filters import BoundFilter
import random
 
API_TOKEN = '************'
PROXY_URL = os.getenv('***********')
 
logging.basicConfig(level=logging.INFO)
 
bot = Bot(token=API_TOKEN, proxy=PROXY_URL)
dp = Dispatcher(bot)
 
step = {}
 
 
class Filter(BoundFilter):
    key = 'is_step'
 
    def __init__(self, is_step):
        self.is_step = is_step
 
    async def check(self, m: types.Message):
        res = step.setdefault(m.chat.id, 0)
        return res == 1
 
 
dp.filters_factory.bind(Filter)
 
 
@dp.message_handler(lambda message: message.text == "Играть")
async def game(m: types.Message):
    await m.reply('Число загаданно, назовите это число.')
    step[m.chat.id] = 1
    global number
    global tr
    number = random.randint(1, 100)
    tr = 0
    print(number)
 
 
@dp.message_handler(is_step=True)
async def gamne(m: types.Message):
    global tr
    try:
        if int(m.text) > 100 or int(m.text) < 1:
            await m.reply('Введите число в диапазоне от 1 до 100.')
            tr += 1
        elif int(m.text) < number:
            await m.reply('Это число меньше загаданного, попробуйте еще раз.')
            tr += 1
        elif int(m.text) > number:
            await m.reply('Это число больше загаданного, попробуйте еще раз.')
            tr += 1
        elif int(m.text) == number:
            await m.reply(f'Поздравляю вы угадали, для этого вы затратили {tr} попыток.')
            step[m.chat.id] = 0
            tr = 0
    except:
        await m.reply('Это не число. Введите пожалуйста число и попробуйте еще раз.')
        tr += 1
 
 
 
@dp.message_handler()
async def get_messages(m: types.Message):
    print(m.from_user.first_name, '[' + str(m.from_user.id) + ']' + '{' + m.chat.type + '}' + ':', m.text)
 
 
if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.06.2020, 14:04
Помогаю со студенческими работами здесь

Разрешения для телеграм бота?
Доброго дня всем) Столкнулся с таким вопросом: создал со своего аккаунта бота, подключил через апи. Другой человек открывает того же...

Сервер для бота в телеграм
Здравствуйте. Посоветуйте бесплатный или недорогой сервер для бота в телеграм.

Календарь для телеграм бота
Есть 2 функции: реализации календаря и выбора даты. @bot.message_handler(commands=) def get_calendar(message): now =...

Разработка бота для Телеграм на Python
Напишу телеграм бота на языке Python 3 и быстром, современном, асинхронном движке Aiogram. Сферы применения телеграм ботов: Интернет...

Простой код для бота телеграм
Ребят, всем привет. Может кто-то написать, пожалуйста простой код для бота телеграм? Суть кода в том, что нужно создать кнопку в меню бота,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru