Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 14.02.2022
Сообщений: 6

Проблема с кодом

01.07.2023, 21:08. Показов 652. Ответов 0

Студворк — интернет-сервис помощи студентам
1. человек нажимает /start и его просят зарегистрироваться(написать фамилию и имя)
2. человек нажимает кнопку начать и начинает присылать сообщения в формате 2 фото и подпись в виде числа. он может их присылать пока не нажмет кнопку закончить
3. человек нажимает кнопку закончить и администратору приходит отчет(сумма цифр, все фото, фамилия и имя)
4. человек опять нажимает начать и круг запускается со 2 пункта.

важные моменты:
начать-закончить это один цикл
суммы цифр для разных пользователей разные
суммы цифр 1 цикла 1 пользователя ни как не взаимодействуют с другими циклами этого же пользователя или других пользователей/циклов



были следующие попытки
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
85
import telebot 
 
# Создание бота 
bot = telebot.TeleBot('6374854346:AAHT041foPpIwTvHhQzU-5Y-tmFG9MvZ8C0') 
 
# Словарь для хранения данных пользователей 
users = {} 
 
# Состояния пользователя 
states = { 
    'start': 0, 
    'taking_photos': 1, 
    'end': 2 
} 
 
# Команда /start 
@bot.message_handler(commands=['start']) 
def start_handler(message): 
    chat_id = message.chat.id 
    users[chat_id] = {'state': states['start']}  # Установка состояния 'start' 
    bot.send_message(chat_id, 'Добро пожаловать! Пожалуйста, зарегистрируйтесь, написав свою фамилию и имя.') 
 
# Обработка текстовых сообщений 
@bot.message_handler(func=lambda message: True) 
def text_handler(message): 
    chat_id = message.chat.id 
    user = users.get(chat_id) 
     
    if user: 
        # Записываем фамилию и имя пользователя 
        if user['state'] == states['start']: 
            users[chat_id]['name'] = message.text 
            users[chat_id]['state'] = states['taking_photos']  # Переход к состоянию 'taking_photos' 
            bot.send_message(chat_id, 'Вы зарегистрированы! Теперь отправляйте фото с подписью в виде числа.') 
        elif user['state'] == states['taking_photos']: 
            if message.text == 'закончить': 
                users[chat_id]['state'] = states['end']  # Переход к состоянию 'end' 
                send_report(chat_id) 
            else: 
                bot.send_message(chat_id, 'Фото не принимаются. Отправьте фото или введите "закончить".') 
        else: 
            bot.send_message(chat_id, 'Вы уже закончили работу. Нажмите /start, чтобы начать новый цикл.') 
    else: 
        bot.send_message(chat_id, 'Нажмите /start, чтобы начать работу.') 
 
# Обработка фото 
@bot.message_handler(content_types=['photo']) 
def photo_handler(message): 
    chat_id = message.chat.id 
    user = users.get(chat_id) 
     
    if user and user['state'] == states['taking_photos']: 
        # Получаем сумму чисел, указанных в подписи фото 
        sum_numbers = 0 
        for photo in message.photo: 
            if photo.caption and photo.caption.isdigit(): 
                sum_numbers += int(photo.caption) 
         
        users[chat_id].setdefault('photos', []).append(message.photo[-1].file_id)  # Сохраняем последнее фото в списке фото пользователя 
        users[chat_id].setdefault('sum_numbers', 0) 
        users[chat_id]['sum_numbers'] += sum_numbers 
         
        bot.send_message(chat_id, f'Сумма чисел: {users[chat_id]["sum_numbers"]}') 
 
# Функция отправки отчета администратору 
def send_report(chat_id): 
    user = users[chat_id] 
    name = user['name'] 
    sum_numbers = user['sum_numbers'] 
    photos = user['photos'] 
     
    report = f'Отчет для {name}\n' 
    report += f'Сумма чисел: {sum_numbers}\n' 
    report += 'Фото:\n' 
    for photo in photos: 
        report += f'!Фото\n' 
     
    bot.send_message(5610020672, report) 
 
# Запуск бота
while 0==0:
    try:
        bot.polling()
    except:
        bot.polling()



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
import telebot
 
TOKEN = 'your_token_here'
bot = telebot.TeleBot(TOKEN)
 
# Обработчик команды /start
@bot.message_handler(commands=['start'])
def start_command(message):
    bot.send_message(message.chat.id, "Привет! Добро пожаловать в нашего бота!")
 
# Обработчик команды /begin
@bot.message_handler(commands=['begin'])
def begin_command(message):
    bot.send_message(message.chat.id, "Начало цикла")
 
# Обработчик команды /end
@bot.message_handler(commands=['end'])
def end_command(message):
    bot.send_message(message.chat.id, "Конец цикла")
 
# Настройка webhook
@bot.route('/webhook', methods=['POST'])
def webhook():
    bot.process_new_updates([telebot.types.Update.de_json(request.stream.read().decode("utf-8"))])
    return "ok", 200
 
users = {}
 
@bot.message_handler(commands=['start'])
def start_command(message):
    bot.send_message(message.chat.id, "Пожалуйста, введите свою фамилию и имя")
    bot.register_next_step_handler(message, save_user_info)
 
def save_user_info(message):
    users[message.chat.id] = {'name': message.text}
    bot.send_message(message.chat.id, "Спасибо! Вы зарегистрированы.")
from telebot import types
 
@bot.message_handler(commands=['begin'])
def begin_command(message):
    markup = types.InlineKeyboardMarkup()
    begin_button = types.InlineKeyboardButton("Начать", callback_data='begin')
    end_button = types.InlineKeyboardButton("Закончить", callback_data='end')
    markup.add(begin_button, end_button)
    bot.send_message(message.chat.id, "Выберите действие:", reply_markup=markup)
 
@bot.callback_query_handler(func=lambda call: True)
def handle_callback_query(call):
    if call.data == 'begin':
        bot.send_message(call.message.chat.id, "Начало цикла")
    elif call.data == 'end':
        bot.send_message(call.message.chat.id, "Конец цикла")
 
 
 
def send_report_to_admin(message_id: int):
    # Получить все данные пользователя
    user_data = users[message_id]
    # Создать отчет
    report = generate_report(user_data)
    # Отправить отчет администратору
    bot.send_document(admin_chat_id, report)
    pass
 
@bot.message_handler(commands=['end'])
def end_command(message):
    send_report_to_admin(message.chat.id)
    bot.send_message(message.chat.id, "Отчет отправлен администратору")
    users[message.chat.id]['state'] = 'начало цикла'
 
bot.polling()


напишите правильный код пж кто может или укажите на ошибки в коде чтобы он работал спасибо большое заранее
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.07.2023, 21:08
Ответы с готовыми решениями:

Проблема с кодом
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку , числа, имеющие ровно 4 различных делителя. Выведите...

Проблема с кодом
Ввожу '2^2+V9'. Строка обрабатывается и получаеться '2**2+9**(1/2)' т. е. идёт как надо. Но я не могу перевести строку в float. Не знаю,...

Проблема с кодом
При вводе "11" программа должна выводить "3", но почему-то выводит "1". Подскажите где ошибка s = n = 0 max = 0 min = 0 for i...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.07.2023, 21:08
Помогаю со студенческими работами здесь

Проблема с кодом
from pyowm.owm import OWM from pyowm.utils.config import get_default_config config_dict = get_default_config() config_dict = 'ru' ...

Проблема с кодом
Я пишу всё правильно но у меня ошибка выскакивает, или я просто не вижу проблему, выручите кто сможет. # Голосовой ассистент...

Проблема с кодом
Я только учусь, помогите пожалуйста print('Назовите себя, пожалуйста!') name = input() print(name, 'привет!') В данном случае после...

Проблема с кодом
Когда в начале я пишу выключить выполняется сразу два условия и программа продолжает работать,а если пишу включить тоже выполняется два...

Проблема с кодом
# Игра блэкджек print ("Игра запущена!") import random print ("Желаете взять карту?") inp...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
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