Ответы пользователя по тегу Python
  • Как сделать так, что бы бот работал то время, пока у меня запущена программа на пк?

    Keffmen
    @Keffmen
    Изучаю Python , C# , HTML и многое другое
    ты создал порядок действий который будет запускаться когда нажмется кнопка старт , а вот когда ты просто оправишь ему сообщение или нажмешь кнопку , на такое действие у тебя проверки нет. И Заголовок не совпадает с сутью которую ты описал
    Ответ написан
    Комментировать
  • Ошибка при подключении к гугл таблицы api?

    Keffmen
    @Keffmen
    Изучаю Python , C# , HTML и многое другое
    Не знаю будет ли актуально еще ?!
    Мне помогло вот это видео куда нужно смотреть что бы решить проблему.
    Как я понял все дело в 'OAuth consent screen' , после его настройки(а именно добавление в 'Test users' email через который нужно будет зайти 1 раз когда попросит после первого запуска кода) получилось получить доступ к нужному мне sheet. Но тут же я получаю доступ ко всем sheet на аккаунте.
    import pygsheets
    
    gc = pygsheets.authorize()
    print(gc.spreadsheet_titles())
    sh = gc.open('Test_sheet')
    wks = sh.sheet1
    print(wks)

    ['Годовой семейный бюджет', 'Семейный бюджет', 'Продажи по КнК', 'Список дел', 'Test_sheet']
    <Worksheet 'Лист1' index:0>
    Ответ написан
    Комментировать
  • Телеграм бот. Не работает получение сообщений. В чем ошибка?

    Keffmen
    @Keffmen
    Изучаю Python , C# , HTML и многое другое
    Смотри тебе нужно было использовать bot.register_next_step в своем коде , вот пример как он работает
    import telebot
    import requests
    from telebot import types
    
    global stairs
    
    bot = telebot.TeleBot('token')
    @bot.message_handler(commands=["start"])
    def start(m, res=False):
        bot.send_message(m.chat.id, 'Хотите узнать погоду?\nВведите свой город')
        bot.register_next_step_handler_by_chat_id(m.chat.id, regist)
    @bot.message_handler(content_types=['text'])
    def main(m):
        if m.text.strip() == 'Текущая погода в городе':
            bot.send_message(m.chat.id, f'Сейчас в {stairs} - жарко')
    def regist(message):
        global stairs
        stairs = message.text
        bot.send_message(message.chat.id, f'Твой город :{message.text}')
    bot.polling(none_stop=True, interval=0)
    Ответ написан
    Комментировать
  • Как исключить часть результатов парсинга, если по одному из пунктов парсинга нет данных?

    Keffmen
    @Keffmen
    Изучаю Python , C# , HTML и многое другое
    n4ural, вот ошибка
    product_stock = soup.find_all('div', class_='items-stock')

    Это строка находит пустоту и проверяет в дальнейшем пустоту , если ее исправить то получиться
    product_stock = soup.find_all('span', class_='value')


    и не правильная система перебора !
    Это твой код
    for stock_check in product_stock:
            if stock_check.text != 'Нет в наличии':
                for name in product_names:
                    href.append('https://estel-shop.ru' + name.a['href'])
                    title.append(name.text)
                    print(name.text.strip())
                    print('https://estel-shop.ru' + name.a['href'])
                    for price in product_price:
                        print(price.text)
                        cost.append(price.text)


    что выдает твой код :
    Estel Princess Essex 10/76 Светлый блондин коричнево-фиолетовый (Снежный лотос)
    https://estel-shop.ru/catalog/kraska_dlya_volos_1/5150/
    360
    1 060
    670
    385
    385
    670
    670
    770
    950

    вот и вся проблема !
    Если нужна помощь пиши в Telegram Keffmen
    Ответ написан
    3 комментария
  • Почему не работает bot.register_next_step_handler?

    Keffmen
    @Keffmen
    Изучаю Python , C# , HTML и многое другое
    Я не сильно понимаю зачем делать через register_next_step_handler ? Но если сильно нужно поясняю! После выполнение этой строки register_next_step_handler бот ждет сообщения , и как только ты ему отправишь любое сообщение то он отреагирует на него
    def menu(message):
        markup = types.InlineKeyboardMarkup(row_width=3)
        item1 = types.InlineKeyboardButton("Привіт", callback_data='Hello')
        markup.add(item1)
        bot.send_message(message.chat.id, "Меню", parse_mode='html', reply_markup=markup)
    вот так !
    Если что то не понятно пиши Никита Булгак
    Ответ написан
    Комментировать
  • Как отправить сообщение с прикреплённым к нему изображением с помощь telebot?

    Keffmen
    @Keffmen
    Изучаю Python , C# , HTML и многое другое
    bot.send_photo(Кому отправить, Фото с компа , caption=А тут текст какой хочешь)
    Ответ написан
    Комментировать
  • Где в моём коде ошибка?

    Keffmen
    @Keffmen
    Изучаю Python , C# , HTML и многое другое
    import telebot
    from telebot import types
    
    BOT_TOKEN = твой токен
    bot = telebot.TeleBot(BOT_TOKEN)
    
    @bot.message_handler(commands=['start'])
    def start(message):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btnn1 = types.KeyboardButton("Проверка")
        markup.add(btnn1)
        bot.send_message(message.chat.id, text="Здравствуйте!", reply_markup=markup)
    
    @bot.message_handler(content_types=['text'])
    def func(message):
        if message.text == "Проверка":
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
            btnn1 = types.KeyboardButton("Да, мне есть 18")
            btnn2 = types.KeyboardButton("Нет, мне нету 18")
            markup.add(btnn1, btnn2)
            bot.send_message(message.chat.id, text="Вам есть 18?", reply_markup=markup)
        elif message.text == "Да, мне есть 18":
                bot.send_message(message.chat.id, text='Вы прошли проверку!')
        elif message.text == 'Нет, мне нету 18':
                bot.send_message(message.chat.id, text='Вы не прошли проверку')
    
    bot.polling()

    так или так
    import telebot
    from telebot import types
    
    BOT_TOKEN = твой токен
    bot = telebot.TeleBot(BOT_TOKEN)
    
    @bot.message_handler(commands=['start'])
    def start(message):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btnn1 = types.KeyboardButton("Проверка")
        markup.add(btnn1)
        bot.send_message(message.chat.id, text="Здравствуйте!", reply_markup=markup)
    
    @bot.message_handler(content_types=['text'])
    def func(message):
        if message.text == "Проверка":
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
            btnn1 = types.KeyboardButton("Да, мне есть 18")
            btnn2 = types.KeyboardButton("Нет, мне нету 18")
            markup.add(btnn1, btnn2)
            msg = bot.send_message(message.chat.id, text="Вам есть 18?", reply_markup=markup)
            bot.register_next_step_handler(msg,vosrat)
    def vosrat(message):
        if message.text == "Да, мне есть 18":
                bot.send_message(message.chat.id, text='Вы прошли проверку!')
        elif message.text == 'Нет, мне нету 18':
                bot.send_message(message.chat.id, text='Вы не прошли проверку')
    
    bot.polling()

    Если нужна помощь пиши в телеграм @Keffmen
    Отметь ответ если тебе помог
    Ответ написан
  • Как убрать предупреждение?

    Keffmen
    @Keffmen
    Изучаю Python , C# , HTML и многое другое
    Попробуй так
    await message.photo[-1].download(destination_file="123.png")
    Ответ написан
    Комментировать
  • TelegramBot. В чем суть проблемы?

    Keffmen
    @Keffmen
    Изучаю Python , C# , HTML и многое другое
    Исправил код как указано в ответе выше IKIQ
    В этом месте нужно ссылаться на айди исходного сообщения, а не жестко его прописывать

    Если нужна помощь пиши в Telegram - "@Keffmen"
    import telebot
    from telebot import telebot.types
    # pip install pytelegrambotapi
    token = 'Ваш токен'
    bot = telebot.TeleBot(token)
    chat_id = '' # Например chat_id = '223344'
    # Telegram bot: Get My Id
     
    @bot.message_handler(commands=['start'])
    def button(message):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)   
        bt1 = types.KeyboardButton('⏰Записатися на хімчистку')
        bt2 = types.KeyboardButton('Оплатити')
        bt3 = types.KeyboardButton('Розробник')
    
        markup.add(bt1, bt2, bt3)
        bot.send_message(message.chat.id, '<b>Привіт {0.first_name}!</b> <b>Що бажаєш обрати?</b>'.format(message.from_user, bot.get_me( )),
            parse_mode='html', reply_markup=markup)
    
    @bot.message_handler(content_types=['text'])
    def answer(message):
        if message.chat.type == 'private':
            if message.text == '⏰Записатися на хімчистку':
                bot.send_message(message.message_id, "Форма подачі запису: \n 1.Напиши свій ПІБ, і номер телефону для зв'язку.\n(Наш менеджер тобі передзвонить для уточнення інформації)")
            elif message.text == 'Оплатити':
                bot.send_message(message.message_id, 'https://next.privat24.ua/money-transfer/card')
            elif message.text == 'Розробник':
                bot.send_message(message.message_id, 'Liiinkoln')
     
    @bot.message_handler(func=lambda message: True)
    def echo_message(message):
        bot.send_message(chat_id=chat_id, text=message.text)
     
     
    bot.polling()
    Ответ написан
  • Можно ли в телеграм боте создать отдельный чат?

    Keffmen
    @Keffmen
    Изучаю Python , C# , HTML и многое другое
    Оставлю это тут.
    Самое простое это брать у твоих администраторов при регистрации или как то еще, не только имя (message.from_user.first_name) но и логин (message.from_user.username).

    Ну а в дальнейшем если тебе нужно кому-то отправить эту логин для связи то просто отправляешь его через @ и все)
    bot.send_message(message.chat.id, f'Тема:"{sheet["F" + str(i)].value}"\nВопрос:"{sheet["E" + str(i)].value}"\nСпособ ответа:{sheet["G" + str(i)].value}\nTelegram: @{sheet["I" + str(i)].value} \nТел:{sheet["C" + str(i)].value}\n', reply_markup=markup)

    Результат на фото!
    62a7550bec794872518123.png
    У меня это реализована для системы вопрос ответ , если человек задал вопрос и хотел бы что бы ему ответили письменно то ,я сразу записываю его логин при написание вопроса в excel. Ну и после отправляю сотрудникам что есть вопрос и нужно ответить письменно. НО есть одна проблема если пользователь изначально не сделал себе логин (политикой конфиденциальности Telegram и предотвращением злоупотреблений), то ты просто просто просишь его указать его в настройках , других вариантов я не нашел !
    Если есть решение этой проблемы скажите))
    Ответ написан
    Комментировать